Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Note

Confidential – By no means does Car-Pass authorize the reader to internal use the present information. The information contained in the present proposal may not be disclosed to any other people or organization without prior authorization of Car-Pass. This information cannot be sold or given for commercial purpose.

Table of Contents

Table of Contents

Context and Objectives

 Car-Pass is the nonprofit organization created by FEBIAC (Belgian federation of the Car and Two-wheeler Industries), thecompanies in charge of the technical inspection and Traxio (Federation of car vendors, car service professionals as well as linked sectors), charged by the legislator with a task of public interest i.e. to protect buyers and to promote the fair trade in used vehicles by combating fraud with the odometer.

...

Info

Do note that our maintenance window for ‘production’ is Thursday 19h – 24h (CET)

Definitions

Term

Description

VIN

Vehicle Identification Number. The unique number for the identification of a vehicle

Odometer Reading

The value of the Odometer as displayed on the dashboard (the total trip).

Enterprise Organisation (legally responsible)  

The enterprise identified by a KBO/BCE number (or VAT number) in the format of 10 digits including leading zero’s eg 04xxxxxxx1

Entered Organisation

The establishment is the entity that has received an activation letter with activation code to activate the Car-Pass account. This is the physical location where repairs and maintenance are done on the vehicle. The entered Organisation is identified by its establishment number from KBO/BCE number. 10 digits, eg 2xxxxxxxx1

Security

Security is basic authentication with the establishment number of the garage as username, for testing purposes other accounts can be set-up. Most frameworks and tools support the creation of a basic authentication header based on username and password.

Info

 If you do this manually, which is not recommended :

Basic Authentication header

The Authorization header is constructed as follows:

  1. Username and password are combined into a string "username:password"

  2. The resulting string is then encoded using the RFC2045-MIME variant of Base64, except not limited to 76 char/line

  3. The authorization method and a space i.e. "Basic " is then put before the encoded string.

...

The web service can only be accessed with a username and password. These credentials must always be provided while making a request to Car-Pass.

 

TLS versions

 Only TLSv1.2 and TLSv1.3 is supported

Ciphers

ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:

ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:

ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:

DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384

Technical documentation

Base api urls

 

Formats

Date

Dates are formatted yyyy-mm-dd

Languages

Supported languages are NL, FR, DE. EN only for the Vehicle History Report pdf

 

 

Services

Workflow

Important to know is that processing of requests happens asynchronously. You will make a request to submit data, you will receive a guid that you'll need to store and use in the following requests. The below requests contain more information on how and when to use these.

...

If the status is ISSUE, further action is needed either POST observation{requestguid}/correction or POST observation{requestguid}/confirm

 

...

Status of the request

Ongoing

ONGOING means the Car-Pass system is still gathering data and validating the registration.

...

This will limit the load for your and the Car-Pass system

 

Reviewing & Rejected

The REVIEWING status can be triggered through

...

If the data is accepted, the status will be PROCESSED, no further action needed. If the data was not accepted the status will be REJECTED. In both cases the user has received feedback on the email address known at Car-Pass. In case of rejected, the original submitted data can still have an open issue and a correction can be tried again

 

Waiting For DIV

This is only relevant when submitting data based on a license plate. When submitting a license plate Car-Pass will check this plate with DIV. If DIV is not available the validation of the submitted data can not happen, in this case the status is temporarily set as WAITING_FOR_DIV. Car-Pass will automatically retry this data when DIV is available again, afterwards the final status of this registration becomes available which can be PROCESSED or ISSUE if there was something wrong. (See status and correction operations)

Note

As such, when encountering this status, do not keep repeating status calls but schedule this for example try again in 6 hours or the next day.

 

Operations

 

POST /observation

  • Take note of the odometer reading on the dashboard: this operation is performed by a staff member in the workshop and for obvious reasons requires the presence of the vehicle.

  • Car-Pass expects to receive the exact odometer reader indicated on the dashboard, no approximate values or rounded numbers.

  • Workshops have to send the data they hold to Car-Pass immediately, when the vehicle is still in the workshop.

  • Car-Pass doesn’t accept that the same user sends an odometer for the same vehicle twice with the same  odometerReadingDate. The second reading will generate an error and will be rejected.

Header Input

Field

Type

Mandatory

Description

client-software-builder

String

N

Name of the company that is reponsible for the build of the software communicating with the Car-Pass API

client-software-name

String

N

The name of the software communicating with the Car-Pass API

client-software-version

String

N

The version of the software communicating with the Car-Pass API

Body Input

Field

Type

Mandatory

Description

Vin

String, max 17

N

Either vin or licensePlate must be provided. Both are not accepted together.

licensePlate

String, max 9

N

Either vin or licensePlate must be provided. Both are not accepted together. licensePlate cannot be used with observationType VEHICLE_HISTORY_DOCUMENT

Unifier

Integer

N

The DIV unifier, used to identify vins shorter than 17 characters

firstUseDate

Date

N

The firstUseDate of the Vehicle, used to identify vin’s shorter than 17 characters

odometerReadingDate

Date

Y

The date the odometer was read (we expect this information on the day it was read, so most of the time should be equal to the current date)

odometerReading

Integer

Y

The exact reading as read from the dashboard

observationType

Enum

Y

●      REPAIR_MAINTENANCE_SERVICE: a normal registration, to be used in most situations

●      ODOMETER_REPLACED: indicate that the odometer counter has been replaced during the work

●      VEHICLE_HISTORY_DOCUMENT: a registration that request a vehicle history document to be generated

enterpriseOrganisation

String

Y

The enterprise number of the enteredOrganisation

enteredOrganisation

String

Y

The KBO number of the establishment where odometer was read

 Response

Field

Type

Description

requestGuid

String (UUID)

This is  unique identifier that you’ll use to follow up your request

Refer to https://car-pass.atlassian.net/wiki/spaces/CarPassInflow/pages/7307265/Car-Pass+Inflow+Specification#GET-observation/{requestGuid}/status

GET observation/{requestGuid}/status

Usage: based on the request guid in the response of POST /observation or POST /observation{requestGuid}/correct retrieve the status to verify if data has been loaded or further action is needed

Input

  • The requestGuid from the POST as URL path parameter

Output

Field

Type

Description

Status

ENUM

  • PROCESSED: the observation has been successfully registered, no further action needed

  • ISSUE: Car-Pass notices a data issue, explanation in the linked issue, a Correction or Confirm action is needed

  • ERROR: the provided data was not able to be saved in the database, no further action is needed for this request

  • ONGOING: The provided observation is still being validated by the Car-Pass system

  • REVIEWING: The provided observation will be manually validated by a Car-Pass employee

  • REJECTED: the provided data could not be accepted after manual review

  • WAITING_FOR_DIV: the registration was done based on licensePlate and we're waiting feedback from the DIV to match the licensePlate

Issues

List

Will be filled in with issues that require attention by the user

Issue.type

String

A unique key for the type of issue

Issue.description

Object

Placeholder object for translations. The description explains the data issue that needs to be Corrected or Confirmed

