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.

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

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.

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,
        "_": 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.

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

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.

Models and Enumeration

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

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
DMSNr string Appointment Identifier in the DMS
DMSCreatedAt time.Time Time the appointment was created in the DMS. This needs to match exactly to the DMS so that Claire is able to identify the correct appointment
WONr string Appointment workorder number
TimeCarApp time.Time Appointment date
DealerLocationID DealerLocationID DealerLocation Identifier to import the appointment into
ImporterVersion string Version of the importer used to import Appointment from DMS
CustomerWaiting bool The customer is waiting for the car
IsMoney bool Mark this appointment with the money marker
IsStar bool Mark this appointment with the star marker
IsShop bool Mark this appointment with the shop marker
IsLeaseCompany bool The appointment’s car belongs to a lease company
NextDate time.Time Planned next appointment date
CustomerDriver validation.Customer Customer (Driver) in Claire
CustomerOwner validation.Customer Customer (Owner) in Claire
CustomerContract validation.Customer Customer (Contract) in Claire
Car validation.Car Car object, refer to that model for more details
Interventions validation.Intervention List of interventions

Car Model

Field Type Description
DMSNr string Car Identifier in the DMS
Make string Car make
APKDateDMS time.Time Algemene Periodieke Keuring (APK) which is the date of a Technical inspection
Model string Car model
RegNr string Registration plate
VIN string Vehicle Identification Number (VIN)
Fuel string Fuel type
EngineNr string Engine Number
DMSRegistration time.Time DMS registration date
WarrantyDateStart time.Time Warranty start date
WarrantyDateEnd time.Time Warranty end date

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
DMSNr string Customer Identifier in the DMS
Surname string Surname of the customer
Company string Company name
IsLeaseCompany bool Is the company a lease company
Title string Salutation title of the customer
FirstName string First Name 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
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

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
IsKioskEnabled bool Kiosks are enabled

Intervention Model

Field Type Description
DMSNr string Intervention ID in the DMS
Title string Intervention title
Description string Intervention description
Price float64 Cost of intervention
CustomerOK bool Customer has agreed to the intervention
VisibleInPDF bool Intervention is visible to the Customer

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

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.