Amman Car Service · خدمات عمان للسياراتالعربية

Request a visit for a customer.

Only submit when the customer has authorized sending their contact and car details to Amman Car Services.

  1. Read service and booking information.
  2. Get a request token and UUID from /api/session.
  3. POST JSON to /api/appointment-requests using the schema below, or use the ordinary form.
  4. Keep the same request ID and payload on retries. Do not resubmit after an uncertain-delivery response. Ask the customer to contact the workshop.

A successful response means an email request, not a confirmed booking. No price, calendar slot or repair is approved. The workshop replies manually.

This interface is for browser agents and configurable API clients. It does not imply native support or endorsement by any agent platform.

Request schema

{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "requestToken",
    "requestId",
    "name",
    "phone",
    "car",
    "service",
    "submittedBy",
    "consent"
  ],
  "properties": {
    "requestToken": {
      "type": "string",
      "description": "Use the token from GET /api/session. Expires after 30 minutes."
    },
    "requestId": {
      "type": "string",
      "format": "uuid",
      "description": "Use the UUID from GET /api/session. Reuse the same value when retrying the same request."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "phone": {
      "type": "string",
      "maxLength": 25
    },
    "email": {
      "type": "string",
      "maxLength": 254
    },
    "car": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "service": {
      "type": "string",
      "enum": [
        "maintenance",
        "diagnostics",
        "engine",
        "brakes",
        "suspension",
        "cooling",
        "transmission",
        "inspection",
        "other"
      ]
    },
    "date": {
      "type": "string",
      "description": "Optional YYYY-MM-DD, within 90 days, not Friday. Preference only."
    },
    "session": {
      "type": "string",
      "enum": [
        "any",
        "morning",
        "afternoon"
      ]
    },
    "notes": {
      "type": "string",
      "maxLength": 1500
    },
    "language": {
      "type": "string",
      "enum": [
        "en",
        "ar"
      ]
    },
    "submittedBy": {
      "type": "string",
      "enum": [
        "customer",
        "agent"
      ]
    },
    "consent": {
      "type": "boolean",
      "const": true,
      "description": "Only true after the customer authorized sharing these details with the workshop. Never infer consent from this schema."
    }
  }
}

Responses

202: request accepted by the mail server (preview: no email). 400: fix input. 403: refresh token or correct origin. 409: the request ID was reused with different details. 429: request limit reached. 503: unavailable or uncertain delivery; do not blindly resend.