issue.description.nl

 

 

issue.description.fr

 

 

Issue.description.de

 

 

descriptionToBeSent

Boolean

Marks the fact a description is required to be sent for the linked registration.

 

POST /observation/{requestGuid}/correction

Usage: this allows correcting the data from a previous request when the status was ISSUE. When the status is not ISSUE a synchronous error is returned.

...

Example: on the GET /status call an issue was returned that the VIN is unknown. This is shown to the user in the garage, he/she verifies this and sees an input error is made. The user types in another VIN value and this is submitted, all other data needs to be filled in and stays the same.

 

Input

  • The requestGuid from observation being corrected as URL path parameter

 Fields

Refer to https://car-pass.atlassian.net/wiki/spaces/CarPassInflow/pages/7307265/Car-Pass+Inflow+Specification#POST-/observation

 

Response

Field

Type

Description

requestGuid

String (UUID)

This is  unique identifier that you’ll use to follow up your request

Refer to https://car-pass.atlassian.net/wiki/spaces/CarPassInflow/pages/7307265/Car-Pass+Inflow+Specification#GET-observation/{requestGuid}/status

 

POST /observation/{requestGuid}/confirm

Usage: this allows confirming the data from a previous request when the status was ISSUE. The user verifies the information provided in the status call describing the issue, and when the user is either unable to provide a correction or is sure the data as submitted is valid a confirm needs to be sent that will close the issue.

Input

  • The requestGuid from observation being corrected as URL path parameter

...

Info

Request body is not required

Response

Field

Type

Description

requestGuid

String (UUID)

This is  unique identifier that you’ll use to follow up your request

Refer to https://car-pass.atlassian.net/wiki/spaces/CarPassInflow/pages/7307265/Car-Pass+Inflow+Specification#GET-observation/{requestGuid}/status

 

GET observation/{requestGuid}/status/vhr

Usage: when in the POST /observation an observationType VEHICLE_HISTORY_DOCUMENT has been used to request a document to be used in secondhand car sales and the GET /observation/{requestGuid}/status has returned status PROCESSED (if there are still issues you won’t receive a Vehicle History Document)

Input

  • The requestGuid from observation being corrected as URL path parameter

  • The language as query parameter: NL, FR, DE, EN

 

Response

Field

Type

Description

file

String (base64 encoded pdf)

A base64 encoded string that represents a pdf containing the vehicle history document

publicUrl

String (url)

This url is an online version of the vehicle history document and can be used in online ads for a second hand vehicle

 

POST /observation/{requestGuid}/manual-correction

Usage: this allows to correct data from a previous request that was in status PROCESSED, when there was no issue.

...

This can only be done when there were no issues on the previous registration, the previous registration is in status PROCESSED, the previous registration was not a CORRECTION

 

Input

  • The requestGuid from observation being corrected as URL path parameter

Fields

Refer to https://car-pass.atlassian.net/wiki/spaces/CarPassInflow/pages/7307265/Car-Pass+Inflow+Specification#POST-/observation

 

Response

Field

Type

Description

requestGuid

String (UUID)

This is  unique identifier that you’ll use to follow up your request

...

Warning

Do not keep repeating a status call for this. The review will be done between 1-2 business days, afterwards the status can be retrieved.

 

Error Responses

When a request is structurally not valid or data issues like unknown guids, or corrections when the status is not ISSUE an error message will be returned in this format. Normally this is  something encountered during development and your software should be built in a way that it will not send requests that are not possible (missing mandatory fields, impossible combinations, wrong data types, …)

 

Response

Field

Type

Description

Errors

List

List of errors in the request

Field

String

Indicating for which field or fields the error occurred

Message

String

Details about what is wrong

...

Code Block
breakoutModewide
languagejson
{

  "errors": [

    {

      "field": "vin, licensePlate",

      "message": "Provide either vin or licensePlate. Both are not accepted together and at least one must be provided."

    }

  ]

}

POST observation/<guid>/description

Based on the GUID returned after a POST /Observation , POST /observation/<guid>/correct, or a POST /observation/<guid>/confirm a description needs to be provided.

...

While in status ERROR, ONGOING, REVIEWING, WAITING_FOR_DIV a description can not be sent.

Path parameter

Field

Type

Mandatory

Description

guid

String

Y

This can be any guid in case of a correction flow, both the initial as the correction.

Body

Field

Type

Mandatory

Description

activities

List<activity>

Y

At least one activity needs to be provided but multiple are possible

activity.mainActivitiymainActivity

Enum

Y

 

activity.subActivity

Enum

Y

 

jobDescriptions

List<String 500>

Y

At least one jobDescription needs to be provided, multiple are possible

A job description has a max length of 500 characters

Tyres

List

N (except for subActivity New_Tyres and SEASON_CHANGE_WITH_NEW_Tyres)

Provide a list of tyres indicating what has been installed, provided one tyre object for each modified tyre (up to a maximum of 6 and max 2 unique combinations)

Tyres >Brand

String

N (only when Tyres list is specified)

Tyres >Size

Number (MIN 8 , MAX 30)

N (only when Tyres list is specified)

Tyres >Type

string

Enum:
[ WINTER, SUMMER, ALL_SEASONS ]

N (only when Tyres list is specified)

Tyres >Quantity

Integer (MIN1, MAX 6)

N (only when Tyres list is specified)

Code Block
{
    "activities": [
        {
            "mainActivity": "MAINTENANCE",
            "subActivity": "SMALL_MAINTENANCE"
        },
        {
            "mainActivity": "DIAGNOSTICS_REVIEW",
            "subActivity": "BRAKES"
        },
        {
            "mainActivity": "TYRES",
            "subActivity": "NEW_TYRES"
        }
    ],
    "jobDescriptions": [
        "liquide Freins",
        "Motorolie",
        "LuchtfilterElement",
        "Bougies"
    ]
    "tyres" : [
     {
          "brand" : "Pirelli",
          "size": 16,
          "type": "SUMMER",
          "quantity": 2
      },
      {
          "brand" : "Michelin",
          "size": 16,
          "type": "SUMMER",
          "quantity": 2
      }
    ]

}


Response

Technical validation can happen that mandatory fields are not filled in, this is to be prevented in the UI of the Dealer Management System.

...

Code Block
{
 
    "errors" : [
        {
            "field" : "mainActivity",
            "message" : "mainActivity not filled in"
        },
        {
            "field" : "jobDescriptions",
            "message" : "jobDescriptions is empty"
        }
    ]
}

 

Work Description API examples

PDF
nameexamplesDescription.pdf

GET/activities

Returns a list of possible activities defined by Car-Pass, the main code an possible subcodes and their translations

...

