NAV
shell

Introduction

Welcome to the Claire Automotive Support Public API !

You can use our API to access Claire API endpoints, which gives information on various sections from our database.

Endpoints description, method, url, request/response shema and their description are presented on the left. The right side contains example requests (via curl) and reponses (in JSON).

For more information on types and possible value, refer to the Models and Enumeration section.

In the future, more endpoints will be added in order to provide complete access to Claire database.

If this is your first time reading the docs, check out the Authentication section for obtaining and using API keys.

Changelog section contains all updates related to this API.

Authentication

To authorize, use this code:

# With shell, you can just pass the correct header with each request
curl "api_endpoint_here"
  -H "Authorization: $your_api_key"

# Alternatively, you can place the api_key as a query parameter:
curl "api_endpoint_here?api_key=$your_api_key"

Make sure to replace your_api_key with your actual API key.

Claire Automotive Support API uses API keys to allow access to the API.. You can register a new API key only as a Dealer Admin, inside Claire application, on the API Keys section.

Currently you can create as many API Keys as you want and give them a name. Once you don't want to use it you can disable it from the dashboard.

Claire API expects the API key to be included in all API requests to the server. There are two ways to include it in requests:

Appointments

This controller provides endpoints to get the appointment details.

PublicAccount can get the appointments by the DMSNr and also get the appointment details by the appointment ID.

Get Appointments by DMS number

curl "API_BASE/v1/appointments?location_id=...&dms_nr=...&customer_kind=..."
    -H "Authorization: $your_api_key"

This endpoint retrieves Appointments by the provided DMS Number. If the DMS number is of customer type, customer_kind query parameter needs to be provided as well.

HTTP Request

GET /v1/appointments?location_id=...&dms_nr=...&customer_kind=...

The request JSON response is:

[
    {
        "created_on": "0001-01-01T00:00:00Z",
        "updated_on": "0001-01-01T00:00:00Z",
        "id": 0,
        "dms_number": "",
        "workorder_number": "",
        "reference_number": "",
        "importer_version": "",
        "dms_status": "",
        "car_check_started": false,
        "customer_waiting": false,
        "is_local": false,
        "is_money": false,
        "is_star": false,
        "is_star_color": "",
        "is_shop": false,
        "is_shop_color": "",
        "is_lease_company": false,
        "has_extra_check": false,
        "final_check_has_remarks": false,
        "is_recurring": false,
        "pin_count": 0,
        "warranty_pin_count": 0,
        "pin_icon_color": "",
        "next_date": null,
        "predicted_next_date": null,
        "time_car_app": "0001-01-01T00:00:00Z",
        "is_pinned": false,
        "is_pinned_manually": false,
        "is_canceled_manually": false,
        "key_dropped_at": null,
        "key_picked_up_at": null,
        "key_picked_up_by_id": null,
        "key_dropped_back_at": null,
        "key_dropped_back_by_id": null,
        "key_dropped_back_in": null,
        "key_picked_up_back_at": null,
        "key_picked_up_back_by_id": null,
        "driver_id": null,
        "owner_id": null,
        "contract_id": null,
        "location_id": 0,
        "car_id": 0,
        "vin": "",
        "car_model": "",
        "car_make": "",
        "license_plate_number": "",
        "current_km": 0,
        "dms_km": 0,
        "next_km": 0,
        "car_apk_date": null,
        "car_hu_date": null,
        "driver_initials": "",
        "driver_title": "",
        "driver_firstname": "",
        "driver_surname": "",
        "contractor_initials": "",
        "contractor_title": "",
        "contractor_firstname": "",
        "contractor_surname": "",
        "owner_initials": "",
        "owner_title": "",
        "owner_firstname": "",
        "owner_surname": "",
        "company": "",
        "appointment_status_identifier": 0,
        "last_update": null,
        "last_user": "",
        "approved_not_fixed_count": 0,
        "customer_driver": null,
        "customer_owner": null,
        "customer_contract": null,
        "check_initiator": null,
        "car": null,
        "car_profile_picture": null,
        "final_check_images": null,
        "final_check_videos": null,
        "status_history": null,
        "interventions": null,
        "customcom_key": null,
        "appointment_status_name": "",
        "checklists": null,
        "dealer_name": "",
        "dealer_commercial_name": "",
        "location_name": "",
        "location_phone": "",
        "driver_dms_number": null,
        "owner_dms_number": null,
        "contract_dms_number": null,
        "car_dms_number": null,
        "dms_location_source": null
    }
]

Request schema

Parameter Type Required Description
location_id DealerLocationID true The DealerLocationID the appointment belongs to. To obtain the list of Locations use the Locations endpoints.
dms_nr string true The DMS number of the appointment or customer.
customer_kind string false Required only if the DMS number is of a customer. Can be one of the following: driver, owner, contractor.

Response schema

This endpoint return an array of Appointment, please refer to the JSON response column on the right, or to the Models and Enumeration section for more details.

Get a Specific Appointment

curl "API_BASE/v1/appointments/{id}"
    -H "Authorization: $your_api_key"

This endpoint retrieves a specific Appointment by the provided Claire Appointment ID.

HTTP Request

GET /v1/appointments/{id}

The request JSON response is:

