Skip to main content

Generate a SnapshotAnalysis

There are two scenarios for generating a SnapshotAnalysis:

  1. POST /subsystemanalysis
  • Aggregates all signals within a subsystem.
  • Much simpler input, but less control on the signals.
  1. POST /snapshotanalysis
  • Requires more specific input but it has finer grained control on the Signals used.

Scenario 1 - SubsystemAnalysis

  1. Open Scenarios -> Create SubsystemAnalysis
  2. Select POST Create SubsystemAnalysis using template
  3. Fill out body with CreateSubsystemAnalysis
{
"snapshotCriteria": {
"idSnapshot": <SnapshotEventId>,
"minEpochMs": 0,
"maxEpochMs": 1773719999999
},
"vehicleCriteria": {
"idPackages": [],
"idVins": [],
"fleets": []
}
}

Response

{
"id": "69b87f4b68c537088b33c023",
"snapshotAnalysisId": "69b87f4ca9f39c2e0c04522d" // <- reference to the SnapshotAnalysis resource created.
}

Scenario 2 - SnapshotAnalysis

  1. Open Scenarios -> Create SnapshotAnalysis
  2. Select POST Create SnapshotAnalysis using template
  3. Fill out body with a template
{
"id": "",
"name": "Customer Demo In Use",
"public": false,
"signalExpressions": {
"expressions": [{
"key": "s1",
"name": "custom_synthetic_*1000",
"expression": "c1251 * 1000"
},{
"key": "s2",
"name": "in_use_egr_vvt_ratio",
"expression": "c125698 * 1"
},{
"key": "s3",
"name": "in_use_ds02_b1_ratio_synthetic",
"expression": "c125700 * 1"
}]
},
"sections": [],
"criteria": {
"vehicleCriteria": {
"idPackages": [],
"idVins": [],
"fleets": []
},
"snapshotCriteria": {
"idSnapshot": 25113,
"minEpochMs": 0,
"maxEpochMs": 1773719999999
}
}
}
  1. Send the request using Postman.

Response

{
"id": "69b87f88a9f39c2e0c04522f", // <- reference to the SnapshotAnalysis resource created.
"processingState": {
"errorMessage": "N/A",
"status": "submitted"
},
"template": {
"createdBy": "",
"criteria": {
"snapshotCriteria": {
"idSnapshot": 25113,
"maxEpochMs": 1773719999999,
"minEpochMs": 0
},
"vehicleCriteria": {
"fleets": null,
"idPackages": null,
"idVins": null
}
},
"id": "69b87f88a9f39c2e0c04522e",
"lastUpdate": 1773698952000,
"name": "Customer Demo In Use",
"public": false,
"sections": [],
"signalExpressions": {
"expressions": [
{
"expression": "c1251 * 1000",
"key": "s1",
"name": "custom_synthetic_*1000"
},
{
"expression": "c125698 * 1",
"key": "s2",
"name": "in_use_egr_vvt_ratio"
},
{
"expression": "c125700 * 1",
"key": "s3",
"name": "in_use_ds02_b1_ratio_synthetic"
}
]
},
"subsystem": "In Use"
}
}

What to do with the SnapshotAnalysis once it's created?

Once the SnapshotAnalysis reference exists. We can poll for the SnapshotAnalysis processing state using GET /snapshotanalysis/:id/processingState.

Replace the :id in the path with the SnapshotAnalysis id received in the response from creating the resource.

Request

GET /snapshotanalysis//processingState

Response

{
"status": "done",
"errorMessage": "N/A"
}

Once the processingStatus.status is "done", we can fetch the results of the SnapshotAnalysis resource using GET /snapshotanalysis/:id.

The SnapshotAnalysis resource

GET /snapshotanalysis/:id. Once a SnapshotAnalysis resource is done processing, the resource will contain a reference to a SignalAnalysis resource.

{
"id": "69b87f88a9f39c2e0c04522f",
"processingState": {
"errorMessage": "N/A",
"status": "done"
},
"signalAnalysis": {
"id": "69b87f89e2c730b76d12b76f", <- reference to the SignalAnalysis resource created as a result of processing the SnapshotAnalysis inputs.
"name": "Customer Demo In Use",
"ownerId": "9766b1e3-7669-4b8b-a331-638b3cddc843",
"processingState": {
"errorMessage": "N/A",
"status": "done"
},
"publicFlag": false,
"signalExpressions": {
"expressions": [
{
"expression": "c125700",
"key": "c125700",
"name": ""
},
{
"expression": "c125698",
"key": "c125698",
"name": ""
},
{
"expression": "c125698 * 1",
"key": "s2",
"name": "in_use_egr_vvt_ratio"
},
{
"expression": "c1251",
"key": "c1251",
"name": ""
},
{
"expression": "c1251 * 1000",
"key": "s1",
"name": "custom_synthetic_*1000"
},
{
"expression": "c125700 * 1",
"key": "s3",
"name": "in_use_ds02_b1_ratio_synthetic"
}
]
}
},
"template": {
"createdBy": "",
"criteria": {
"snapshotCriteria": {
"idSnapshot": 25113,
"maxEpochMs": 1773719999999,
"minEpochMs": 0
},
"vehicleCriteria": {
"fleets": null,
"idPackages": null,
"idVins": null
}
},
"id": "69b87f88a9f39c2e0c04522e",
"lastUpdate": 1773698952000,
"name": "Customer Demo In Use",
"public": false,
"sections": [],
"signalExpressions": {
"expressions": [
{
"expression": "c1251 * 1000",
"key": "s1",
"name": "custom_synthetic_*1000"
},
{
"expression": "c125698 * 1",
"key": "s2",
"name": "in_use_egr_vvt_ratio"
},
{
"expression": "c125700 * 1",
"key": "s3",
"name": "in_use_ds02_b1_ratio_synthetic"
}
]
},
"subsystem": "In Use"
}
}

Next steps after we have a SnapshotAnalysis resource with a processingState.status of "done" is to use the SignalAnalysis resource to retreive the signal data.