Code Block
[
  {
    "mainActivity": "MAINTENANCE",
    "en" : "Maintenance",
    "nl" : "Onderhoud",
    "fr" : "Entretien",
    "de" : "Wartung",
    "subActivities": [
        {
         "subActivity": "SMALL_MAINTENANCE",
          "en" : "Small maintenance",
          "nl" : "Klein onderhoud",
          "fr" : "Petit entretien",
          "de" : "Kleine Wartung"
        },
        {
         "subActivity": "LARGE_MAINTENANCE",
         "en" : "Large maintenance",
          "nl" : "Groot onderhoud",
          "fr" : "Grand entretien",
          "de" : "Große Wartung"
         },
         {
         "subActivity": "SUMMER_CHECK",
         "en" : "Summer check",
          "nl" : "Zomercheck",
          "fr" : "Contrôle été",
          "de" : "Sommerkontrolle"
         },
         {
         "subActivity": "WINTER_CHECK",
         "en" : "Winter check",
          "nl" : "Wintercheck",
          "fr" : "Controle hiver",
          "de" : "Winterkontrolle"
         },
         "subActivity": "OTHER",
         "en" : "Other",
          "nl" : "Andere",
          "fr" : "Autres,
          "de" : "Andere"
         }
      ]
    },
  {
    "mainActivity": "DIAGNOSTICS_REPAIR",
    "subActivities": [
        {....}
    ]
  },
  ....
]

Work Description Overview List

 Main Activity

 Sub Activity

Tyre info required

Enum-system

En

Nl

Fr

De

Enum-system

En

Nl

Fr

De

 

MAINTENANCE

service

onderhoud

entretien

Wartung

PERIODIC_MAINTENANCE

periodic maintenance

periodiek onderhoud

entretien périodique

reguläre Wartung

No

 

 

 

 

 

SUMMER_CHECK

summer check

zomercheck

contrôle été

Urlaubscheck

No

 

 

 

 

 

WINTER_CHECK

winter check

wintercheck

controle hiver

Wintercheck

No

 

 

 

 

 

TECHNICAL_INSPECTION_CHECK

technical inspection check

check voor autokeuring

passage contrôle technique

Vorabcheck technische Kontrolle

No

 

 

 

 

 

OTHER

other

andere

autres

Andere

No

DIAGNOSTICS_REVIEW

diagnostics/check

diagnose/nazicht

diagnose/controle

Diagnose/Prüfung

BRAKES

brakes

remmen

freins

Bremsen

No

SUSPENSION

suspension

ophanging

suspension

Aufhängung

No

AIR_CONDITIONING

air conditioning

airco

climatisation

Klimaanlage

No

ENGINE_FUEL_SYSTEM

engine & fuel system

motor & brandstofsysteem

moteur & système carburant

Motor & Kraftstoffsystem

No

POWERTRAIN_STEERING

powertrain & steering

aandrijflijn & stuurinrichting

chaine cinématique & direction

Antriebsstrang & Lenkung

No

ELECTRONICS

electronics

elektronica

électronique

Elektronik

No

EXHAUST_EMISSION_TREATMENT

exhaust/emission treatment

uitlaat/emissie nabehandeling

échappement & traitement des émissions

Auspuff & Abgasnachbehandlung

No

ELECTRIC_SYSTEM_LOW_VOLTAGE

electric system (low voltage)

elektrisch systeem (laagspanning)

système électrique (basse tension)

Elektrische Systeme (Niedervolt)

No

ELECTRIC_SYSTEM_HIGH_VOLTAGE

electric system (high voltage)

elektrisch systeem (hoogspannng)

système électrique (haute tension)

Elektrische Systeme (Hochvolt)

No

LIGHTS

lights

verlichting

éclairage

Beleuchtung

No

INTERIOR

interior

interieur

intérieur

Innenraum

No

VISUAL_INSPECTION

visual inspection

visuele inspectie

inspection visuelle

visuelle Kontrolle

No

OTHER

other

andere

autres

Andere

No

REPAIR_ADJUST

repair/adjust

herstellen/regelen

réparation/règlage

Reparatur/Einstellung

BRAKES

brakes

remmen

freins

Bremsen

No

SUSPENSION

suspension

ophanging

suspension

Aufhängung

No

 

 

 

 

 

AIR_CONDITIONING

air conditioning

airco

climatisation

Klimaanlage

No

 

 

 

 

 

ENGINE_FUEL_SYSTEM

engine & fuel system

motor & brandstofsysteem

moteur & système carburant

Motor & Kraftstoffsystem

No

 

 

 

 

 

POWERTRAIN_STEERING

powertrain & steering

aandrijflijn & stuurinrichting

chaine cinématique & direction

Antriebsstrang & Lenkung

No

 

 

 

 

 

ELECTRONICS

electronics

elektronica

électronique

Elektronik

No

 

 

 

 

 

EXHAUST_EMISSION_TREATMENT

exhaust/emission treatment

uitlaat/emissie nabehandeling

échappement & traitement des émissions

Auspuff & Abgasnachbehandlung

No

 

 

 

 

 

ELECTRIC_SYSTEM_LOW_VOLTAGE

electric system (low voltage)

elektrisch systeem (laagspanning)

système électrique (basse tension)

Elektrische Systeme (Niedervolt)

No

 

 

 

 

 

ELECTRIC_SYSTEM_HIGH_VOLTAGE

electric system (high voltage)

elektrisch systeem (hoogspannng)

système électrique (haute tension)

Elektrische Systeme (Hochvolt)

No

 

 

 

 

 

LIGHTS

lights

verlichting

éclairage

Beleuchtung

No

 

 

 

 

 

INTERIOR

interior

interieur

intérieur

Innenraum

No

 

 

 

 

 

OTHER

other

andere

autres

Andere

No

REPLACE_ASSEMBLE

replace/fitting

vervangen/monteren

remplacement/montage

Erneuern/Einbauen

SHOCK_ABSORBER

shock absorber

schokdemper

amortisseurs

Schwingungsdämpfer

No

 

 

 

 

 

WATER_PUMP

water pump

waterpomp

pompe à eau

Wasserpumpe

No

 

 

 

 

 

TIMING_BELT_CHAIN

drive belt or chain

distributieriem/ketting

courroie/chaîne de distribution

Zahnriemen/Steuerkette

No

 

 

 

 

 

INJECTORS

injectors

injectoren

injecteurs

Injektoren

No

 

 

 

 

 

FUEL_PUMP_HIGH_PRESSURE

fuel pump high pressure

brandstofpomp (hoge druk)

pompe à carburant (haute pression)

Kraftstoffpumpe (Hochdruck)

No

 

 

 

 

 

TURBO

turbo

turbo

turbo

Turbolader

No

 

 

 

 

 

CYLINDER_HEAD_GASKET

cylinder head gasket

cylinderkoppakking

joint de culasse

Zylinderkopfdichtung

No

 

 

 

 

 

COMPLETE_ENGINE

complete engine

volledige motor

moteur complet

Kompletter Motor 

No

 

 

 

 

 

CLUTCH

clutch

koppeling

embrayage

Kupplung

No

 

 

 

 

 

GEARBOX

gearbox

versnellingsbak

boîte de vitesse

Getriebe

No

 

 

 

 

 

CARDAN_SHAFT

cardan shaft

cardanas

cardan

Kardanwelle

No

 

 

 

 

 