{
    "created_on": "0001-01-01T00:00:00Z",
    "updated_on": "0001-01-01T00:00:00Z",
    "id": 0,
    "dms_number": "",
    "workorder_number": "",
    "reference_number": "",
    "importer_version": "",
    "dms_status": "",
    "car_check_started": false,
    "customer_waiting": false,
    "is_local": false,
    "is_money": false,
    "is_star": false,
    "is_star_color": "",
    "is_shop": false,
    "is_shop_color": "",
    "is_lease_company": false,
    "has_extra_check": false,
    "final_check_has_remarks": false,
    "is_recurring": false,
    "pin_count": 0,
    "warranty_pin_count": 0,
    "pin_icon_color": "",
    "next_date": null,
    "predicted_next_date": null,
    "time_car_app": "0001-01-01T00:00:00Z",
    "is_pinned": false,
    "is_pinned_manually": false,
    "is_canceled_manually": false,
    "key_dropped_at": null,
    "key_picked_up_at": null,
    "key_picked_up_by_id": null,
    "key_dropped_back_at": null,
    "key_dropped_back_by_id": null,
    "key_dropped_back_in": null,
    "key_picked_up_back_at": null,
    "key_picked_up_back_by_id": null,
    "driver_id": null,
    "owner_id": null,
    "contract_id": null,
    "location_id": 0,
    "car_id": 0,
    "vin": "",
    "car_model": "",
    "car_make": "",
    "license_plate_number": "",
    "current_km": 0,
    "dms_km": 0,
    "next_km": 0,
    "car_apk_date": null,
    "car_hu_date": null,
    "driver_initials": "",
    "driver_title": "",
    "driver_firstname": "",
    "driver_surname": "",
    "contractor_initials": "",
    "contractor_title": "",
    "contractor_firstname": "",
    "contractor_surname": "",
    "owner_initials": "",
    "owner_title": "",
    "owner_firstname": "",
    "owner_surname": "",
    "company": "",
    "appointment_status_identifier": 0,
    "last_update": null,
    "last_user": "",
    "approved_not_fixed_count": 0,
    "customer_driver": null,
    "customer_owner": null,
    "customer_contract": null,
    "check_initiator": null,
    "car": null,
    "car_profile_picture": null,
    "final_check_images": null,
    "final_check_videos": null,
    "status_history": null,
    "interventions": null,
    "customcom_key": null,
    "appointment_status_name": "",
    "checklists": null,
    "dealer_name": "",
    "dealer_commercial_name": "",
    "location_name": "",
    "location_phone": "",
    "driver_dms_number": null,
    "owner_dms_number": null,
    "contract_dms_number": null,
    "car_dms_number": null,
    "dms_location_source": null
}

Request schema

Parameter Type Required Description
id AppointmentID true The ID of the Appointment to retrieve.

Response schema

This endpoint return an object of type Appointment, please refer to the JSON response column on the right, or to the Models and Enumeration section for more details.

Import Appointments

curl "API_BASE/v1/appointments/import"
    -H "Authorization: $your_api_key"

This endpoint enables the creation and updating of appointments within Claire.

The appointment location Identifier must be within the scope of the PublicAccount's Dealer. There can only be one location per import. The location cannot be connected to keyloop. The car parameter is mandatory and should include details like make, model, registration and VIN. At least one customer kind must be provided, typically this is the driver.

This endpoint will import what is valid, even if some appointment(s) are not valid or fail to be imported. Instead, the response always provide two maps, for what succeeded and what failed, with the DMS number as offset. You must process these maps and not only rely on the http 200 code returned.

It's important to note that the DMSNrs are used to identify what actions will be taken to import. If a dms_nr already exists within Claire for the given location, the object will be updated. If a dms_nr does not exist within Claire for the given location, the object will be created. The only exception to this, is when the dms_created_on is provided alongside, this is then treated as a composite unique.

All associated websocket and webhook events will be pushed to users.

HTTP Request

POST /v1/appointments/import

The request Body payload is:

{
    "appointments": null
}

The request JSON response is:

{
    "imported": null,
    "failed": null
}

Request schema

Parameter Type Required Description
Appointments []validation.Appointment true Appointments to be imported

Response schema

This endpoint return an object with the following fields, please refer to the JSON response column on the right for an example.

Parameter Type
Imported map[string]model.AppointmentID
Failed map[string]string

Checks

This controller provides endpoints to retrieve the checks belonging to specific appointment.

To get the checks for a specific appointment, appointment ID needs to be provided.

Get Checks of a Specific Appointment

curl "API_BASE/v1/checks?appointment_id=..."
    -H "Authorization: $your_api_key"

This endpoint retrieves Checks of a specific Appointment by the provided Appointment ID.

HTTP Request

GET /v1/checks?appointment_id=...

The request JSON response is:

[
    {
        "created_on": "0001-01-01T00:00:00Z",
        "updated_on": "0001-01-01T00:00:00Z",
        "id": 0,
        "duration": 0,
        "appointment_id": 0,
        "car_id": 0,
        "intervention_id": null,
        "mechanic": null,
        "checklist": null,
        "receptionist": null,
        "question_items": null
    }
]

Request schema

Parameter Type Required Description
appointment_id AppointmentID true The ID of the Appointment whose checks are to be retrieved.

Response schema

This endpoint return an array of Check, please refer to the JSON response column on the right, or to the Models and Enumeration section for more details.

Locations

This controller provides endpoints to retrieve the locations.

The locations are provided as a list and only those locations are provided which belongs to the dealer ID of the public account.

Get All Locations

curl "API_BASE/v1/locations"
    -H "Authorization: $your_api_key"

This endpoint retrieves all Locations.

HTTP Request

GET /v1/locations

The request JSON response is:

[
    {
        "created_on": "0001-01-01T00:00:00Z",
        "updated_on": "0001-01-01T00:00:00Z",
        "id": 0,
        "NotifierKey": "",
        "dms_location_source": "",
        "name": "",
        "commercial_name": "",
        "headline": "",
        "footerline": "",
        "logo": "",
        "street": "",
        "postal_code": "",
        "city": "",
        "country": "",
        "phone_nr": "",
        "DeskCheckInEnabled": false,
        "IsKeyloopEventEnabled": false,
        "IsShareboxEnabled": false,
        "HasAutoflexPassword": null
    }
]

Request schema

This request does not accept any parameters.

Response schema

This endpoint return an array of DealerLocation, please refer to the JSON response column on the right, or to the Models and Enumeration section for more details.

Tags

This controller provides endpoint to retrieves all the tags.

Get Tags

curl "API_BASE/v1/tags"
    -H "Authorization: $your_api_key"

This endpoint retrieves all the tags.

