Skip to main content

Endpoint Descriptions

All endpoints are described in the API endpoint documentation, however for some there may be some context missing and this section will explain some of the endpoints in more detail.

The Search endpoint that is available for some types such as Tyres, IssueListIssues and AssemblyIterations allows for searching of subsets of items in the database in the same way as the tyre inventory in the client software. This is a GET request with a body. As shown in the API endpoint documentation, the body object should contain a property associatedModelSearchMode. Depending on the value of this property the returned items will belong to either the whole account, a provided championship, event, car or event/car. This property is an integer with the corresponding values:

  • 0 = Account
  • 1 = Championship
  • 2 = Event
  • 3 = Car
  • 4 = Event/Car

Depending on the value provided for associatedModelSearchMode, the appropriate ID properties should be present.

TimingIntegration

The TimingIntegration endpoints are used by the HH Timing Integration (DMI) and are designed to provide a simpler interface to update runs, laps and sectors/speed traps based on an index rather than an ID. As shown in the API endpoint documentation, all request body objects should contain the following IDs:

  • accountId
  • championshipId
  • eventId
  • sessionId
  • carId

Each body can contain an array of objects under properties that make it possible to update parameters on the run/lap/sector. These objects follow the same convention as parameter updates on the standard PUT/POST endpoints as described above.

The other parameters for various endpoints are:

  • driverId - if the driver ID is provided then the driver of the run will be updated
  • runIndex - the 0-based index of the run to be updated (i.e. for run 1, runIndex = 0)
  • stintLapNumber - the 1-based stint lap number for the lap to be updated (i.e. for the out lap of the stint, stintLapNumber = 0)
  • sectorId - when updating a sector the ID of the sector must be provided. This corresponds to the ID of the TrackSectorDefinition in the TrackConfiguration used for the current session
  • speedTrapId - when updating a speed trap the ID of the sector must be provided. This corresponds to the ID of the TrackSpeedTrapDefinition in the TrackConfiguration used for the current session
  • pitIn/OutTime - the time of day for the pit in/out. This is a date string in the extended ISO-8601 format.
  • pitIn/OutSessionTime - the session time for the pit in/out. This is a value in seconds since the start of the session.
  • shouldCreateNextRun - if this is provided as true on a pit in, then a new run will be created automatically

CanopySimulations

The CanopySimulations endpoints trigger and reprocess Canopy simulations from the API. They are the headless, batchable equivalent of the desktop Trigger Canopy Simulation and Reprocess Canopy Simulation buttons.

Both endpoints are asynchronous: the request is validated and queued, and the simulation then runs in the background. Progress is reported back through the setup status parameters configured on the Canopy profile, exactly as for the desktop buttons. The response confirms only which setups were accepted, not the final simulation result.

Both endpoints accept an array of setup IDs, so a single request can target one or many setups. Each setup is validated independently and the response contains a per-setup result; a request can therefore be partially accepted (some setups queued, others rejected).

The Canopy credentials are the same ones used to sign in to the Canopy portal (the client secret must be requested from Canopy directly) and are supplied in the request body.

POST CanopySimulations/Trigger

POST https://hhdm-api.hh-dev.com/CanopySimulations/Trigger

Triggers a new simulation. The request body contains:

  • canopyProfileId - the ID of the Canopy simulation configuration (profile) to run
  • setupIds - an array of setup IDs to trigger
  • credentials - an object with clientId, clientSecret, username and password

POST CanopySimulations/Reprocess

POST https://hhdm-api.hh-dev.com/CanopySimulations/Reprocess

Reprocesses the results of already-run simulations without re-running them. The request body contains the same fields as Trigger plus:

  • parameterNameForStudyId - the name of the setup parameter that holds the Canopy study ID to reprocess. The study ID is read from this parameter on each setup; if the parameter is missing or empty, that setup is rejected.

Each entry in the response results array has:

  • setupId - the setup the result refers to
  • accepted - true if the request for this setup was validated and queued
  • studyId - the resolved Canopy study ID (reprocess only; null otherwise)
  • message - the reason the setup was rejected when accepted is false

GET CanopySimulations/Status

GET https://hhdm-api.hh-dev.com/CanopySimulations/Status?canopyProfileId={profileId}&setupIds={setupId}&setupIds={setupId}

Because Trigger and Reprocess are asynchronous, this endpoint is how a caller observes the outcome - whether a simulation was requested, started, failed to start, is running, or finished. The status is read from the setup status parameters configured on the Canopy profile (the same parameters shown in the client), so the profile must configure a Simulation Status Parameter Name for a status to be available.

The query parameters are:

  • canopyProfileId - the Canopy profile whose status parameter names should be used
  • setupIds - one or more setup IDs (repeat the parameter for each setup)

Each entry in the response results array has:

  • setupId - the setup the result refers to
  • setupFound - true if the setup was located and is accessible
  • status - the latest simulation status (e.g. Requested, Simulation started, Simulation start failed, Processing completed); null when unavailable
  • message - the status detail/failure reason when available, or why status is unavailable (setup not found, no permission, or the profile configures no status parameter)
  • studyId - the Canopy study ID saved on the setup, if the profile configures a parameter for it
  • lastUpdateTime - when the status was last updated (ISO-8601), if the profile configures a status update time parameter

The status is eventual and best-effort: it is overwritten in place per setup, so it always reflects the most recent run. For push-based notifications rather than polling, use the SQS/HTTP callback integrations instead.