DIFFERENTIAL

differential

differentieel

differentiel

Differential

No

 

 

 

 

 

EXHAUST_MUFFLER

exhaust (muffler)

uitlaat (demper)

(pot) d'échappement

Auspufftopf

No

 

 

 

 

 

PARTICULATE_FILTER

particulate filter

roetfilter

filtre à particules

Rußpartikelfilter

No

 

 

 

 

 

CATALYTIC_CONVERTER

catalytic converter

katalysator

catalysateur

Katalysator

No

 

 

 

 

 

STARTER

starter

startmotor

démarreur

Anlasser

No

 

 

 

 

 

ALTERNATOR

alternator

alternator

alternateur

Generator

No

 

 

 

 

 

BATTERY_HIGH_VOLTAGE

battery high voltage

batterij hoogspanning

batterie haute tension

Hochvoltbatterie

No

BATTERY_LOW_VOLTAGE

battery low voltage

batterij laagspanning

batterie basse tension

Niedervoltbatterie

No

ACCESSORIES

accessories

accessoires

accessoires

Zubehöre

No

 

 

 

 

 

OTHER

other

andere

autres

Andere

No

BODYWORK

bodywork

carrosseriewerk

travaux de carrosserie

Karosseriearbeiten

DAMAGE_REPAIR

damage repair

schadeherstelling

réparation carrosserie

Karosseriereparatur

No

 

 

 

 

 

COSMETIC_REPAIR

cosmetic repair

cosmetische herstelling

réparation cosmétique

Kosmetische Reparatur

No

 

 

 

 

 

PRE_DELIVERY_INSPECTION

pre-delivery inspection

pre-delivery inspection

reconditionnement

Auslieferungsinspektion

No

 

 

 

 

 

REPAIR_WINDOW

repair window(s)

herstelling ruit(en)

réparation vitre(s)

Scheibenreparatur

No

 

 

 

 

 

REPLACE_WINDOW

replace window(s)

vervanging ruit(en)

remplacement vitre(s)

Scheibenaustausch

No

 

 

 

 

 

RESTORATION

restoration

restauratie

restauration

Restaurierung

No

 

 

 

 

 

OTHER

other

andere

autres

Andere

No

TYRES

tyres

banden

pneumatiques

Bereifung

REPAIR_TYRES

repair tyre(s)

herstelling band(en)

réparation pneu(s)

Reifenreparatur

No

 

 

 

 

 

SEASON_CHANGE_TYRES

season change tyres

seizoenswissel banden

changement saisonnier

Saisonbedingter Reifenwechsel

No

SEASON_CHANGE_TYRES_WITH_NEW_TYRES

season change tyres with new tyres

seizoenswissel banden met monteren nieuwe banden

changement saisonnier avec montage nouveau pneus

Saisonbedingter Reifenwechsel mit Montage neuer Reifen

Yes*

 

 

 

 

 

NEW_TYRES

install new tyres

monteren nieuwe banden

montage nouveau pneus

Neue Reifen montieren

Yes*

 

 

 

 

 

WHEEL_ALIGNMENT

wheel alignment

wieluitlijning 

réglage géométrie

Achsvermessung

No

 

 

 

 

 

OTHER

other

andere

autres

Andere

No

ROADSIDE_ASSISTANCE

roadside assistance

pechverhelping

dépannage routière

Pannenhilfe

ROADSIDE_ASSISTANCE

roadside assistance

pechverhelping

dépannage routière

Pannenhilfe

No

...