HTTP Request

GET /v1/tags

The request JSON response is:

[
    {
        "created_on": "0001-01-01T00:00:00Z",
        "updated_on": "0001-01-01T00:00:00Z",
        "id": 0,
        "name": "",
        "color": "",
        "system": false
    }
]

Request schema

This request does not accept any parameters.

Response schema

This endpoint return an array of Tag, please refer to the JSON response column on the right, or to the Models and Enumeration section for more details.

Questions

This controller provides the endpoints to retrieve the question details.

This controller returns all the default questions and also the dealer questions.

Get Questions

curl "API_BASE/v1/questions"
    -H "Authorization: $your_api_key"

This endpoint retrieves all the default questions plus the dealer questions.

HTTP Request

GET /v1/questions

The request JSON response is:

[
    {
        "created_on": "0001-01-01T00:00:00Z",
        "updated_on": "0001-01-01T00:00:00Z",
        "id": 0,
        "question": "",
        "role_id": 0,
        "question_elements": null
    }
]

Request schema

This request does not accept any parameters.

Response schema

This endpoint return an array of Question, please refer to the JSON response column on the right, or to the Models and Enumeration section for more details.

Car

This controller provides endpoints to retrieve the Car details.

The car details is provided based on the VIN of the Car at the dealer locations.

Get a car by VIN

curl "API_BASE/v1/car?vin=..."
    -H "Authorization: $your_api_key"

This endpoint search if a car exists with the given VIN in the dealer locations

HTTP Request

GET /v1/car?vin=...

The request JSON response is:

{
    "created_on": "0001-01-01T00:00:00Z",
    "updated_on": "0001-01-01T00:00:00Z",
    "id": 0,
    "is_truck": false,
    "make": "",
    "model": "",
    "fuel": "",
    "reg_number": "",
    "vin": "",
    "dms_number": "",
    "picture": "",
    "dms_registration": null,
    "rdw_first_registration": null,
    "rdw_first_registration_nl": null,
    "rdw_type_goedkeurings_nummer": "",
    "rdw_type": "",
    "rdw_variant": "",
    "rdw_uitvoering": "",
    "apk_date_dms": null,
    "hu_date_dms": null,
    "warranty_date_start": null,
    "warranty_date_end": null,
    "mcc_status": null,
    "mcc_status_time": null,
    "tyres_on_car": null,
    "tyres_in_storage": null,
    "truck_tyres": null,
    "notes": null
}

Request schema

Parameter Type Required Description
vin string true VIN of the Car

Response schema

This endpoint return an object of type Car, please refer to the JSON response column on the right, or to the Models and Enumeration section for more details.

Webhooks

Webhooks allows to setup up triggers in Claire to be notified whenever a specific change or action has been made, or when something is available.

This feature is useful to fetch new appointment data from our Public API as soon as it has been updated.

There are two ways to create a webhook.

Claire Dashboard

  1. Login to Claire as Dealer Admin (minimum role required to see the webhook page)
  2. In the main menu, choose Webhooks
  3. Click on the plus button in bottom-right corner
  4. Fill in the form accordingly i.e.
    • provide a name to the webhook
    • select Location (optional, if provided will be triggered only for the given location, otherwise it will be triggered for all locations of the selected Dealer)
    • choose the trigger from the drop down
    • provide an url which will be called by the webhook
    • add necessary headers if required

Public API

To use this method, an API key is required, it can be created in the Claire dashboard

1. Login to Claire as Dealer Admin (minimum role required to see the API page) 2. In the main menu, choose Claire API 3. Click on Create API Key and enter the required fields 4. In the list you can now click on Show the API key, for the row that you just created

Contact support if needed to create an API key.

See the Create a webhook section below for more details on how to create a webhook with this API.

Whitelisting

If you have a firewall or if you want to restrict who can call the URLs defined in your webhooks, use the the following IP addresses:

Payload

A json object will be passed as body of the POST request made to your webhooks URLs, with the following fields:

Field Type Optional Description
appointment_id integer No The Claire appointment ID, to be used with endpoints of this API
dealer_id integer No The Claire dealer ID, to be used with endpoints of this API
dealer_location_id integer No The Claire location ID, to be used with endpoints of this API
wo_nr string No The appointment's work order number, taken from the DMS
communication_key string Yes The appointment's customer communication key. Only passed for communication related triggers.
customer_dmsnr string Yes The customer's DMS number, taken from the DMS. Only passed for communication related triggers.
customer_type string Yes The customer type, can be either 'driver', 'owner' or 'contractor'. Only passed for communication related triggers.

Get the list of triggers

curl "API_BASE/v1/webhooks/list_triggers"
    -H "Authorization: $your_api_key"

This endpoint returns the list of all the triggers that can be used to create a webhook

HTTP Request

GET /v1/webhooks/list_triggers

The request JSON response is:

[
    {
        "created_on": "0001-01-01T00:00:00Z",
        "updated_on": "0001-01-01T00:00:00Z",
        "id": 0,
        "name": "",
        "description": ""
    }
]

Request schema

This request does not accept any parameters.

Response schema

This endpoint return an array of WebhookTrigger, please refer to the JSON response column on the right, or to the Models and Enumeration section for more details.

Get the list of existing webhooks

curl "API_BASE/v1/webhooks/list"
    -H "Authorization: $your_api_key"

This endpoint returns the list of webhooks created with the api key used as authentication

HTTP Request

GET /v1/webhooks/list

The request JSON response is:

[
    {
        "created_on": "0001-01-01T00:00:00Z",
        "updated_on": "0001-01-01T00:00:00Z",
        "id": 0,
        "name": "",
        "webhook_trigger_id": 0,
        "dealer_id": 0,
        "dealer_location_id": null,
        "public_account_id": null,
        "user_id": null,
        "url": "",
        "queued": false,
        "active": false,
        "headers": null,
        "public_account": null,
        "user": null,
        "has_recent_error": null
    }
]

Request schema

This request does not accept any parameters.

Response schema

This endpoint return an array of Webhook, please refer to the JSON response column on the right, or to the Models and Enumeration section for more details.

Create a webhook

curl "API_BASE/v1/webhooks/create"
    -H "Authorization: $your_api_key"

This endpoint create a webhook that will call the given URL, every time the given trigger occurs. The URL can be called with optional headers, if given. A JSON object with three fields is passed as POST payload to the URL called - Claire Appointment ID (appointment_id) - Claire DealerLocation ID (dealer_location_id) - WorkOrder Number (wo_nr). You have a limit of webhooks per API key that can be created, contact support if you reach it.

HTTP Request

POST /v1/webhooks/create

The request Body payload is:

{
    "created_on": "0001-01-01T00:00:00Z",
    "updated_on": "0001-01-01T00:00:00Z",
    "id": 0,
    "name": "",
    "webhook_trigger_id": 0,
    "dealer_id": 0,
    "dealer_location_id": null,
    "public_account_id": null,
    "user_id": null,
    "url": "",
    "queued": false,
    "active": false,
    "headers": null,
    "public_account": null,
    "user": null,
    "has_recent_error": null
}

The request JSON response is:

{
    "ID": 0
}

Request schema

Parameter Type Required Description
Webhook Webhook true

Response schema

This endpoint return an object with the following fields, please refer to the JSON response column on the right for an example.

Parameter Type
ID WebhookID

Get a webhook details

curl "API_BASE/v1/webhooks/view?webhook_id=..."
    -H "Authorization: $your_api_key"

This endpoint returns the webhook details, including optional headers if any, for the webhook ID provided

HTTP Request

GET /v1/webhooks/view?webhook_id=...

The request JSON response is:

{
    "created_on": "0001-01-01T00:00:00Z",
    "updated_on": "0001-01-01T00:00:00Z",
    "id": 0,
    "name": "",
    "webhook_trigger_id": 0,
    "dealer_id": 0,
    "dealer_location_id": null,
    "public_account_id": null,
    "user_id": null,
    "url": "",
    "queued": false,
    "active": false,
    "headers": null,
    "public_account": null,
    "user": null,
    "has_recent_error": null
}

Request schema

Parameter Type Required Description
webhook_id WebhookID true The Webhook ID to retrieve details

Response schema

This endpoint return an object of type Webhook, please refer to the JSON response column on the right, or to the Models and Enumeration section for more details.

Update a webhook

curl "API_BASE/v1/webhooks/update"
    -H "Authorization: $your_api_key"

This endpoint updates a webhook that was created with the same API key, for the same dealer, based on the webhook ID given. Headers are replaced, so make sure to provide them if you do not intend to remove them.

HTTP Request

POST /v1/webhooks/update

The request Body payload is:

{
    "created_on": "0001-01-01T00:00:00Z",
    "updated_on": "0001-01-01T00:00:00Z",
    "id": 0,
    "name": "",
    "webhook_trigger_id": 0,
    "dealer_id": 0,
    "dealer_location_id": null,
    "public_account_id": null,
    "user_id": null,
    "url": "",
    "queued": false,
    "active": false,
    "headers": null,
    "public_account": null,
    "user": null,
    "has_recent_error": null
}

The request JSON response is:

This endpoint do not return anything, only the HTTP status code matters.

Request schema

Parameter Type Required Description
Webhook Webhook true

Response schema

This endpoint do not return anything, only the HTTP status code matters.

Delete a webhook

curl "API_BASE/v1/webhooks/delete?webhook_id=..."
    -H "Authorization: $your_api_key"

This endpoint deletes the webhook for the provided webhook ID if it was created with the same API key, for the same dealer.

HTTP Request

POST /v1/webhooks/delete?webhook_id=...

The request JSON response is:

This endpoint do not return anything, only the HTTP status code matters.

Request schema

Parameter Type Required Description
webhook_id WebhookID true The ID of the Webhook to be deleted

Response schema

This endpoint do not return anything, only the HTTP status code matters.

Test a webhook

curl "API_BASE/v1/webhooks/test"
    -H "Authorization: $your_api_key"

This endpoint triggers the webhook for the provided webhook ID if it was created with the same API key, for the same dealer.

HTTP Request

POST /v1/webhooks/test

The request Body payload is:

{
    "WebhookID": 0,
    "CommunicationReceiverID": null,
    "Payload": {
        "WebhookTriggerID": 0,
        "AppointmentID": 0,
        "DealerID": 0,
        "DealerLocationID": 0,
        "WONr": "",
        "CommunicationKey": null,
        "CustomerDMSNr": null,
        "CustomerType": null,
        "ReceptionistName": null,
        "ReceptionistPhone": null,
        "ReceptionistProfilePictureURL": null,
        "CustomerRemarks": null,
        "CorrectPhone": null,
        "CorrectEmail": null,
        "CustomerName": null,
        "LocationVAT": null,
        "ScheduledInterventions": null,
        "CustomerOrder": null,
        "CustomerContactItems": null,
        "DMSLocationSource": "",
        "IsShop": null,
        "IsShopColor": null
    }
}

The request JSON response is:

This endpoint do not return anything, only the HTTP status code matters.

Request schema

Parameter Type Required Description
Message webhook.Message true

Response schema

This endpoint do not return anything, only the HTTP status code matters.

List webhook errors

curl "API_BASE/v1/webhooks/list_errors"
    -H "Authorization: $your_api_key"

This endpoint returns a paginated list of errors that have occurred for a webhook. It is limited to the past 3 months.

HTTP Request

POST /v1/webhooks/list_errors

The request Body payload is:

{
    "WebhookID": 0,
    "Page": 0
}

The request JSON response is:

{
    "items": null,
    "nb_pages": 0
}

Request schema

Parameter Type Required Description
webhook_id WebhookID true The Webhook ID to retrieve list of errors
page int true Page number for the list

Response schema