Code Block
"tyres" : [
     {
          "brand" : "Pirelli",
          "size": 16,
          "type": "SUMMER",
          "quantity": 2
      },

Issue List

Issue Code

Data accepted/saved by Car-Pass

Work description required

Issue description NL

Issue description FR

Issue Description DE

Correction Possible

[001] 

YES

YES

Kilometerstand lager dan laatste.

Kilométrage inférieur au précédent.

Kilometerstand niedriger als vorheriger.

YES

[110]  

NO

NO

Ongeldige kilometerstand - de gegevens werden verworpen

Kilométrage invalide - les données ont été rejetées.

Ungültiger Kilometerstand - Die Daten wurden abgelehnt.

YES

[120] 

NO

NO

Onbekend of inactief ondernemingsnummer - de gegevens werden verworpen

Numéro d'entreprise inconnu ou inactif - les données ont été rejetées.

Unternehmensnummer unbekannt oder nicht aktiv - Die Daten wurden abgelehnt.

NO

[121]  

NO

NO

Onbekende gebruikerscode - de gegevens werden verworpen

Code utilisateur inconnu - les données ont été rejetées.

Benutzercode unbekannt - Die Daten wurden abgelehnt.

NO

[123]  

NO

NO

U heeft reeds een km-stand geleverd voor deze wagen op deze datum.

Vous avez déjà fourni un kilométrage pour ce véhicule à cette même date.

Sie haben bereits an diesem Datum einen Kilometerstand für dieses Fahrzeug gemeldet - die Daten wurden abgelehnt.

NO

[124] 

NO

NO

Chassisnummer niet uniek. Specifieer ook datum 1ste inschrijving - de gegevens werden verworpen

Le numéro de châssis n'est pas unique. Spécifiez aussi la date de première immatriculation - les données ont été rejetées.

Die Fahrgestellnummer ist nicht einmalig. Geben Sie auch das Erstanmeldungsdatum ein - Die Daten wurden abgelehnt.

YES

[128]  

NO

NO

Het probleem is reeds opgelost of de verbetertermijn is verstreken - de correctie werd verworpen

Problème déjà résolu ou le délai pour le résoudre est expiré - la correction a été rejetée.

Problem bereits gelöst oder Lösungsfrist abgelaufen - Die Berichtigung wurde abgelehnt.

NO

[129] 

YES

YES

De verbetering heeft terug een fout veroorzaakt.

La correction a de nouveau créé une erreur.

Die Korrektur hat erneut einen Fehler verursacht.

YES

[130] 

NO

NO

Dit probleem kan enkel opgelost worden door gebruiker die de originele km-stand heeft aangeleverd - de correctie werd verworpen

Le problème ne peut être résolu que par l'utilisateur qui a fourni le kilométrage original - la correction a été rejetée.

Das Problem kann nur von der Person gelöst werden, die den anfänglichen Kilometerstand eingegeben hat. - Die Berichtigung wurde abgelehnt

NO

[131]

NO

NO

Dit chassisnummer is onbekend in de databank van Car-Pass  - de gegevens werden verworpen

Ce numéro de châssis est inconnu dans la base de données de Car-Pass.

Fahrgestellnummer unbekannt in der Datenbank von Car-Pass.

YES

[134] 

NO

NO

De opgegeven vestiging behoort niet tot de onderneming - de gegevens werden verworpen

L'unité d'établissement n'appartient pas à l'entreprise - les données ont été rejetées

Die Kombination Unternehmensnummer/Niederlassungsnummer ist ungültig. - Die Daten wurden abgelehnt

NO

[146]

NO

NO

Gebruikerscode en Verzenderscode zijn beide inactief - de gegevens werden verworpen

Code utilisateur et code expéditeur sont inactifs

Benutzercode und Absendercode sind beide unbekannt oder inaktiv

NO

[147] 

NO

NO

De datum der werken is ouder dan 3 jaar - de gegevens werden verworpen 

La date des travaux est plus ancienne que 3 ans.

Das Aufnahmedatum ist älter als 3 Jahre.

NO

[150] 

NO

NO

U hebt deze gegevens reeds meegedeeld - de gegevens werden verworpen 

Vous nous avez déjà communiqué ces données.

Sie versehen diese Informationen bereits.

NO

[163] 

NO

NO

Bevestiging zonder open problemen - de correctie werd verworpen

Confirmation sans problèmes ouverts

Bestätigung ohne offene Probleme

NO

[180] 

NO

NO

U kan enkel de datum van vandaag opgeven - de gegevens werden verworpen 

Vous ne pouvez qu’introduire la date d’aujourd’hui.

Sie dürfen nur das heutige Datum eingeben.

NO

[190]

NO

NO

De nummerplaat is niet gekend bij DIV

La plaque d'immatriculation n’est pas connue chez DIV

Das Kennzeichen ist beim DIV nicht bekannt

YES

[203]

YES

YES

De kilometerstand werd niet binnen de wettelijk voorziene termijn meegedeeld.

Le kilométrage n'a pas été envoyé à Car-Pass endéans le délai prévu par la loi.

Der Kilometerstand wurde nicht innerhalb des gesetzlichen Zeitrahmens mitgeteilt.

YES

[205] 

YES

YES

Deze kilometerstand bestaat uit 6 cijfers terwijl de teller van het voertuig slechts 5 cijfers aangeeft.

Le compteur kilométrique du véhicule compte 5 chiffres et vous en transmettez 6.

Der Kilometerstand umfasst mehr Ziffern als der Kilometerzähler des Fahrzeugs

YES

[206] 

YES

YES

Voertuig staat geregistreerd als wrak.

Le véhicule est enregistré comme une épave.

Das Fahrzeug ist als Wrack eingetragen.

YES

[207] 

NO

YES

Formaat chassisnummer is niet juist - de gegevens werden verworpen 

Le format de numéro de châssis est invalide.

Das Format der Fahrgestellnummer ist ungültig.

YES

[208] 

YES

YES

De kilometerstand is een afgerond getal.

Le kilométrage est un nombre arrondi, évitez d'arrondir les kilométrages.

Der Kilometerstand ist eine abgerundete Zahl.

YES

[209] 

YES

YES

De kilometerstand is veel hoger dan verwacht.

L'évolution du kilométrage est sensiblement plus élevée que par le passé.

Der Kilometerstand ist höher als der Normalwert.

YES

[210] 

YES

YES

Kleine anomalie

Petite anomalie

Kleine Anomalie

YES

[242] 

NO

NO

Organisatie niet toegelaten om voertuighistoriek aan te vragen - de gegevens werden verworpen 

Organisation n'est pas autorisée à consulter l'historique kilométrique

Organisation nicht zugelassen, um die Fahrzeugvorgeschichte anzufordern

NO

[250] 

YES

YES

Verzenderscode is inactief

Code expéditeur est inactif

Absendercode ist inaktiv

NO

[251] 

YES

YES

Gebruikerscode is inactief

Code utilisateur est inactif

Benutzercode ist inaktiv

NO

Vehicle History Report

 

Professional dealers offering second-hand vehicles for sale are legally obliged to display the information that appears on the Car Pass in the advertisement and showroom. Therefore they have to request a vehicle history report via web services or the Car-Pass website.

...

While creating a vehicle history we consult several external databases. These sometimes respond very slowly or not at all. For this, our timeout is set to 1 minute. When we return an 'ONGOING', it means that we are waiting for a response. Please write your application so that it recalls the method GET /observation{request with a maximum of 1 request  in 10 seconds until you get a valid response back that is different from 'ONGOING' and this for a duration of minimum 90 seconds.

API call Examples

PDF
nameexamples.pdf

...

Testing Purposes

For testing purposes we can provide you test accounts and test chassisnummers. Please sent your request to supportit@car-pass.be

...

The link to the test website is: https://professionals.beta.car-pass.be/auth/login If you want to test on license plates, we ask you to send us some VIN numbers and the matching license plates, which we will create in the test environment.

Swagger Page

Swagger integration
{
    "openapi": "3.0.1",
    "info": {
        "title": "Professional webservice",
        "description": "<p>Welcome to the documentation of the Car-Pass REST services for the Professional Users.</p>\n<p> This page allows you to explore, try and test the REST interface to help you with integrating these services in your application. Important to know is that processing of requests happens asynchronously.\nYou will do a request to submit data, you will receive a guid that you'll need to store and use in the following requests. The below requests contain more information on how and when to use these.</p>\n<p>You'll start with <b>POST OBSERVATION</b> then use <b>GET observation{requestguid}/status</b> to check if registration was successful or further action is needed.\nIf the status is ISSUE, further action is needed either <b>POST observation{requestguid}/correction</b> or <b>POST observation{requestguid}/confirm</b> </p>\n<p>Security is basic authentication with the establishment number of the garage as username, for testing purposes other accounts can be set-up</p>\n<p>Dates are formatted dd/mm/yyyy<br/>Supported languages are NL, FR, DE. EN only for the Vehicle History Report pdf</p>",
        "version": "3.0.0"
    },
    "servers": [
        {
            "url": "https://ws-professionals.beta.car-pass.be/api",
            "description": "Generated server url"
        }
    ],
    "security": [
        {
            "basicAuth": []
        }
    ],
    "paths": {
        "/observation": {
            "post": {
                "tags": [
                    "observation-controller"
                ],
                "summary": "Submit a new observation",
                "description": "<ul>\n<li><b>Take note of the odometer reading on the dashboard:</b> this operation is performed by a staff member in the workshop and for obvious reasons requires the presence of the vehicle.</li>\n<li>Car-Pass expects to receive the exact odometer reader indicated on the dashboard, no approximate values or rounded numbers.</li>\n<li>Workshops have to send the data they hold to Car-Pass immediately, when the vehicle is still in the workshop.</li>\n<li>Car-Pass doesn’t accept that a same user sends an odometer for the same vehicle twice with the same  odometerReadingDate. The second reading will generate an error and will be rejected.</li>\n</ul>",
                "operationId": "registerObservation",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/RegisterObservationDto"
                            }
                        }
                    },
                    "required": true
                },
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/RequestRegisteredDto"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "content": {
                            "*/*": {
                                "schema": {
                                    "$ref": "#/components/schemas/CarPassValidationErrorDto"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/observation/{requestGuid}/manual-correction": {
            "post": {
                "tags": [
                    "observation-controller"
                ],
                "summary": "Submit a manual correction: change data on a previously processed request",
                "description": "Usage: this allows to correct data from a previous request that was in status PROCESSED, <b>when there was no issue.</b>\n\nExample: the user in the workshop notices a typo after submitting the data to Car-Pass and wants to make a correction.\n\nThis can only be done when there were <b>no issues</b> on the previous registration, the previous registration is in status PROCESSED, the previous registration was not a CORRECTION",
                "operationId": "correctObservationManually",
                "parameters": [
                    {
                        "name": "requestGuid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/RegisterObservationDto"
                            }
                        }
                    },
                    "required": true
                },
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/RequestRegisteredDto"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "content": {
                            "*/*": {
                                "schema": {
                                    "$ref": "#/components/schemas/CarPassValidationErrorDto"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/observation/{requestGuid}/description": {
            "post": {
                "tags": [
                    "description-controller"
                ],
                "summary": "Submit a description for an existing observation",
                "description": "Usage: create a description and link it to an observation using the requestguid in the response of POST /observation or POST /observation{requestGuid}/correct",
                "operationId": "addDescriptionToObservation",
                "parameters": [
                    {
                        "name": "requestGuid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/DescriptionDto"
                            }
                        }
                    },
                    "required": true
                },
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "*/*": {
                                "schema": {
                                    "$ref": "#/components/schemas/CarPassValidationErrorDto"
                                },
                                "example": {
                                    "errors": null
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "content": {
                            "*/*": {
                                "schema": {
                                    "$ref": "#/components/schemas/CarPassValidationErrorDto"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/observation/{requestGuid}/correction": {
            "post": {
                "tags": [
                    "observation-controller"
                ],
                "summary": "Submit a correction: change data on a previous request",
                "description": "Usage: this allows to correct data from a previous request when the status was ISSUE.\n\nExample: on the GET /status call an issue was returned that the inputted mileage seems to low.\nThis is shown to the user in the garage, he/she verifies this and sees an input error is made.\nThe user types in another odometerReading value and this is submitted, all other data needs to be filled in and stays the same.\nThe user could also modify the odometerReadingDate and/or VIN to correct the issue)\n\nExample: on the GET /status call an issue was returned that the VIN is unknown.\nThis is shown to the user in the garage, he/she verifies this and sees an input error is made.\nThe user types in another VIN value and this is submitted, all other data needs to be filled in and stays the same.",
                "operationId": "correctObservation",
                "parameters": [
                    {
                        "name": "requestGuid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/RegisterObservationDto"
                            }
                        }
                    },
                    "required": true
                },
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/RequestRegisteredDto"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "content": {
                            "*/*": {
                                "schema": {
                                    "$ref": "#/components/schemas/CarPassValidationErrorDto"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/observation/{requestGuid}/confirm": {
            "post": {
                "tags": [
                    "observation-controller"
                ],
                "summary": "Confirm a previous request with issues",
                "description": "Usage: when an issue is returned in the GET /status call but the user verifies the information and is either unable to provide a correction or is sure the data as submitted is valid a confirmation needs to be sent.",
                "operationId": "confirmObservation",
                "parameters": [
                    {
                        "name": "requestGuid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/RequestRegisteredDto"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "content": {
                            "*/*": {
                                "schema": {
                                    "$ref": "#/components/schemas/CarPassValidationErrorDto"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/observation/{requestGuid}/status": {
            "get": {
                "tags": [
                    "observation-controller"
                ],
                "summary": "Retrieve the status of a request",
                "description": "Usage: based on the request guid in the response of POST /observation or POST /observation{requestGuid}/correct retrieve the status to verify if data has been loaded or further action is needed",
                "operationId": "getTransactionStatus",
                "parameters": [
                    {
                        "name": "requestGuid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/StatusResponseDto"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "content": {
                            "*/*": {
                                "schema": {
                                    "$ref": "#/components/schemas/CarPassValidationErrorDto"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/observation/{requestGuid}/status/vhr": {
            "get": {
                "tags": [
                    "observation-controller"
                ],
                "summary": "Retrieve a Vehicle History Report",
                "description": "Usage: when in the POST /observation an observationType VEHICLE_HISTORY_DOCUMENT has been used to request a document to be used in secondhand car sales and the GET /observation/{requestGuid}/status has returned status PROCESSED (if there are still issues you won’t receive a Vehicle History Document)",
                "operationId": "getVehicleHistory",
                "parameters": [
                    {
                        "name": "requestGuid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "language",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "FR",
                                "NL",
                                "DE",
                                "EN"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/VehicleHistoryDto"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "content": {
                            "*/*": {
                                "schema": {
                                    "$ref": "#/components/schemas/CarPassValidationErrorDto"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/activities": {
            "get": {
                "tags": [
                    "activity-controller"
                ],
                "operationId": "getActivities",
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "*/*": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/MainActivityDto"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "content": {
                            "*/*": {
                                "schema": {
                                    "$ref": "#/components/schemas/CarPassValidationErrorDto"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "CarPassValidationErrorDto": {
                "type": "object",
                "properties": {
                    "errors": {
                        "type": "array",
                        "description": "List of errors in the request",
                        "nullable": true,
                        "items": {
                            "$ref": "#/components/schemas/FieldValidationErrorDto"
                        }
                    }
                }
            },
            "FieldValidationErrorDto": {
                "required": [
                    "field",
                    "message"
                ],
                "type": "object",
                "properties": {
                    "field": {
                        "type": "string",
                        "description": "Indicating for which field or fields the error occurred",
                        "example": "exampleField"
                    },
                    "message": {
                        "type": "string",
                        "description": "Details about what is wrong",
                        "example": "must not be null"
                    }
                },
                "description": "List of errors in the request",
                "nullable": true
            },
            "RegisterObservationDto": {
                "required": [
                    "enteredOrganisation",
                    "enterpriseOrganisation",
                    "observationType",
                    "odometerReading",
                    "odometerReadingDate"
                ],
                "type": "object",
                "properties": {
                    "vin": {
                        "type": "string",
                        "description": "Either vin or licensePlate must be provided. Both are not accepted together.",
                        "example": "XYUIYAURZA18451"
                    },
                    "licensePlate": {
                        "type": "string",
                        "description": "Either vin or licensePlate must be provided. Both are not accepted together. licensePlate can not be used with observationType VEHICLE_HISTORY_DOCUMENT. Commercial plates (Y/Z/V + 3 letters + 3 numbers) are not accepted.",
                        "example": "0XXX999"
                    },
                    "unifier": {
                        "maximum": 99,
                        "minimum": 1,
                        "type": "integer",
                        "description": "The DIV unifier, used to identify vin’s shorter than 17 characters",
                        "format": "int32",
                        "example": 2
                    },
                    "firstUseDate": {
                        "type": "string",
                        "description": "The firstUseDate of the Vehicle, used to identify vin’s shorter than 17 characters",
                        "format": "date"
                    },
                    "odometerReadingDate": {
                        "type": "string",
                        "description": "The date the odometer was read (we expect this information on the day it was read, so most of the time should be equal to the current date)",
                        "format": "date"
                    },
                    "odometerReading": {
                        "type": "integer",
                        "description": "The exact reading as read from the dashboard",
                        "format": "int32",
                        "example": 37412
                    },
                    "observationType": {
                        "type": "string",
                        "description": "<ul>\n<li>REPAIR_MAINTENANCE_SERVICE: a normal registration, to be used in most situations</li>\n<li>ODOMETER_REPLACED: indicate that the odometer counter has been replaced during the work</li>\n<li>VEHICLE_HISTORY_DOCUMENT: a registration that request a vehicle history document to be generated</li>\n</ul>",
                        "example": "REPAIR_MAINTENANCE_SERVICE",
                        "enum": [
                            "REPAIR_MAINTENANCE_SERVICE",
                            "ODOMETER_REPLACED",
                            "VEHICLE_HISTORY_DOCUMENT"
                        ]
                    },
                    "enterpriseOrganisation": {
                        "type": "string",
                        "description": "The enterprise number of the enteredOrganisation"
                    },
                    "enteredOrganisation": {
                        "type": "string",
                        "description": "The KBO number of the establishment where odometer was read"
                    }
                }
            },
            "RequestRegisteredDto": {
                "type": "object",
                "properties": {
                    "requestGuid": {
                        "type": "string",
                        "description": "This is the unique identifier that you’ll use to follow up your request",
                        "example": "65d6a912-1f2f-46ee-9fee-0455b4309bfb"
                    }
                }
            },
            "ActivityDto": {
                "required": [
                    "mainActivity",
                    "subActivity"
                ],
                "type": "object",
                "properties": {
                    "mainActivity": {
                        "type": "string",
                        "enum": [
                            "MAINTENANCE",
                            "DIAGNOSTICS_REVIEW",
                            "REPAIR_ADJUST",
                            "REPLACE_ASSEMBLE",
                            "BODYWORK",
                            "TYRES",
                            "ROADSIDE_ASSISTANCE",
                            "INVALID"
                        ]
                    },
                    "subActivity": {
                        "type": "string",
                        "enum": [
                            "PERIODIC_MAINTENANCE",
                            "SUMMER_CHECK",
                            "WINTER_CHECK",
                            "TECHNICAL_INSPECTION_CHECK",
                            "VISUAL_INSPECTION",
                            "AIR_CONDITIONING",
                            "BRAKES",
                            "ELECTRONICS",
                            "ELECTRONIC_SYSTEM_HIGH_VOLTAGE",
                            "ELECTRONIC_SYSTEM_LOW_VOLTAGE",
                            "ELECTRIC_SYSTEM_HIGH_VOLTAGE",
                            "ELECTRIC_SYSTEM_LOW_VOLTAGE",
                            "ENGINE_FUEL_SYSTEM",
                            "EXHAUST_EMISSION_TREATMENT",
                            "INTERIOR",
                            "LIGHTS",
                            "POWERTRAIN_STEERING",
                            "SUSPENSION",
                            "ALTERNATOR",
                            "ACCESSORIES",
                            "BATTERY_HIGH_VOLTAGE",
                            "BATTERY_LOW_VOLTAGE",
                            "CARDAN_SHAFT",
                            "CATALYTIC_CONVERTER",
                            "CLUTCH",
                            "COMPLETE_ENGINE",
                            "CYLINDER_HEAD_GASKET",
                            "DIFFERENTIAL",
                            "EXHAUST_MUFFLER",
                            "FUEL_PUMP_HIGH_PRESSURE",
                            "GEARBOX",
                            "INJECTORS",
                            "PARTICULATE_FILTER",
                            "SHOCK_ABSORBER",
                            "STARTER",
                            "TIMING_BELT_CHAIN",
                            "TURBO",
                            "WATER_PUMP",
                            "COSMETIC_REPAIR",
                            "DAMAGE_REPAIR",
                            "PRE_DELIVERY_INSPECTION",
                            "REPAIR_WINDOW",
                            "REPLACE_WINDOW",
                            "RESTORATION",
                            "NEW_TYRES",
                            "REPAIR_TYRES",
                            "SEASON_CHANGE_TYRES",
                            "SEASON_CHANGE_TYRES_WITH_NEW_TYRES",
                            "WHEEL_ALIGNMENT",
                            "ROADSIDE_ASSISTANCE",
                            "OTHER",
                            "INVALID"
                        ]
                    }
                },
                "description": "At least one activity needs to be provided but multiple are possible"
            },
            "DescriptionDto": {
                "required": [
                    "activities",
                    "jobDescriptions"
                ],
                "type": "object",
                "properties": {
                    "activities": {
                        "maxItems": 2147483647,
                        "minItems": 1,
                        "uniqueItems": true,
                        "type": "array",
                        "description": "At least one activity needs to be provided but multiple are possible",
                        "items": {
                            "$ref": "#/components/schemas/ActivityDto"
                        }
                    },
                    "jobDescriptions": {
                        "uniqueItems": true,
                        "type": "array",
                        "description": "At least one jobDescription needs to be provided, multiple are possible\n\nA jobDescription has a max length of 500 characters",
                        "items": {
                            "type": "string",
                            "description": "At least one jobDescription needs to be provided, multiple are possible\n\nA jobDescription has a max length of 500 characters"
                        }
                    },
                    "tyres": {
                        "type": "array",
                        "description": "Needs to be provided when the following subActivity is provided\n\n* NEW_TYRES\n* SEASON_CHANGE_TYRES_WITH_NEW_TYRES\n\nProvide a list of tyres indicating what has been installed, provided one tyre object for each modified tyre (up to a maximum of 6 and max 2 unique combinations)",
                        "nullable": true,
                        "items": {
                            "$ref": "#/components/schemas/TyreDto"
                        }
                    }
                }
            },
            "TyreDto": {
                "required": [
                    "brand",
                    "size",
                    "type"
                ],
                "type": "object",
                "properties": {
                    "brand": {
                        "maxLength": 100,
                        "minLength": 0,
                        "type": "string"
                    },
                    "size": {
                        "maximum": 30,
                        "minimum": 8,
                        "type": "number"
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "WINTER",
                            "SUMMER",
                            "ALL_SEASONS"
                        ]
                    },
                    "quantity": {
                        "maximum": 6,
                        "minimum": 1,
                        "type": "integer",
                        "format": "int32"
                    }
                },
                "description": "Needs to be provided when the following subActivity is provided\n\n* NEW_TYRES\n* SEASON_CHANGE_TYRES_WITH_NEW_TYRES\n\nProvide a list of tyres indicating what has been installed, provided one tyre object for each modified tyre (up to a maximum of 6 and max 2 unique combinations)",
                "nullable": true
            },
            "IssueDescription": {
                "required": [
                    "de",
                    "fr",
                    "nl"
                ],
                "type": "object",
                "properties": {
                    "nl": {
                        "type": "string",
                        "example": "Kilometerstand lager dan laatste."
                    },
                    "fr": {
                        "type": "string",
                        "example": "Kilométrage inférieur au précédent."
                    },
                    "de": {
                        "type": "string",
                        "example": "Kilometerstand niedriger als vorheriger."
                    }
                },
                "description": "Placeholder object for translations. The description explains the data issue that needs to be Corrected or Confirmed"
            },
            "ProfessionalIssueDTO": {
                "required": [
                    "description",
                    "type"
                ],
                "type": "object",
                "properties": {
                    "type": {
                        "type": "string",
                        "description": "A unique key for the type of issue",
                        "example": "001"
                    },
                    "description": {
                        "$ref": "#/components/schemas/IssueDescription"
                    }
                },
                "description": "Will be filled in with issues that require attention by the user",
                "nullable": true
            },
            "StatusResponseDto": {
                "required": [
                    "descriptionToBeSent"
                ],
                "type": "object",
                "properties": {
                    "status": {
                        "type": "string",
                        "description": "<ul>\n<li>PROCESSED: the observation has been successfully registered, no further action needed</li>\n<li>ISSUE: Car-Pass notices a data issue, explanation in the linked issue, a Correction or Confirm action is needed</li>\n<li>ERROR: the provided data was not able to be saved in the database, no further action is needed for this request</li>\n<li>ONGOING: The provided observation is still being validated by the Car-Pass system</li>\n<li>REVIEWING: The provided observation will be manually validated by a Car-Pass employee</li>\n<li>REJECTED: the provided data could not be accepted after manual review</li>\n<li>WAITING_FOR_DIV: the registration was done based on licensePlate and we're waiting feedback from the DIV to match the licensePlate</li>\n</ul>",
                        "example": "ISSUE",
                        "enum": [
                            "ERROR",
                            "ISSUE",
                            "ONGOING",
                            "PROCESSED",
                            "REJECTED",
                            "REVIEWING",
                            "WAITING_FOR_DIV"
                        ]
                    },
                    "issues": {
                        "type": "array",
                        "description": "Will be filled in with issues that require attention by the user",
                        "nullable": true,
                        "items": {
                            "$ref": "#/components/schemas/ProfessionalIssueDTO"
                        }
                    },
                    "descriptionToBeSent": {
                        "type": "boolean",
                        "description": "Marks the fact a description is required to be sent for the linked registration."
                    },
                    "rejectReason": {
                        "maxLength": 1024,
                        "minLength": 0,
                        "type": "string",
                        "description": "Will be shown if the transaction is in status REJECTED and will be a debrief by a Car-Pass employee, this has also been mailed to the feedback address of the organisation"
                    }
                }
            },
            "VehicleHistoryDto": {
                "type": "object",
                "properties": {
                    "file": {
                        "type": "array",
                        "description": "A base64 encoded string that represents a pdf containing the vehicle history document",
                        "example": "base64EncodedString",
                        "items": {
                            "type": "string",
                            "description": "A base64 encoded string that represents a pdf containing the vehicle history document",
                            "format": "byte",
                            "example": "YmFzZTY0RW5jb2RlZFN0cmluZw=="
                        }
                    },
                    "publicUrl": {
                        "type": "string",
                        "description": "This url is an online version of the vehicle history document and can be used in online ads for a second hand vehicle",
                        "example": "https://public.car-pass.be/vhr/124093841-214321-214321"
                    }
                }
            },
            "MainActivityDto": {
                "required": [
                    "de",
                    "en",
                    "fr",
                    "mainActivity",
                    "nl",
                    "subActivities"
                ],
                "type": "object",
                "properties": {
                    "en": {
                        "type": "string"
                    },
                    "nl": {
                        "type": "string"
                    },
                    "fr": {
                        "type": "string"
                    },
                    "de": {
                        "type": "string"
                    },
                    "mainActivity": {
                        "type": "string",
                        "enum": [
                            "MAINTENANCE",
                            "DIAGNOSTICS_REVIEW",
                            "REPAIR_ADJUST",
                            "REPLACE_ASSEMBLE",
                            "BODYWORK",
                            "TYRES",
                            "ROADSIDE_ASSISTANCE",
                            "INVALID"
                        ]
                    },
                    "subActivities": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/SubActivityDto"
                        }
                    }
                }
            },
            "SubActivityDto": {
                "required": [
                    "de",
                    "en",
                    "fr",
                    "nl",
                    "subActivity",
                    "tyreInfoRequired"
                ],
                "type": "object",
                "properties": {
                    "en": {
                        "type": "string"
                    },
                    "nl": {
                        "type": "string"
                    },
                    "fr": {
                        "type": "string"
                    },
                    "de": {
                        "type": "string"
                    },
                    "tyreInfoRequired": {
                        "type": "boolean"
                    },
                    "subActivity": {
                        "type": "string",
                        "enum": [
                            "PERIODIC_MAINTENANCE",
                            "SUMMER_CHECK",
                            "WINTER_CHECK",
                            "TECHNICAL_INSPECTION_CHECK",
                            "VISUAL_INSPECTION",
                            "AIR_CONDITIONING",
                            "BRAKES",
                            "ELECTRONICS",
                            "ELECTRONIC_SYSTEM_HIGH_VOLTAGE",
                            "ELECTRONIC_SYSTEM_LOW_VOLTAGE",
                            "ELECTRIC_SYSTEM_HIGH_VOLTAGE",
                            "ELECTRIC_SYSTEM_LOW_VOLTAGE",
                            "ENGINE_FUEL_SYSTEM",
                            "EXHAUST_EMISSION_TREATMENT",
                            "INTERIOR",
                            "LIGHTS",
                            "POWERTRAIN_STEERING",
                            "SUSPENSION",
                            "ALTERNATOR",
                            "ACCESSORIES",
                            "BATTERY_HIGH_VOLTAGE",
                            "BATTERY_LOW_VOLTAGE",
                            "CARDAN_SHAFT",
                            "CATALYTIC_CONVERTER",
                            "CLUTCH",
                            "COMPLETE_ENGINE",
                            "CYLINDER_HEAD_GASKET",
                            "DIFFERENTIAL",
                            "EXHAUST_MUFFLER",
                            "FUEL_PUMP_HIGH_PRESSURE",
                            "GEARBOX",
                            "INJECTORS",
                            "PARTICULATE_FILTER",
                            "SHOCK_ABSORBER",
                            "STARTER",
                            "TIMING_BELT_CHAIN",
                            "TURBO",
                            "WATER_PUMP",
                            "COSMETIC_REPAIR",
                            "DAMAGE_REPAIR",
                            "PRE_DELIVERY_INSPECTION",
                            "REPAIR_WINDOW",
                            "REPLACE_WINDOW",
                            "RESTORATION",
                            "NEW_TYRES",
                            "REPAIR_TYRES",
                            "SEASON_CHANGE_TYRES",
                            "SEASON_CHANGE_TYRES_WITH_NEW_TYRES",
                            "WHEEL_ALIGNMENT",
                            "ROADSIDE_ASSISTANCE",
                            "OTHER",
                            "INVALID"
                        ]
                    }
                }
            }
        },
        "securitySchemes": {
            "basicAuth": {
                "type": "http",
                "scheme": "basic"
            }
        }
    }
}

...