This endpoint return an object with the following fields, please refer to the JSON response column on the right for an example.

Parameter Type
Items []model.WebhookError
NbPages int

Models and Enumeration

CommunicationChannelID Enumeration

Value Description
1 Email
2 SMS
3 Webhook, used when a third party send the communication link

MCCStatus Enumeration

Value Description
0 Brand not supported
1 No card
2 Invalid card
3 Invalid card bis
4 Expired card

QuestionElementTemplate Enumeration

Value Description
dropdown Dropdown
dropdown_multi Multiple selection dropdown
solution_element Solution element
textfield Text field
number Number field
textarea Textarea
spinner Spinner
datepicker Date picker
tyre Tyre element

QuestionResultStatus Enumeration

Value Description
0 OK
1 OK with remarks
2 Advised
3 Necessary
4 Not worked on

RoleID Enumeration

Value Description
10 Top level user role (has all permissions)
20 Claire admin role
25 Support adminole role, similar to claire admin but without deleting rights
30 Manage dealers attached to it
40 Manage a single dealer
50 Uses the dashboard and does aanname checks
60 Does car checks
70 Allowed to use multiple locations for one dealer
80 Does quality controls
90 Perform leads, recall and warranty related tasks on allowed locations from one or more dealers
100 User by tablet on the counter of receptionists
110 Manufacturer are allowed to update certain data after their requests to access specific appointments are being granted

Season Enumeration

Value Description
-1 No season
0 All season
1 Winter season
2 Summer season
3 Truck season

SnoozeDepartmentID Enumeration

Value Description
1 Sales
2 Customer communication center
3 BodyRepair
4 External
5 Digital
6 Parts

SnoozeStatusID Enumeration

Value Description
0 Deleted
1 New
2 In progress
3 Approved
4 Declined
5 Declined
6 Done

SnoozeTypeID Enumeration

Value Description
1 Snoozed for the customer next visit
2 Snoozed to make an offer
3 Snoozed to make a new appointment
4 Snoozed to remind the customer

StatusIdentifier Enumeration

Value Description
-1 The appointment has been cancelled
1 Initial status for a new appoitment
2 A car check is completed
3 Pricing calculation is done
4 Customer approved pricing
5 The car is ready
6 An car check is required, set by a receptionist
7 Initial check done by a receptionist
8 Receptionists are doing pricing calculations
9 The customer is being contacted to approve pricing
10 A car check has started
11 A quality check is completed
12 The customer answered through online communication
19 The appointment is delayed and is waiting on a back order
50 Not returned by the backend, shown if the receptionist need to handle the Online Check-in answer
51 Not returned by the backend, shown if the Online Check-in is answered and handled
52 Not returned by the backend, shown if the car is in the shop
53 Not returned by the backend, shown if repair overview was sent to customer for car ok status
54 Not returned by the backend, shown if repair overview was sent to customer for quality check status
55 Not returned by the backend, shown if the car is out of the shop

TyreLocation Enumeration

Value Description
1 On car
2 In storage
3 Removed, from car
4 Removed, from storage

TyrePosition Enumeration

Value Description
0 No tyre
1 Car front left
2 Car front right
3 Car rear left
4 Car rear right
5 Storage front left
6 Storage front right
7 Storage rear left
8 Storage rear right
9 Car spare
10 Truck left
11 Truck right
12 Truck exterior left
13 Truck exterior right
14 Truck interior left
15 Truck interior right
16 Truck spare

WebhookTriggerID Enumeration

Value Description
1 Check created
2 Offer ready
3 Customer OK
4 Car ready
5 Quality check
6 Online check-in is available
7 Online check-in is answered
8 Diagnose overview is available
9 Diagnose overview update is available
10 Diagnose overview is answered
11 Repair overview is available
12 Repair overview update is available
13 Car In Shop
14 Car Out of Shop
15 Online check-in was opened by the customer
16 Diagnose overview was opened by the customer
17 Repair overview was opened by the customer
18 Is_Shop Changed

Appointment Model

Field Type Description
ID AppointmentID Appointment's ID
DMSNr string Appointment ID in the DMS
WONr string Appointment work order number
RefNr string Appointment reference number in Claire
ImporterVersion string Version of Claire importer used to import Appointment from DMS
DMSStatus string Appointment status in DMS
CarCheckStarted bool Car check has started
CustomerWaiting bool The customer is waiting for the car
IsLocal bool This appointment was created manually in Claire
IsMoney bool A receptionist marked this appointment with the money marker
IsStar bool A receptionist marked this appointment with the star marker
IsStarColor string Color for the star icon
IsShop bool A receptionist marked this appointment with the shop marker
IsShopColor string Color for the shopping cart icon
IsLeaseCompany bool The appointment’s car belongs to a lease company
HasExtraCheck bool An extra check was performed
FinalCheckHasRemarks bool Final check has remarks
IsRecurring bool This car came in the last 28 days
PinCount int Number of pinned items on the appointment
WarrantyPinCount int Number of pinned items on the appointment of type warranty
PinIconColor string Color of the pin icon on appointments main list
NextDate time.Time Planned next appointment date
PredictedNextDate time.Time Predicted next appointment date
TimeCarApp time.Time Appointment date in Claire
IsPinned bool Is the appointment pinned
IsPinnedManually bool The appointment was pinned manually, preventing automatic overwriting
IsCanceledManually bool The appointment was canceled manually, preventing automatic overwriting
KeyDroppedAt time.Time Date and time the customer dropped the key in the keylocker
KeyPickedUpAt time.Time Date and time the mechanic picked up the key in the keylocker
KeyPickedUpByID UserID User ID of the mechanic who picked up the key
KeyDroppedBackAt time.Time Date and time the mechanic dropped back the key in the keylocker
KeyDroppedBackByID UserID User ID of the mechanic who dropped back the key
KeyDroppedBackIn string Name of the keylocker in which key is dropped back in
KeyPickedUpBackAt time.Time Date and time the customer picked back up the key in the keylocker
KeyPickedUpBackByID UserID User ID of the receptionist who picked back up the key if they intervened
CustomerDriverID CustomerID Customer (driver) ID in Claire
CustomerOwnerID CustomerID Customer (owner) ID in Claire
CustomerContractID CustomerID Customer (contractor) ID in Claire
DealerLocationID DealerLocationID Unique DealerLocation ID of the location that the appointment occurred in
CarID CarID Unique ID of the Car assigned to appointment
VIN string Vehicle Identification Number
CarModel string Car Model
CarMake string Car Make
RegNumber string License plate number
CurrentKM int Current odometer status
DMSKM int Odometer reading from the DMS
NextKM int Planned next appointment in kilometers on the odometer
CarAPKDate time.Time Dutch technical inspection DMS date
CarHUDate time.Time German technical inspection DMS date
DriverInitials string Driver initials
DriverTitle string Driver Title (e.g. Dhr. Mvr.,)
DriverFirstname string Driver's first name
DriverSurname string Driver's last name
ContractorInitials string Contractor's initials
ContractorTitle string Contractor's Title (e.g. Dhr. Mvr.,)
ContractorFirstname string Contractor's first name
ContractorSurname string Contractor's last name
OwnerInitials string Owner's initials
OwnerTitle string Owner's Title (e.g. Dhr. Mvr.,)
OwnerFirstname string Owner's first name
OwnerSurname string Owner's last name
Company string Contractor's company name
AppointmentStatusIdentifier StatusIdentifier Current appointment's status identifier in Claire
LastTimestamp time.Time Last time this appointment was updated
LastUser string Name of the last user that interacted with the appointment
NumApprovedItemsNotFixed int Number of items waiting to be fixed on the appointment
CustomerDriver Customer Customer (Driver) in Claire
CustomerOwner Customer Customer (Owner) in Claire
CustomerContract Customer Customer (Contract) in Claire
CheckInitiator User User that initiated check
Car Car Car object, refer to that model for more details
CarProfilePicture string Car profile picture URL
FinalCheckImages FinalCheckImage Image added during the final check
FinalCheckVideos FinalCheckVideo Video added during the final check
StatusHistory AppointmentStatusHistory History of statuses
Interventions Intervention List of initial interventions
CustomcomReceptionistKey string
AppointmentStatusName string Current appointment's status name
ChecklistNames string List of the checklist's names performed
DealerName string
DealerCommercialName string
LocationName string
LocationPhone string
DriverDMSNr string Driver ID in the DMS
OwnerDMSNr string Owner ID in the DMS
ContractDMSNr string Contractor ID in the DMS
CarDMSNr string Car ID in the DMS
DMSLocationSource string DMS Source for the location

AppointmentStatusHistory Model

Field Type Description
ID AppointmentStatusHistoryID Claire Appointment Status History ID
SARemarks string Remark when the status was set
Timestamp time.Time Date and time when the status was set
ChecklistID ChecklistID Claire's Checklist ID
CheckID CheckID Claire's Check ID'
Identifier StatusIdentifier Status identifier, refer to that enumeration for more details
StatusName string Name of the status (deprecated, use Identifier)

Car Model

Field Type Description
ID CarID Claire Car ID
IsTruck bool True if its a truck
Make string Car make
Model string Car model
Fuel string Fuel type
RegNr string Registration plate
VIN string Vehicle identification number
DMSNr string Car ID in the DMS
ProfilePicture string Car picture URL
DMSRegistration time.Time DMS registration date
RDWFirstRegistration time.Time First registration date
RDWFirstRegistrationNL time.Time First NL registration date
RDWTypeGoedkeuringsNummer string RDW type goedkeurings nummer
RDWType string RDW type
RDWVariant string RDW variant
RDWUitvoering string RDW uitvoering
APKDateDMS time.Time Dutch technical inspection DMS date
HUDateDMS time.Time German technical inspection DMS date
WarrantyDateStart time.Time Warranty start date
WarrantyDateEnd time.Time Warranty end date
MCCStatus MCCStatus Car status in MCC, refer to that enumeration for more details.
MCCStatusTime time.Time Last status fetch date from MCC
TyreOnCar CarTyres CarTyres object for the tyres on the car, see that model for more details.
TyreInStorage CarTyres CarTyres object for the tyres in storage, see that model for more details.
TruckTyres TruckTyres TruckTyres object for the tyres of truck
Notes CarNote Notes on the car created in claire

CarNote Model

Field Type Description

CarTyres Model

Field Type Description
ID CarTyresID Claire CarTyres ID
FRProfile float64 Front right tyre tread depth
FLProfile float64 Front left tyre tread depth
RRProfile float64 Rear right tyre tread depth
RLProfile float64 Rear left tyre tread depth
FRPicture string Front right tyre picture URL
FLPicture string Front left tyre picture URL
RRPicture string Rear right tyre picture URL
RLPicture string Rear left tyre picture URL
Location TyreLocation Where the tyres are location, refer to that enumeration for more details
FrontLeftTyre Tyre Tyre object for the front left tyre, refer to that model for more details
FrontRightTyre Tyre Tyre object for the front right tyre, refer to that model for more details
RearLeftTyre Tyre Tyre object for the rear left tyre, refer to that model for more details
RearRightTyre Tyre Tyre object for the rear right tyre, refer to that model for more details

Check Model

Field Type Description
ID CheckID Claire Check ID
Duration int Check duration in seconds
AppointmentID AppointmentID Claire appointment ID
CarID CarID
InterventionID InterventionID If provided, link the intervention for which this car check was done
Mechanic User User object of the mechanic who performed the check, refer to that model for more detail
Checklist Checklist Checklist object for this check, refer to that model for more details
Receptionist User User object of the receptionist assigned to this check, refer to that model for more detail
QuestionResults QuestionResult Array of QuestionResult object, containing the result of this check, refer to that model for more detail

Checklist Model

Field Type Description
ID ChecklistID Claire Checklist ID
Name string Name of the checklist
TagNames string List of tags associated with this checklist

Customer Model

Field Type Description
ID CustomerID Customer's ID
MetaDMSNr string Some DMS can have multiple contacts for a single customer. This field, alongside dms_nr, help to identify which contact should be referenced
DMSNr string Identifier in DMS
Company string Company name
IsLeaseCompany bool Is the company a lease company
IsInternal bool Is this customer for Internal usage
IsInternalEdited bool IsInternal was edited through Claire
Passant bool Is the customer a walk-in without appointment
Gender int Gender of the customer
Title string Salutation title of the customer
Initials string Initials of the customer
FirstName string First Name of the customer
Surname string Surname of the customer
Street string Street address of the customer
HouseNr string House Number of the customer
Postcode string Postcode of the customer
Place string Place of the customer
Country string Country of the customer
BlockCommunication bool Customer has opted for no communication
PreferredCommunicationChannel CommunicationChannelID Preferred communication channel opted by the customer
EmailPrivate string Private Email
EmailBusiness string Business Email
TelBusinessNr string Business Landline Number
TelPrivateNr string Private Landline Number
TelMobilePrivate string Private Mobile Number
TelMobileBusiness string Business Mobile Number
Birthday time.Time Birthday of the customer
DealerLocationID DealerLocationID Location Identifier of the customer
DealerID DealerID Dealer ID of the customer

DealerLocation Model

Field Type Description
ID DealerLocationID Claire dealer location ID
DMSLocationSource string DMS Datasource for the location
Name string Name
CommercialName string Commercial name of the Claire Dealer Location
Headline string Headline
Footerline string Footerline
Logo string Logo URL
Street string Street
PostalCode string Postal code
City string City
Country string Country
PhoneNr string Phone number

FinalCheckImage Model

Field Type Description
ID FinalCheckImageID Claire Final Check Image ID
URL string URL of the image
Active bool Wheter the image is active
VisibleInPDF bool Wheter the image is displayed in the PDF
InterventionIndex int Index of the image for the intervention

FinalCheckVideo Model

Field Type Description
ID FinalCheckVideoID Claire Final Check Video ID
URL string URL of the Video
Active bool Wheter the video is active
InterventionIndex int Index of the video for the intervention

Intervention Model

Field Type Description
ID InterventionID Claire Intervention ID
DMSNr string Intervention ID in the DMS
Title string Intervention title
Description string Intervention description
Price float64 Cost of intervention in integer format (divide by 100 to get a float)
MechanicNotes string Mechanic's notes
Pinned bool Whether the intervention is pinned in Claire
Snoozed bool Whether the intervention is snoozed in Claire
IsDeclinedByCustomer bool Whether the customer declined the intervention in Claire
Status int Intervention status
SolutionValue string
SolutionUnit string
SolutionType string
MechanicFixed bool Was the intervention fixed by a Mechanic
CustomerOK bool Customer has agreed to the intervention
IsLocal bool Intervention was created manually in Claire
VisibleInPDF bool Intervention is visible to the Customer
SnoozeHistory Snooze

PublicAccount Model

Field Type Description

Question Model

Field Type Description
ID QuestionID Claire Question ID
Title string Title of the question
RoleID RoleID NULL if it is a default question available to all, otherwise the role ID of the user who created this question (meaning it is only visible to that Dealer's locations)
QuestionElements QuestionElement List of question element in this question

QuestionElement Model

Field Type Description
ID QuestionElementID Claire Question Element ID
Name string Name of the question element
Template QuestionElementTemplate Template of the question element, define what type of answer will be provided, refer to that enumeration for more details
DefaultConfiguration string Default configuration, depending on the template can contain prefilled values or labels
RoleID RoleID NULL if it is a default question element available to all, otherwise the role ID of the user who created this question element (meaning it is only visible to that Dealer's locations)

QuestionResult Model

Field Type Description
ID QuestionResultID Claire Question Result ID
Status QuestionResultStatus Item's status, refer to that enumeration for more details
Title string Question's title
Completed bool Question's completion
MechanicNotes string Mechanic note
MechanicFixed bool Wheter the mechanic fix this item
CustomerApproved bool Wheter the customer approved to fix this item
Price float64 Cost for this item
TyrePosition TyrePosition 0 if TyreID is null
TyreProfile float64 0 if TyreID is null
TruckAxle int Non-zero value for Truck Question Result Element
Solution string Answer if the question template is of type solution
SolutionValue string Value selected if the question template if of type solution
SolutionType string Type selected if the question template if of type solution
SolutionUnit string Unit selected if the question template if of type solution
Snoozed bool Wheter the item is snoozed
Pinned bool Wheter the item is pinned
TyreID TyreID null if not a tyre question
TimeCarApp time.Time Appointment date in Claire
Tyre Tyre joined if TyreID is not null
TyreReplacements TyreReplacement joined if any
QuestionTags Tag Array of Tag objects associated to this question, refer to that model for more details
ImageURLs string Array of image URL taken for this item
VideoURLs string Array of video URL taken for this item
AnswerItemNames string List of raw question's element's answers
SnoozeHistory Snooze Each row represent a log line, showing what changed over time

Snooze Model

Field Type Description
ID SnoozeID Snooze ID in Claire, each snooze ID represent a snooze log line
QuestionResultID QuestionResultID ID of the question result snoozes, null if an intervention is snoozed
InterventionID InterventionID Intervention ID of the intervention snoozed, null if a question result is snoozed
SnoozeTypeID SnoozeTypeID Type of snooze, see enumeration
SnoozeStatusID SnoozeStatusID Status of the snooze, see enumeration
SnoozeDate time.Time Date selected when snoozed
SnoozeDepartmentID SnoozeDepartmentID Department assigned, see enumeration
Note string Note entered when snoozed
UserID UserID ID of the user adding the snooze log line
AppointmentID AppointmentID Appointment ID for this snooze
DealerLocationID DealerLocationID Dealer Location ID for this snooze
CarID CarID Car ID for this snooze

Tag Model

Field Type Description
ID TagID Claire Tag ID
Name string Name of the tag
Color string Color of the tag
System bool Wheter it is a system tag

TruckTyres Model

Field Type Description
CarID CarID
Axle int
Position TyrePosition
TyreID TyreID
Profile float64
Picture string
Tyre Tyre

Tyre Model

Field Type Description
ID TyreID Claire Tyre ID
Manufacturer string Tyre manufacturer
Description string Tyre description
Width int Tyre width
Height int Tyre height
Size float32 Tyre size
Speed string Tyre speed factor
EAN string Tyre unique ID (EAN)
Season Season Tyre season, refer to that enumeration for more details
Deleted bool Whether the tyre is deleted
CreatedByID UserID For manually created tyres, User ID of the creator, nil otherwise
CreatedBy User created by user

TyreReplacement Model

Field Type Description
ID TyreReplacementID Claire Tyre Replacement ID
QuestionResultID QuestionResultID Claire Question Result ID
TyreID TyreID Claire Tyre ID
Price float64 Price of this replacement tyre
CustomerAnswer bool Whether the mechanic can mount this replacement on the car or not
Remark string Remarks from the receptionist or mechanic
MechanicFixed bool Whether the mechanic has mounted this replacement on the car or not
Selected bool Whether this replacement was selected by the customer to be mounted on the car or not
Profile float64 Tyre tread profile entered by the mechanic after it was mounted on the car
Tyre Tyre Tyre details for this replacement

User Model

Field Type Description
ID UserID Claire User ID
DMSNr string DMS Number of the Claire User
FirstName string First name
LastName string Last name
Email string Email in Claire
Username string Username in Claire
Mobile string Mobile phone numer
Phone string Phone numer
Birthday time.Time Birthdate
LastActive time.Time Last activity date in Claire
Address1 string Address line 1
Address2 string Address line 2
ProfilePicture string Profile picture URL
DealerLocationID DealerLocationID Default Location ID when loggin in
Active bool Whether user's account is active
Deleted bool Wheter user's account is deleted
Archived bool Wheter user's account is archived

Webhook Model

Field Type Description
ID WebhookID
Name string Name of the webhook
WebhookTriggerID WebhookTriggerID TriggerID for the webhook, see the list of triggers in the enumeration section
DealerID DealerID Dealer Identifier that created this Webhook
DealerLocationID DealerLocationID Location identifier
PublicAccountID PublicAccountID Public Account that created this Webhook
UserID UserID User that created this Webhook
URL string URL to be called by the webhook
Queued bool This Webhook should be sent synchronously in a queue to the URL
Active bool Whether webhook is active
Headers WebhookHeader webhook headers
PublicAccount PublicAccount
User User
HasRecentError bool

WebhookError Model

Field Type Description
ID WebhookErrorID
WebhookID WebhookID Webhook Identifier
Reason string Reason for the error in webhook

WebhookHeader Model

Field Type Description
ID WebhookHeaderID
Name string
Value string
WebhookID WebhookID
Webhook Webhook

WebhookTrigger Model

Field Type Description
ID WebhookTriggerID
Name string
Description string

Changelog

This section contains changes related to the Claire API. Changes will be included if:

Initial release - 01.02.2019.

The following endpoints are included with initial release:

Model updates - 05.06.2019.

Various models were updated. Most notable change is that id changed from string to integer.

Multiple updates - 02.12.2019.

Following changes have been made:

1 On the /checks endpoint, inside question_items object, field answer instead of single answer, answer now contains multiple answers. The field is now of type array and renamed to answers. 2 Second change on the /checks endpoint is the snooze_info object, inside question_items object. Instead of a single object with fields title, note, type, these are all now separate fields, as following: snooze_title, snooze_note, snooze_type. 3 Following fields are depracated: Appointment object: car_fleet_number User object: last_login Car object: fleet_number, fleet_identifier Intervention object: section

Webhooks - 01.03.2021.

Webhooks allows you to setup triggers in Claire which can be used to notify you when a change is made on appointment. This feature is useful if you want to fetch new appointment data from PublicAPI as soon as it's updated.

To setup the webhooks follow this process:

1 Login to Claire 2 Click on "Webhooks" menu 3 Click on a "plus" button in bottom-right corner 4 Fill the form accordingly

Currently we support these triggers:

Automated Documentation - 01.04.2021

This documentation is now auto generated, a lot more details are available in each endpoint description and in the new Model and Enumeration section.

Two new endpoints /tags and questions have been added to retrieve the list of possible values related to question result's tags and questions.

Tyres information have been added at the Car and QuestionResult levels.

Import Appointment - 14.08.2023

New endpoint /appointments/import has been added to create and update appointments in claire. Refer to the relevant documentation for more details on how to use this.

Customer communication

If a communication was sent to the customer (Online check-in, Diagnose overview, Repair overview) the Appointment contain a key in the customcom_key field.

This key is valid to open the communication in read only mode, as the receptionist do.

To open a communication from a key, use the following URL: https://mycarcheck.pro/#!/{customcom_key} by replacing the key value.

Errors

The Claire Automotive Support API uses the following error codes:

Error Code Meaning
400 Bad Request : Your request is invalid.
401 Unauthorized : Your API key is wrong.
404 Not Found : The specified endpoint could not be found.
405 Method Not Allowed : You tried to access server with an invalid method.
429 Too Many Requests : You're making too many requests.
500 Internal Server Error : We had a problem with our server. Try again later.
503 Service Unavailable : We're temporarily offline for maintenance. Please try again later.

Rate Limiting

All Claire APIs have rate limiting implemented. A single API key can make up to 10.800 requests per hour. After reaching the rate limit, HTTP Status 429 - Too Many Requests, will be returned.

Response headers contain rate-limiting details:

Currently there is no rate limiting per dealer, but it may be introduced in future updates.