{"openapi":"3.0.4","info":{"title":"Assets","description":"Assets","version":"v3"},"servers":[{"url":"https://talk.perspio.io/assets/v3","description":"AU Region"},{"url":"https://us-talk.perspio.io/assets/v3","description":"US Region"}],"paths":{"/":{"get":{"tags":["Details"],"summary":"Get Assets","description":"Fetch all assets. Operates on assets in the current tenant.","operationId":"getAssets","parameters":[{"name":"signals","in":"query","style":"form","schema":{"type":"array","items":{"type":"string"}}},{"name":"includedisabledassets","in":"query","schema":{"type":"boolean"}},{"name":"orderby","in":"query","description":"Field to order the results by (e.g. \"name\"). See the API reference for sortable fields.","required":false,"schema":{"type":"string"},"example":"name"},{"name":"page_size","in":"query","description":"Maximum number of items per page. When greater than 0 the response is paged and returns the ContinuationToken, ResultCount and TotalCount response headers.","required":false,"schema":{"type":"integer"},"example":50},{"name":"x-perspio-filter","in":"header","description":"Global data filter (JSON-serialised) scoping results to matching assets. Optional keys, each an array of strings: locationHierarchyL1..L3, productHierarchyL1..L3, operationalHierarchyL1..L3, groupIds; plus boolean 'enabled'. Omit for no additional filtering (security-group scoping always applies). Example: {\"locationHierarchyL1\":[\"NSW\"],\"enabled\":true}","required":false,"schema":{"type":"string"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."},{"name":"ContinuationToken","in":"header","required":false,"schema":{"type":"string"},"description":"Opaque token from a previous response's ContinuationToken header, to fetch the next page."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssetsResponseObject"}},"example":[{"assetTypeId":101,"active":true,"assetId":"asset-12345","assetName":"Vehicle A1","customerAssetId":"CUST-VA-001","deviceDataJson":"{\"speed\":55,\"engineOn\":true}","driverId":"driver-7890","latitude":-33.8688,"longitude":151.2093,"coordinates":"-33.8688,151.2093","lastCommunicatedUtc":"2025-06-19T04:00:00Z","lastCommunicatedOrderedUtc":"2025-06-19T04:00:00Z","lastLocatedUtc":"2025-06-19T03:55:00Z","lastSynchronizedUtc":"2025-06-19T03:59:59Z","markerChoice":"Default","markerType":2,"preferredOdometer":15234.8,"preferredRunHours":478.2,"locationHierarchyL1":"Australia","locationHierarchyL2":"NSW","locationHierarchyL3":"Sydney","operationalHierarchyL1":"Operations","operationalHierarchyL2":"Fleet","operationalHierarchyL3":"Heavy Vehicles","productHierarchyL1":"Transport","productHierarchyL2":"Freight","productHierarchyL3":"Logistics","relatedObjectsCount":4,"timeZone":"Australia/Sydney","encodedSystemFlags":255,"odometer":15234.8,"perspioOdometer":15200.5,"customerOdometer":15198.3,"preferredOdometerSource":1,"runHours":478.2,"perspioRunHours":477.5,"customerRunHours":475,"preferredRunHoursSource":2,"deviceData":{"speed":55,"engineOn":true},"systemFlags":{"encodedSystemFlags":255,"enabled":true,"customCountersEnabled":true,"geofencingEnabled":true,"tollEnabled":true,"tripsEnabled":true,"computeOdometerEnabled":true,"computeRunhoursEnabled":true,"notificationsEnabled":true,"systemFlagsEnabled":true,"workflowsEnabled":true,"validated":true},"id":"asset-doc-123","tenantId":"tenant-xyz-001","correlationId":"corr-5678-abcd-efgh","enabled":true}]}},"headers":{"ContinuationToken":{"description":"Opaque token to fetch the next page; absent on the last page.","schema":{"type":"string"},"example":"eyJ0b2tlbiI6IjEyMyJ9"},"ResultCount":{"description":"Number of items returned in this page.","schema":{"type":"integer"},"example":50},"TotalCount":{"description":"Total number of items across all pages.","schema":{"type":"integer"},"example":1234},"TotalGlobalCount":{"description":"Total number of items across the whole tenant, ignoring the active filter.","schema":{"type":"integer"},"example":5000}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error"}}},"post":{"tags":["Details"],"summary":"Create Asset","description":"Create a new asset. Operates on asset in the current tenant.","operationId":"createAsset","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAsset-RequestObject"},"example":{"assetName":" test","assetTypeId":10,"customerAssetId":"3333","deviceId":null,"systemFlags":{"speedingEnabled":true,"geofencingEnabled":true,"tollEnabled":true,"tripsEnabled":true,"computeOdometerEnabled":true,"computeRunhoursEnabled":true,"notificationsEnabled":true,"proximitySvcEnabled":true}}}}},"responses":{"200":{"description":"The request was applied.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"correlationId":{"type":"string","description":"Client-supplied correlation id, echoed back for request tracing."},"ExtraProperties":{"type":"object"},"id":{"type":"string","description":"Unique identifier."},"Item":{"type":"object"},"tenantId":{"type":"string","description":"Tenant the record belongs to."},"Ts":{"type":"integer","format":"int64","description":"Ts."},"TwinMetadata":{"type":"object","properties":{"LastUpdateTimes":{"type":"object"},"modelId":{"type":"string","description":"Model Id."}}}}}},"example":[{"correlationId":"abcd1234-5678-90ef-ghij-klmnopqrstuv","ExtraProperties":{"customProperty1":"value1","customProperty2":42},"id":"event-001","Item":{"sensorReading":72.5,"status":"active"},"tenantId":"tenant-abc-123","Ts":1726420000,"TwinMetadata":{"LastUpdateTimes":{"sensorReading":"2025-06-19T02:45:00Z","status":"2025-06-19T02:46:30Z"},"modelId":"dtmi:example:model;1"}}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.CreateAsset","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/assetsV2","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}":{"patch":{"tags":["Details"],"summary":"Patch Asset","description":"Update specific fields of an asset.","operationId":"patchAsset","parameters":[{"name":"id","in":"path","description":"Asset Id","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchRequestObject"},"example":[{"value":"testName","path":"/assetName","op":"replace"},{"value":"PP-000001","path":"/deviceId","op":"replace"}]}}},"responses":{"200":{"description":"The request was applied."},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.PatchAsset","errorType":"ArgumentException","statusCode":400,"request":"PATCH /api/assetsV2/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.PatchAsset","errorType":"NullReferenceException","statusCode":500,"request":"PATCH /api/assetsV2/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"get":{"tags":["Details"],"summary":"Get Asset","description":"Fetch detailed information about an asset.","operationId":"getAsset","parameters":[{"name":"id","in":"path","description":"Asset ID","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetsResponseObject"},"example":{"assetTypeId":101,"active":true,"assetId":"asset-12345","assetName":"Vehicle A1","customerAssetId":"CUST-VA-001","deviceDataJson":"{\"speed\":55,\"engineOn\":true}","driverId":"driver-7890","latitude":-33.8688,"longitude":151.2093,"coordinates":"-33.8688,151.2093","lastCommunicatedUtc":"2025-06-19T04:00:00Z","lastCommunicatedOrderedUtc":"2025-06-19T04:00:00Z","lastLocatedUtc":"2025-06-19T03:55:00Z","lastSynchronizedUtc":"2025-06-19T03:59:59Z","markerChoice":"Default","markerType":2,"preferredOdometer":15234.8,"preferredRunHours":478.2,"locationHierarchyL1":"Australia","locationHierarchyL2":"NSW","locationHierarchyL3":"Sydney","operationalHierarchyL1":"Operations","operationalHierarchyL2":"Fleet","operationalHierarchyL3":"Heavy Vehicles","productHierarchyL1":"Transport","productHierarchyL2":"Freight","productHierarchyL3":"Logistics","relatedObjectsCount":4,"timeZone":"Australia/Sydney","encodedSystemFlags":255,"odometer":15234.8,"perspioOdometer":15200.5,"customerOdometer":15198.3,"preferredOdometerSource":1,"runHours":478.2,"perspioRunHours":477.5,"customerRunHours":475,"preferredRunHoursSource":2,"deviceData":{"speed":55,"engineOn":true},"systemFlags":{"encodedSystemFlags":255,"enabled":true,"customCountersEnabled":true,"geofencingEnabled":true,"tollEnabled":true,"tripsEnabled":true,"computeOdometerEnabled":true,"computeRunhoursEnabled":true,"notificationsEnabled":true,"systemFlagsEnabled":true,"workflowsEnabled":true,"validated":true},"id":"asset-doc-123","tenantId":"tenant-xyz-001","correlationId":"corr-5678-abcd-efgh","enabled":true}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetById","errorType":"ArgumentException","statusCode":400,"request":"GET /api/assetsV2/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetById","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/assetsV2/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"post":{"tags":["Details"],"summary":"Update Asset","description":"Update an asset. Operates on asset in the current tenant.","operationId":"updateAsset","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"example":"in-000021"},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAsset-RequestObject"},"example":{"type":1,"deviceId":"G9C6211EC504"}}}},"responses":{"200":{"description":"The request was applied.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"correlationId":{"type":"string","description":"Client-supplied correlation id, echoed back for request tracing."},"ExtraProperties":{"type":"object"},"id":{"type":"string","description":"Unique identifier."},"Item":{"type":"object"},"tenantId":{"type":"string","description":"Tenant the record belongs to."},"Ts":{"type":"integer","format":"int64","description":"Ts."},"TwinMetadata":{"type":"object","properties":{"LastUpdateTimes":{"type":"object"},"modelId":{"type":"string","description":"Model Id."}}}}}},"example":[{"correlationId":"value","ExtraProperties":{},"id":"A-000123","Item":{},"tenantId":"value","Ts":0,"TwinMetadata":{"LastUpdateTimes":{},"modelId":"value"}}]}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.UpdateAsset","errorType":"ArgumentException","statusCode":400,"request":"POST /api/assetsV2/in-000021","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.UpdateAsset","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/assetsV2/in-000021","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"delete":{"tags":["Details"],"summary":"Delete Asset","description":"Delete an asset by id. Operates on asset in the current tenant.","operationId":"deleteAsset","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"example":"in-000021"},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"The delete was applied."},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.DeleteAsset","errorType":"ArgumentException","statusCode":400,"request":"DELETE /api/assetsV2/in-000021","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.DeleteAsset","errorType":"NullReferenceException","statusCode":500,"request":"DELETE /api/assetsV2/in-000021","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/archive":{"post":{"tags":["Details"],"summary":"Archive Asset","description":"Archive an asset, removing it from active views.","operationId":"archiveAsset","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"example":"in-000021"},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"comment":{"type":"string","description":"Optional comment recorded with the archive action."}},"description":"Optional comment for the archive action (CommentUploadData)."}}}},"responses":{"200":{"description":"The asset was archived."},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.ArchiveAsset","errorType":"ArgumentException","statusCode":400,"request":"POST /api/assetsV2/in-000021/archive","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.ArchiveAsset","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/assetsV2/in-000021/archive","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/enable":{"post":{"tags":["Details"],"summary":"Enable Asset","description":"Enable (re-activate) a previously disabled asset.","operationId":"enableAsset","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"example":"in-000021"},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"comment":{"type":"string","description":"Optional comment recorded with the enable action."}},"description":"Optional comment for the enable action (CommentUploadData)."}}}},"responses":{"200":{"description":"The asset was enabled."},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.EnableAsset","errorType":"ArgumentException","statusCode":400,"request":"POST /api/assetsV2/in-000021/enable","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.EnableAsset","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/assetsV2/in-000021/enable","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/info":{"get":{"tags":["Details"],"summary":"Get Assets Info","description":"Fetch assets info. Operates on assets info in the current tenant.","operationId":"getAssetsInfo","parameters":[{"name":"x-perspio-filter","in":"header","description":"Global data filter (JSON-serialised) scoping results to matching assets. Optional keys, each an array of strings: locationHierarchyL1..L3, productHierarchyL1..L3, operationalHierarchyL1..L3, groupIds; plus boolean 'enabled'. Omit for no additional filtering (security-group scoping always applies). Example: {\"locationHierarchyL1\":[\"NSW\"],\"enabled\":true}","required":false,"schema":{"type":"string"}},{"name":"includedisabledassets","in":"query","description":"Include disabled assets","schema":{"type":"boolean"}},{"name":"orderby","in":"query","description":"Field to order the results by (e.g. \"name\"). See the API reference for sortable fields.","required":false,"schema":{"type":"string"},"example":"name"},{"name":"page_size","in":"query","description":"Maximum number of items per page. When greater than 0 the response is paged and returns the ContinuationToken, ResultCount and TotalCount response headers.","required":false,"schema":{"type":"integer"},"example":50},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."},{"name":"ContinuationToken","in":"header","required":false,"schema":{"type":"string"},"description":"Opaque token from a previous response's ContinuationToken header, to fetch the next page."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier."},"systemFlags":{"type":"object","properties":{"encodedSystemFlags":{"type":"number","description":"Encoded System Flags."},"enabled":{"type":"boolean","description":"Whether the record is enabled."},"customCountersEnabled":{"type":"boolean","description":"Custom Counters Enabled."},"geofencingEnabled":{"type":"boolean","description":"Geofencing Enabled."},"tollEnabled":{"type":"boolean","description":"Toll Enabled."},"tripsEnabled":{"type":"boolean","description":"Trips Enabled."},"computeOdometerEnabled":{"type":"boolean","description":"Whether odometer computation is enabled."},"computeRunhoursEnabled":{"type":"boolean","description":"Whether runhours computation is enabled."},"notificationsEnabled":{"type":"boolean","description":"Notifications Enabled."},"systemFlagsEnabled":{"type":"boolean","description":"System Flags Enabled."},"workflowsEnabled":{"type":"boolean","description":"Workflows Enabled."},"validated":{"type":"boolean","description":"Validated."}}},"payload":{"type":"object","properties":{"assetInfo":{"type":"object","properties":{"assetId":{"type":"string","description":"Asset id."},"customerAssetId":{"type":"string","description":"Customer-assigned asset id."},"customerAssetId1":{"description":"Customer Asset Id1."},"sourceSysAssetId":{"description":"Source Sys Asset Id."},"sourceSysAssetId1":{"description":"Source Sys Asset Id1."},"assetName":{"type":"string","description":"Asset name."},"assetTypeId":{"type":"number","description":"Asset type id."},"size":{"type":"string","description":"Size."},"type":{"type":"string","description":"Type discriminator."},"category":{"type":"string","description":"Category."},"make":{"type":"string","description":"Make."},"model":{"type":"string","description":"Model."},"serialNumber":{"description":"Serial Number."},"regoNumber":{"type":"string","description":"Rego Number."},"regoState":{"type":"string","description":"Rego State."},"regoExpiry":{"type":"string","description":"Rego Expiry."},"licencePlateType":{"description":"Licence Plate Type."},"manufacturedDate":{"type":"string","description":"Manufactured Date."}}},"hierarchy":{"type":"object","properties":{"locationHierarchyL1":{"type":"string","description":"Location Hierarchy L1."},"locationHierarchyL2":{"type":"string","description":"Location Hierarchy L2."},"locationHierarchyL3":{"type":"string","description":"Location Hierarchy L3."},"productHierarchyL1":{"type":"string","description":"Product Hierarchy L1."},"productHierarchyL2":{"type":"string","description":"Product Hierarchy L2."},"productHierarchyL3":{"type":"string","description":"Product Hierarchy L3."},"operationalHierarchyL1":{"type":"string","description":"Operational Hierarchy L1."},"operationalHierarchyL2":{"description":"Operational Hierarchy L2."},"operationalHierarchyL3":{"description":"Operational Hierarchy L3."}}},"finance":{"type":"object","properties":{"replacementValue":{"description":"Replacement Value."},"purchaseDate":{"type":"string","description":"Purchase Date."},"warrantyExpiryDate":{"type":"string","description":"Warranty Expiry Date."},"extendedWarrantyExpiryDate":{"type":"string","description":"Extended Warranty Expiry Date."},"purchasePrice":{"description":"Purchase Price."}}},"contacts":{"type":"object","properties":{"contact1Name":{"description":"Contact 1 name."},"contact1Phone":{"description":"Contact 1 phone."},"contact1Email":{"description":"Contact 1 email."},"contact1ObjectLink1":{"description":"Contact 1 object link1."},"contact2Name":{"description":"Contact 2 name."},"contact2Phone":{"description":"Contact 2 phone."},"contact2Email":{"description":"Contact 2 email."},"contact2ObjectLink1":{"description":"Contact 2 object link1."},"contact3Name":{"description":"Contact 3 name."},"contact3Phone":{"description":"Contact 3 phone."},"contact3Email":{"description":"Contact 3 email."},"contact3ObjectLink1":{"description":"Contact 3 object link1."},"contact4Name":{"description":"Contact 4 name."},"contact4Phone":{"description":"Contact 4 phone."},"contact4Email":{"description":"Contact 4 email."},"contact4ObjectLink1":{"description":"Contact 4 object link1."},"contact5Name":{"description":"Contact 5 name."},"contact5Phone":{"description":"Contact 5 phone."},"contact5Email":{"description":"Contact 5 email."},"contact5ObjectLink1":{"description":"Contact 5 object link1."},"compliance":{"type":"object","properties":{"ropsNumber":{"description":"Rops Number."}}}}},"operation":{"type":"object","properties":{"status1":{"description":"Status1."},"status2":{"description":"Status2."},"hireContractId":{"description":"Hire Contract Id."},"hireStatus":{"description":"Hire Status."},"reservationNo":{"description":"Reservation No."},"branchName":{"description":"Branch Name."},"customerName":{"type":"string","description":"Customer Name."},"scheduleStartDateTime":{"type":"string","format":"date-time","description":"Schedule Start Date Time."},"scheduleEndDateTime":{"type":"string","format":"date-time","description":"Schedule End Date Time."},"siteContact":{"description":"Site Contact."},"siteContactEmail":{"description":"Site Contact Email."},"siteAddress":{"description":"Site Address."},"siteContactMobile":{"description":"Site Contact Mobile."},"customerType":{"description":"Customer Type."},"siteDaysOpenPerWeek":{"description":"Site Days Open Per Week."},"chargePeriod":{"description":"Charge Period."},"notes":{"description":"Notes."},"hireContractLineId":{"description":"Hire Contract Line Id."},"lineStatus":{"description":"Line Status."},"startDate":{"type":"string","format":"date-time","description":"Start Date."},"expectedTermDate":{"type":"string","format":"date-time","description":"Expected Term Date."},"adjustedTermDate":{"type":"string","format":"date-time","description":"Adjusted Term Date."}}},"servicing":{"type":"object","properties":{"serviceScheduleId":{"type":"string","description":"Service Schedule Id."},"lastServiceMeter":{"type":"string","description":"Last Service Meter."},"scheduleName":{"type":"string","description":"Schedule Name."},"nextServiceMeter":{"type":"string","description":"Next Service Meter."},"scheduleInterval":{"type":"string","description":"Schedule Interval."},"scheduleType":{"type":"string","description":"Schedule Type."},"lastServiceDate":{"type":"string","description":"Last Service Date."},"nextServiceDate":{"type":"string","description":"Next Service Date."},"nextServiceDaysUntil":{"type":"number","description":"Next Service Days Until."},"lastServiceDaysSince":{"type":"number","description":"Last Service Days Since."},"serviceScheduleId1":{"description":"Service Schedule Id1."},"lastServiceMeter1":{"description":"Last Service Meter1."},"scheduleName1":{"description":"Schedule Name1."},"nextServiceMeter1":{"type":"string","description":"Next Service Meter1."},"scheduleInterval1":{"description":"Schedule Interval1."},"scheduleType1":{"description":"Schedule Type1."},"lastServiceDate1":{"description":"Last Service Date1."},"nextServiceDate1":{"description":"Next Service Date1."},"nextServiceDaysUntil1":{"description":"Next Service Days Until1."},"lastServiceDaysSince1":{"description":"Last Service Days Since1."},"serviceScheduleId2":{"description":"Service Schedule Id2."},"lastServiceMeter2":{"description":"Last Service Meter2."},"scheduleName2":{"description":"Schedule Name2."},"nextServiceMeter2":{"type":"string","description":"Next Service Meter2."},"scheduleInterval2":{"description":"Schedule Interval2."},"scheduleType2":{"description":"Schedule Type2."},"lastServiceDate2":{"description":"Last Service Date2."},"nextServiceDate2":{"description":"Next Service Date2."},"nextServiceDaysUntil2":{"description":"Next Service Days Until2."},"lastServiceDaysSince2":{"description":"Last Service Days Since2."},"serviceScheduleId3":{"description":"Service Schedule Id3."},"lastServiceMeter3":{"description":"Last Service Meter3."},"scheduleName3":{"description":"Schedule Name3."},"nextServiceMeter3":{"description":"Next Service Meter3."},"scheduleInterval3":{"description":"Schedule Interval3."},"scheduleType3":{"description":"Schedule Type3."},"lastServiceDate3":{"description":"Last Service Date3."},"nextServiceDate3":{"description":"Next Service Date3."},"nextServiceDaysUntil3":{"description":"Next Service Days Until3."},"lastServiceDaysSince3":{"description":"Last Service Days Since3."}}},"utilisation":{"type":"object","properties":{"financeUtilisation":{"description":"Finance Utilisation."},"timeUtilisation":{"description":"Time Utilisation."}}},"variables":{"type":"object","properties":{"variable1":{"description":"Variable1."},"variable2":{"description":"Variable2."},"variable3":{"description":"Variable3."},"variable4":{"description":"Variable4."}}}}},"schema":{"type":"array","items":{"type":"object","properties":{"propertyPath":{"type":"string","description":"Property Path."},"friendlyPropertyPath":{"type":"string","description":"Friendly Property Path."},"property":{"type":"string","description":"Property."},"title":{"type":"string","description":"Display title."},"description":{"type":"string","description":"Free-text description."},"visible":{"type":"boolean","description":"Visible."},"datatype":{"type":"string","description":"Datatype."},"sectionName":{"type":"string","description":"Section Name."},"sectionTitle":{"type":"string","description":"Section Title."},"sectionOrder":{"type":"number","description":"Section Order."},"order":{"type":"number","description":"Order."}}}},"sync_status":{"type":"object","properties":{"payload.hierarchy.operationalHierarchyL1":{"type":"object","properties":{"lastUpdated":{"type":"string","description":"Last Updated."},"sourceSystem":{"type":"string","description":"Source System."},"lastValue":{"type":"string","description":"Last Value."}}},"payload.assetInfo.customerAssetId":{"type":"object","properties":{"lastUpdated":{"type":"string","description":"Last Updated."},"sourceSystem":{"type":"string","description":"Source System."},"lastValue":{"type":"string","description":"Last Value."}}},"payload.assetInfo.assetName":{"type":"object","properties":{"lastUpdated":{"type":"string","description":"Last Updated."},"sourceSystem":{"type":"string","description":"Source System."},"lastValue":{"type":"string","description":"Last Value."}}}}},"perspio_configuration":{"type":"object","properties":{"schemaDefinition":{"type":"string","description":"Schema Definition."},"isLatLonOverrideEnabled":{"type":"boolean","description":"Is Lat Lon Override Enabled."},"isActive":{"type":"boolean","description":"Is Active."},"markerChoice":{"type":"string","description":"Marker Choice."},"markerType":{"type":"number","description":"Marker Type."},"color":{"description":"Color."},"latitude":{"description":"Latitude."},"longitude":{"description":"Longitude."},"timeZone":{"description":"Time Zone."},"tollClass":{"type":"string","description":"Toll Class."},"counter":{"type":"object","properties":{"perspioCounter1":{"description":"Perspio Counter1."},"perspioCounter2":{"description":"Perspio Counter2."},"perspioCounter3":{"description":"Perspio Counter3."}}},"workingHours":{"type":"object","properties":{"profile1":{"description":"Profile1."}}},"detailsSharing":{"type":"object","properties":{"name":{"description":"Display name."},"description":{"description":"Free-text description."},"enabled":{"type":"boolean","description":"Whether the record is enabled."},"details":{"description":"Details."},"createdBy":{"description":"User or system that created the record."},"createdDate":{"type":"string","description":"UTC timestamp when the record was created."},"updatedBy":{"description":"User or system that last modified the record."},"ownedBy":{"description":"Owner of the record."},"updatedDate":{"type":"string","description":"UTC timestamp when the record was last modified."},"id":{"description":"Unique identifier."},"type":{"type":"string","description":"Type discriminator."},"correlationId":{"description":"Client-supplied correlation id, echoed back for request tracing."},"_ts":{"type":"number","description":"Ts."}}},"debug":{"description":"Debug."},"schedule":{"type":"array","items":{"type":"object","properties":{"dayOfWeek":{"type":"number","description":"Day Of Week."},"timeIntervals":{"type":"string","description":"Time Intervals."}}}}}}}},"example":{"id":"A-000123","systemFlags":{"encodedSystemFlags":0,"enabled":false,"customCountersEnabled":false,"geofencingEnabled":false,"tollEnabled":false,"tripsEnabled":false,"computeOdometerEnabled":false,"computeRunhoursEnabled":false,"notificationsEnabled":false,"systemFlagsEnabled":false,"workflowsEnabled":false,"validated":false},"payload":{"assetInfo":{"assetId":"value","customerAssetId":"value","customerAssetId1":"value","sourceSysAssetId":"value","sourceSysAssetId1":"value","assetName":"value","assetTypeId":0,"size":"value","type":"value","category":"value","make":"value","model":"value","serialNumber":"value","regoNumber":"value","regoState":"value","regoExpiry":"value","licencePlateType":"value","manufacturedDate":"value"},"hierarchy":{"locationHierarchyL1":"value","locationHierarchyL2":"value","locationHierarchyL3":"value","productHierarchyL1":"value","productHierarchyL2":"value","productHierarchyL3":"value","operationalHierarchyL1":"value","operationalHierarchyL2":"value","operationalHierarchyL3":"value"},"finance":{"replacementValue":"value","purchaseDate":"value","warrantyExpiryDate":"value","extendedWarrantyExpiryDate":"value","purchasePrice":"value"},"contacts":{"contact1Name":"value","contact1Phone":"value","contact1Email":"value","contact1ObjectLink1":"value","contact2Name":"value","contact2Phone":"value","contact2Email":"value","contact2ObjectLink1":"value","contact3Name":"value","contact3Phone":"value","contact3Email":"value","contact3ObjectLink1":"value","contact4Name":"value","contact4Phone":"value","contact4Email":"value","contact4ObjectLink1":"value","contact5Name":"value","contact5Phone":"value","contact5Email":"value","contact5ObjectLink1":"value","compliance":{"ropsNumber":"value"}},"operation":{"status1":"value","status2":"value","hireContractId":"value","hireStatus":"value","reservationNo":"value","branchName":"value","customerName":"value","scheduleStartDateTime":"value","scheduleEndDateTime":"value","siteContact":"value","siteContactEmail":"value","siteAddress":"value","siteContactMobile":"value","customerType":"value","siteDaysOpenPerWeek":"value","chargePeriod":"value","notes":"value","hireContractLineId":"value","lineStatus":"value","startDate":"value","expectedTermDate":"value","adjustedTermDate":"value"},"servicing":{"serviceScheduleId":"value","lastServiceMeter":"value","scheduleName":"value","nextServiceMeter":"value","scheduleInterval":"value","scheduleType":"value","lastServiceDate":"value","nextServiceDate":"value","nextServiceDaysUntil":0,"lastServiceDaysSince":0,"serviceScheduleId1":"value","lastServiceMeter1":"value","scheduleName1":"value","nextServiceMeter1":"value","scheduleInterval1":"value","scheduleType1":"value","lastServiceDate1":"value","nextServiceDate1":"value","nextServiceDaysUntil1":"value","lastServiceDaysSince1":"value","serviceScheduleId2":"value","lastServiceMeter2":"value","scheduleName2":"value","nextServiceMeter2":"value","scheduleInterval2":"value","scheduleType2":"value","lastServiceDate2":"value","nextServiceDate2":"value","nextServiceDaysUntil2":"value","lastServiceDaysSince2":"value","serviceScheduleId3":"value","lastServiceMeter3":"value","scheduleName3":"value","nextServiceMeter3":"value","scheduleInterval3":"value","scheduleType3":"value","lastServiceDate3":"value","nextServiceDate3":"value","nextServiceDaysUntil3":"value","lastServiceDaysSince3":"value"},"utilisation":{"financeUtilisation":"value","timeUtilisation":"value"},"variables":{"variable1":"value","variable2":"value","variable3":"value","variable4":"value"}},"schema":[{"propertyPath":"value","friendlyPropertyPath":"value","property":"value","title":"value","description":"value","visible":false,"datatype":"value","sectionName":"value","sectionTitle":"value","sectionOrder":0,"order":0}],"sync_status":{"payload.hierarchy.operationalHierarchyL1":{"lastUpdated":"value","sourceSystem":"value","lastValue":"value"},"payload.assetInfo.customerAssetId":{"lastUpdated":"value","sourceSystem":"value","lastValue":"value"},"payload.assetInfo.assetName":{"lastUpdated":"value","sourceSystem":"value","lastValue":"value"}},"perspio_configuration":{"schemaDefinition":"value","isLatLonOverrideEnabled":false,"isActive":false,"markerChoice":"value","markerType":0,"color":"value","latitude":"value","longitude":"value","timeZone":"value","tollClass":"value","counter":{"perspioCounter1":"value","perspioCounter2":"value","perspioCounter3":"value"},"workingHours":{"profile1":"value"},"detailsSharing":{"name":"Excavator 12","description":"value","enabled":false,"details":"value","createdBy":"value","createdDate":"value","updatedBy":"value","ownedBy":"value","updatedDate":"value","id":"A-000123","type":"value","correlationId":"value","_ts":0},"debug":"value","schedule":[{"dayOfWeek":0,"timeIntervals":"value"}]}}}},"headers":{"ContinuationToken":{"description":"Opaque token to fetch the next page; absent on the last page.","schema":{"type":"string"},"example":"eyJ0b2tlbiI6IjEyMyJ9"},"ResultCount":{"description":"Number of items returned in this page.","schema":{"type":"integer"},"example":50},"TotalCount":{"description":"Total number of items across all pages.","schema":{"type":"integer"},"example":1234}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetMasterApi.GetAssetsInfo","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/assets/infoV3","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/info":{"get":{"tags":["Details"],"summary":"Get Asset Info","description":"Fetch the master data of an asset.","operationId":"getAssetInfo","parameters":[{"name":"id","in":"path","description":"Asset ID","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier."},"payload":{"type":"object","properties":{"assetInfo":{"type":"object","properties":{"assetId":{"type":"string","description":"Asset id."},"customerAssetId":{"type":"string","description":"Customer-assigned asset id."},"customerAssetId1":{"type":"string","description":"Customer Asset Id1."},"sourceSysAssetId":{"type":"string","description":"Source Sys Asset Id."},"assetName":{"type":"string","description":"Asset name."},"assetTypeId":{"type":"integer","description":"Asset type id."},"type":{"type":"string","description":"Type discriminator."},"make":{"type":"string","description":"Make."},"model":{"type":"string","description":"Model."}}},"hierarchy":{"type":"object","properties":{"locationHierarchyL1":{"type":"string","description":"Location Hierarchy L1."},"productHierarchyL1":{"type":"string","description":"Product Hierarchy L1."}}},"operation":{"type":"object","properties":{"status1":{"type":"string","description":"Status1."},"scheduleStartDateTime":{"type":"string","format":"date-time","description":"Schedule Start Date Time."},"scheduleEndDateTime":{"type":"string","format":"date-time","description":"Schedule End Date Time."},"startDate":{"type":"string","format":"date-time","description":"Start Date."},"expectedTermDate":{"type":"string","format":"date-time","description":"Expected Term Date."},"adjustedTermDate":{"type":"string","format":"date-time","description":"Adjusted Term Date."}}},"servicing":{"type":"object","properties":{"serviceScheduleId":{"type":"string","description":"Service Schedule Id."},"lastServiceDate":{"type":"string","description":"Last Service Date."},"nextServiceDate":{"type":"string","description":"Next Service Date."}}},"finance":{"type":"object","properties":{"purchaseDate":{"type":"string","description":"Purchase Date."},"warrantyExpiryDate":{"type":"string","description":"Warranty Expiry Date."}}},"utilisation":{"type":"object","properties":{"financeUtilisation":{"type":"number","description":"Finance Utilisation."}}},"variables":{"type":"object","properties":{"variable1":{"type":"string","description":"Variable1."}}}}},"systemFlags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the record is enabled."},"geofencingEnabled":{"type":"boolean","description":"Geofencing Enabled."}}},"perspio_configuration":{"type":"object","properties":{"ingressIndex":{"type":"integer","description":"Ingress Index."},"latitude":{"type":"number","description":"Latitude."},"longitude":{"type":"number","description":"Longitude."}}},"schema":{"type":"array","items":{"type":"object","properties":{"propertyPath":{"type":"string","description":"Property Path."},"datatype":{"type":"string","description":"Datatype."}}}},"sync_status":{"type":"object","properties":{"speed":{"type":"object","properties":{"timeStamp":{"type":"string","description":"Time Stamp."},"pipelineId":{"type":"string","description":"Pipeline id."}}}}}}},"example":{"id":"asset-12345","payload":{"assetInfo":{"assetId":"A-001","customerAssetId":"CUST-1001","customerAssetId1":"CUST-1001-ALT","sourceSysAssetId":null,"sourceSysAssetId1":null,"assetName":"Excavator 3000","assetTypeId":5,"size":null,"type":"Heavy Machinery","category":"Excavators","make":"Caterpillar","model":"CAT320D","serialNumber":null,"regoNumber":null,"regoState":null,"regoExpiry":null,"licencePlateType":null,"manufacturedDate":null},"hierarchy":{"locationHierarchyL1":"Australia","locationHierarchyL2":"Queensland","locationHierarchyL3":"Brisbane","productHierarchyL1":"Construction Equipment","productHierarchyL2":"Excavators","productHierarchyL3":"CAT Models","operationalHierarchyL1":"Operations Division","operationalHierarchyL2":"East Region","operationalHierarchyL3":"Brisbane Ops"},"operation":{"status1":"Active","status2":null,"status3":null,"status4":null,"hireContractId":null,"hireStatus":null,"reservationNo":null,"branchName":null,"customerName":null,"scheduleStartDateTime":"2025-06-01T08:00:00Z","scheduleEndDateTime":"2025-06-30T17:00:00Z","siteContact":null,"siteContactEmail":null,"siteAddress":null,"siteContactMobile":null,"customerType":null,"siteDaysOpenPerWeek":null,"chargePeriod":null,"notes":null,"hireContractLineId":null,"lineStatus":null,"startDate":"2025-01-01T00:00:00Z","expectedTermDate":"2026-01-01T00:00:00Z","adjustedTermDate":"2026-01-15T00:00:00Z"},"contacts":{"contact1Name":"John Doe","contact1Phone":null,"contact1Email":null,"contact1ObjectLink1":null,"contact2Name":null,"contact2Phone":null,"contact2Email":null,"contact2ObjectLink1":null,"contact3Name":null,"contact3Phone":null,"contact3Email":null,"contact3ObjectLink1":null,"contact4Name":null,"contact4Phone":null,"contact4Email":null,"contact4ObjectLink1":null,"contact5Name":null,"contact5Phone":null,"contact5Email":null,"contact5ObjectLink1":null,"compliance":{"ropsNumber":null}},"servicing":{"serviceScheduleId":"SCH-001","lastServiceMeter":"1500","scheduleName":"Quarterly Maintenance","nextServiceMeter":"2000","scheduleInterval":"500","scheduleType":"Distance","lastServiceDate":"2025-02-28T13:00:00Z","nextServiceDate":"2025-05-31T14:00:00Z","NextServiceDaysUntil":10,"LastServiceDaysSince":90,"serviceScheduleId1":null,"lastServiceMeter1":null,"scheduleName1":null,"nextServiceMeter1":"2500","scheduleInterval1":null,"scheduleType1":null,"lastServiceDate1":"2025-02-01","nextServiceDate1":"2025-05-01","NextServiceDaysUntil1":null,"LastServiceDaysSince1":null,"serviceScheduleId2":null,"lastServiceMeter2":null,"scheduleName2":null,"nextServiceMeter2":"3000","scheduleInterval2":null,"scheduleType2":null,"lastServiceDate2":"2024-12-01","nextServiceDate2":"2025-03-01","NextServiceDaysUntil2":null,"LastServiceDaysSince2":null,"serviceScheduleId3":null,"lastServiceMeter3":null,"scheduleName3":null,"nextServiceMeter3":null,"scheduleInterval3":null,"scheduleType3":null,"lastServiceDate3":"2024-09-01","nextServiceDate3":"2024-12-01","NextServiceDaysUntil3":null,"LastServiceDaysSince3":null},"finance":{"replacementValue":null,"purchaseDate":"2020-01-01T00:00:00Z","warrantyExpiryDate":"2023-12-31T00:00:00Z","extendedWarrantyExpiryDate":"2024-12-31","purchasePrice":null},"utilisation":{"financeUtilisation":0.75,"timeUtilisation":null},"variables":{"variable1":null,"variable2":null,"variable3":null,"variable4":null}},"systemFlags":{"encodedSystemFlags":123456,"enabled":true,"customCountersEnabled":true,"geofencingEnabled":true,"tollEnabled":true,"regionGeofencingEnabled":true,"weatherGeofencingEnabled":true,"tripsEnabled":true,"computeOdometerEnabled":true,"computeRunhoursEnabled":true,"computeFuelUsedEnabled":true,"notificationsEnabled":true,"systemFlagsEnabled":true,"workflowsEnabled":true,"validated":true},"perspio_configuration":{"ingressIndex":1,"schemaDefinition":"default-schema","isLatLonOverrideEnabled":true,"isActive":true,"markerChoice":"circle","markerType":2,"color":null,"latitude":-27.4705,"longitude":153.026,"timeZone":null,"tollClass":"Class A","counter":{"perspioCounter1":null,"perspioCounter2":null,"perspioCounter3":null},"workingHours":{"profile1":null},"debug":null},"schema":[{"propertyPath":"payload.assetInfo.assetId","friendlyPropertyPath":"Asset ID","property":"assetId","title":"Asset Identifier","description":"Unique identifier for the asset","visible":true,"datatype":"value","sectionName":"Asset Info","sectionTitle":"Asset Information","sectionOrder":1,"order":1}],"sync_status":{"speed":{"timeStamp":"2025-06-19T15:00:00Z","pipelineId":"pipeline-01"},"outsideAirTemp":{"timeStamp":"2025-06-19T15:05:00Z","pipelineId":"pipeline-02"},"crankingVoltage":{"timeStamp":"2025-06-19T14:55:00Z","pipelineId":"pipeline-03"},"heading":{"timeStamp":"2025-06-19T15:10:00Z","pipelineId":"pipeline-01"},"payload.hierarchy.productHierarchyL1":{"timeStamp":"2025-06-19T15:12:00Z","pipelineId":"pipeline-02"},"odometer":{"timeStamp":"2025-06-19T15:00:00Z","pipelineId":"pipeline-01"},"lastLocatedEpoch":{"timeStamp":"2025-06-19T14:59:00Z","pipelineId":"pipeline-04"},"lastCommunicatedEpoch":{"timeStamp":"2025-06-19T15:00:00Z","pipelineId":"pipeline-04"},"markerData":{"timeStamp":"2025-06-19T15:03:00Z","pipelineId":"pipeline-05"},"payload.assetInfo.regoExpiry":{"timeStamp":"2025-06-19T15:05:00Z","pipelineId":"pipeline-02"},"payload.hierarchy.operationalHierarchyL1":{"timeStamp":"2025-06-19T15:06:00Z","pipelineId":"pipeline-02"},"active":{"timeStamp":"2025-06-19T15:07:00Z","pipelineId":"pipeline-01"},"insideGeofences":{"timeStamp":"2025-06-19T15:08:00Z","pipelineId":"pipeline-03"},"externalBatteryVoltage":{"timeStamp":"2025-06-19T15:09:00Z","pipelineId":"pipeline-04"}}}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Devices.DevicesApi.GetDeviceInfo","errorType":"ArgumentException","statusCode":400,"request":"GET /api/assets/infoV2/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Devices.DevicesApi.GetDeviceInfo","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/assets/infoV2/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"patch":{"tags":["Details"],"summary":"Update Asset Info","description":"Update master data of an asset.","operationId":"updateAssetInfo","parameters":[{"name":"id","in":"path","description":"Asset ID","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."},{"name":"forceUpdate","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, apply the update even if it would normally be rejected as a no-op or conflict."}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAssetInfo-RequestObject"},"example":[{"op":"replace","path":"/payload/utilisation/financeUtilisation","value":"12345"},{"op":"replace","path":"/payload/rental/hireStatus","value":"ON HIRE"},{"op":"replace","path":"/payload/assetInfo/model","value":"New Model"},{"op":"replace","path":"/payload/assetInfo/make","value":"Test New Value"},{"op":"replace","path":"/payload/assetInfo/assetName","value":"CG-0020-00596 TEST"}]}}},"responses":{"200":{"description":"The request was applied."},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetMasterApi.UpdateAssetMaster","errorType":"ArgumentException","statusCode":400,"request":"PATCH /api/assets/infoV2/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetMasterApi.UpdateAssetMaster","errorType":"NullReferenceException","statusCode":500,"request":"PATCH /api/assets/infoV2/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/hierarchies":{"get":{"tags":["Details"],"summary":"Get Asset Tenant Hierarchies","description":"Fetch asset tenant hierarchies.","operationId":"getAssetTenantHierarchies","parameters":[{"name":"x-perspio-filter","in":"header","description":"Global data filter (JSON-serialised) scoping results to matching assets. Optional keys, each an array of strings: locationHierarchyL1..L3, productHierarchyL1..L3, operationalHierarchyL1..L3, groupIds; plus boolean 'enabled'. Omit for no additional filtering (security-group scoping always applies). Example: {\"locationHierarchyL1\":[\"NSW\"],\"enabled\":true}","required":false,"schema":{"type":"string"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"locationHierarchyL1":{"type":"array","items":{"type":"string"},"description":"Location-hierarchy values at level 1 for the tenant’s assets."},"productHierarchyL1":{"type":"array","items":{"type":"string"},"description":"Product-hierarchy values at level 1 for the tenant’s assets."},"operationalHierarchyL1":{"type":"array","items":{"type":"string"},"description":"Operational-hierarchy values at level 1 for the tenant’s assets."},"locationHierarchyL2":{"type":"array","items":{"type":"string"},"description":"Location-hierarchy values at level 2 for the tenant’s assets."},"productHierarchyL2":{"type":"array","items":{"type":"string"},"description":"Product-hierarchy values at level 2 for the tenant’s assets."},"operationalHierarchyL2":{"type":"array","items":{"type":"string"},"description":"Operational-hierarchy values at level 2 for the tenant’s assets."},"locationHierarchyL3":{"type":"array","items":{"type":"string"},"description":"Location-hierarchy values at level 3 for the tenant’s assets."},"productHierarchyL3":{"type":"array","items":{"type":"string"},"description":"Product-hierarchy values at level 3 for the tenant’s assets."},"operationalHierarchyL3":{"type":"array","items":{"type":"string"},"description":"Operational-hierarchy values at level 3 for the tenant’s assets."}}},"example":{"locationHierarchyL1":["Region A","Region B"],"productHierarchyL1":["Truck","Forklift"],"operationalHierarchyL1":["Manufacturing","Distribution"],"locationHierarchyL2":["City X","City Y"],"productHierarchyL2":["Tyler","Tulsa"],"operationalHierarchyL2":["Assembly Line 1","Warehouse 2"],"locationHierarchyL3":["Site 101","Site 202"],"productHierarchyL3":["Model A1","Model B2"],"operationalHierarchyL3":["Shift A","Shift B"]}}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetsHierarchy","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/assetsV2/tenant/hierarchies","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/types":{"get":{"tags":["Details"],"summary":"Get Asset Types","description":"Fetch asset types. Operates on asset types in the current tenant.","operationId":"getAssetTypes","parameters":[{"name":"enriched","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, return enriched asset types (with resolved schema/relations)."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssetType2"}},"examples":{"default":{"$ref":"#/components/examples/AssetTypeListExample"}}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"examples":{"default":{"$ref":"#/components/examples/PerspioErrorExample"}}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"examples":{"default":{"$ref":"#/components/examples/PerspioErrorExample"}}}}}}},"post":{"tags":["Details"],"summary":"Create Asset Type","description":"Create Asset Type. Operates on asset type in the current tenant.","operationId":"createAssetType","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetSchemaCreateRequest"},"examples":{"default":{"$ref":"#/components/examples/AssetSchemaCreateRequestExample"}}}}},"responses":{"200":{"description":"The request was applied.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetType2"},"examples":{"default":{"$ref":"#/components/examples/AssetTypeExample"}}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"examples":{"default":{"$ref":"#/components/examples/PerspioErrorExample"}}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"examples":{"default":{"$ref":"#/components/examples/PerspioErrorExample"}}}}}}}},"/types/{id}":{"get":{"tags":["Details"],"summary":"Get Asset Type","description":"Fetch type of an asset. Operates on asset type in the current tenant.","operationId":"getAssetType","parameters":[{"name":"id","in":"path","description":"Perspio Asset Type ID.\n\n| ID | Type      |\n|----|-----------|\n| 1  | Vehicle     |\n| 6  | Refrigerated Truck   |\n| 14  | Tank   |\n| 62  | ArmoredTruck  |\n| 72  | PumpTruck | ","required":true,"schema":{"type":"string"}},{"name":"enriched","in":"query","description":"Include Asset Schema","schema":{"type":"boolean","default":true}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetType2"},"examples":{"default":{"$ref":"#/components/examples/AssetTypeExample"}}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"examples":{"default":{"$ref":"#/components/examples/PerspioErrorExample"}}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"examples":{"default":{"$ref":"#/components/examples/PerspioErrorExample"}}}}}}},"put":{"tags":["Details"],"summary":"Update Asset Type","description":"Update Asset Type. Operates on asset type in the current tenant.","operationId":"updateAssetType","parameters":[{"name":"id","in":"path","description":"Perspio Asset Type ID.\n\n| ID | Type      |\n|----|-----------|\n| 1  | Vehicle     |\n| 6  | Refrigerated Truck   |\n| 14  | Tank   |\n| 62  | ArmoredTruck  |\n| 72  | PumpTruck | ","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetType2"},"examples":{"default":{"$ref":"#/components/examples/AssetTypeExample"}}}}},"responses":{"200":{"description":"The request was applied.","content":{"application/json":{"schema":{"type":"object","required":["statusUrl"],"properties":{"statusUrl":{"type":"string","format":"uri","description":"Status Url."}}},"examples":{"default":{"$ref":"#/components/examples/DeleteAssetTypeResponseExample"}}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"examples":{"default":{"$ref":"#/components/examples/PerspioErrorExample"}}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"examples":{"default":{"$ref":"#/components/examples/PerspioErrorExample"}}}}}}},"delete":{"tags":["Details"],"summary":"Delete Asset Type","description":"Delete Asset Type. Operates on asset type in the current tenant.","operationId":"deleteAssetType","parameters":[{"name":"id","in":"path","description":"Perspio Asset Type ID.\n\n| ID | Type      |\n|----|-----------|\n| 1  | Vehicle     |\n| 6  | Refrigerated Truck   |\n| 14  | Tank   |\n| 62  | ArmoredTruck  |\n| 72  | PumpTruck | ","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The delete was applied.","content":{"application/json":{"schema":{"type":"object","required":["statusUrl"],"properties":{"statusUrl":{"type":"string","format":"uri","description":"Status Url."}}},"examples":{"default":{"$ref":"#/components/examples/DeleteAssetTypeResponseExample"}}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"examples":{"default":{"$ref":"#/components/examples/PerspioErrorExample"}}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"examples":{"default":{"$ref":"#/components/examples/PerspioErrorExample"}}}}}}}},"/{id}/schema":{"get":{"tags":["Details"],"summary":"Get Asset Schema","description":"Fetch the schema of an asset.","operationId":"getAssetSchema","parameters":[{"name":"id","in":"path","description":"Asset ID","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"}},"example":{"key":{}}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetSchemaById","errorType":"ArgumentException","statusCode":400,"request":"GET /api/assetsV2/in-000020/schema","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetSchemaById","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/assetsV2/in-000020/schema","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/assetMasterSchema":{"get":{"tags":["Details"],"summary":"Get Asset Master Schema","description":"Retrieve the asset master schema definition for a tenant.","operationId":"getAssetMasterSchema","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"}},"example":{"payload":{"assetInfo":{"assetId":null,"customerAssetId":null,"customerAssetId1":null,"sourceSysAssetId":null,"sourceSysAssetId1":null,"assetName":null,"assetTypeId":0,"size":null,"type":null,"category":null,"make":null,"model":null,"serialNumber":null,"regoNumber":null,"regoState":null,"regoExpiry":"0001-01-01T00:00:00","licencePlateType":null,"manufacturedDate":null},"hierarchy":{"locationHierarchyL1":null,"locationHierarchyL2":null,"locationHierarchyL3":null,"productHierarchyL1":null,"productHierarchyL2":null,"productHierarchyL3":null,"operationalHierarchyL1":null,"operationalHierarchyL2":null,"operationalHierarchyL3":null},"operation":{"status1":null,"status2":null,"status3":null,"status4":null,"hireContractId":null,"hireStatus":null,"reservationNo":null,"branchName":null,"customerName":null,"scheduleStartDateTime":"0001-01-01T00:00:00","scheduleEndDateTime":"0001-01-01T00:00:00","siteContact":null,"siteContactEmail":null,"siteAddress":null,"siteContactMobile":null,"customerType":null,"siteDaysOpenPerWeek":null,"chargePeriod":null,"notes":null,"hireContractLineId":null,"lineStatus":null,"startDate":"0001-01-01T00:00:00","expectedTermDate":"0001-01-01T00:00:00","adjustedTermDate":"0001-01-01T00:00:00"},"contacts":{"contact1Name":null,"contact1Phone":null,"contact1Email":null,"contact1ObjectLink1":null,"contact2Name":null,"contact2Phone":null,"contact2Email":null,"contact2ObjectLink1":null,"contact3Name":null,"contact3Phone":null,"contact3Email":null,"contact3ObjectLink1":null,"contact4Name":null,"contact4Phone":null,"contact4Email":null,"contact4ObjectLink1":null,"contact5Name":null,"contact5Phone":null,"contact5Email":null,"contact5ObjectLink1":null,"compliance":{"ropsNumber":null}},"servicing":{"serviceScheduleId":null,"lastServiceMeter":null,"scheduleName":null,"nextServiceMeter":null,"scheduleInterval":null,"scheduleType":null,"lastServiceDate":"0001-01-01T00:00:00","nextServiceDate":"0001-01-01T00:00:00","nextServiceDaysUntil":null,"lastServiceDaysSince":null,"serviceScheduleId1":null,"lastServiceMeter1":null,"scheduleName1":null,"nextServiceMeter1":null,"scheduleInterval1":null,"scheduleType1":null,"lastServiceDate1":"0001-01-01T00:00:00","nextServiceDate1":"0001-01-01T00:00:00","nextServiceDaysUntil1":null,"lastServiceDaysSince1":null,"serviceScheduleId2":null,"lastServiceMeter2":null,"scheduleName2":null,"nextServiceMeter2":null,"scheduleInterval2":null,"scheduleType2":null,"lastServiceDate2":"0001-01-01T00:00:00","nextServiceDate2":"0001-01-01T00:00:00","nextServiceDaysUntil2":null,"lastServiceDaysSince2":null,"serviceScheduleId3":null,"lastServiceMeter3":null,"scheduleName3":null,"nextServiceMeter3":null,"scheduleInterval3":null,"scheduleType3":null,"lastServiceDate3":"0001-01-01T00:00:00","nextServiceDate3":"0001-01-01T00:00:00","nextServiceDaysUntil3":null,"lastServiceDaysSince3":null},"finance":{"replacementValue":null,"purchaseDate":"0001-01-01T00:00:00","warrantyExpiryDate":"0001-01-01T00:00:00","extendedWarrantyExpiryDate":"0001-01-01T00:00:00","purchasePrice":null},"servicePrograms":null,"groupIds":null,"utilisation":{"financeUtilisation":null,"timeUtilisation":null},"variables":{"variable1":null,"variable2":null,"variable3":null,"variable4":null}},"schema":{"schema":[{"propertyPath":"payload.assetInfo.assetId","friendlyPropertyPath":"Asset Info:AssetId","property":"assetId","title":"Asset ID","description":"Asset Info:Asset ID","visible":true,"datatype":"value","sectionName":"Ids","sectionTitle":"Ids","sectionOrder":0,"order":0},{"propertyPath":"payload.assetInfo.assetName","friendlyPropertyPath":"Asset Info:AssetName","property":"assetName","title":"Asset Name","description":"Asset Info:Asset Name","visible":true,"datatype":"value","sectionName":"Description","sectionTitle":"Description","sectionOrder":0,"order":0},{"propertyPath":"payload.assetInfo.assetTypeId","friendlyPropertyPath":"Asset Info:AssetTypeId","property":"assetTypeId","title":"Category","description":"Asset Info:Category","visible":true,"datatype":"integer","sectionName":"Ids","sectionTitle":"Ids","sectionOrder":0,"order":0},{"propertyPath":"payload.assetInfo.category","friendlyPropertyPath":"Asset Info:Category","property":"category","title":"Category","description":"Asset Info:Category","visible":true,"datatype":"value","sectionName":"Description","sectionTitle":"Description","sectionOrder":0,"order":0},{"propertyPath":"payload.assetInfo.customerAssetId","friendlyPropertyPath":"Asset Info:CustomerAssetId","property":"customerAssetId","title":"Customer Asset Id","description":"Asset Info:Customer Asset Id","visible":true,"datatype":"value","sectionName":"Ids","sectionTitle":"Ids","sectionOrder":0,"order":0},{"propertyPath":"payload.assetInfo.customerAssetId1","friendlyPropertyPath":"Asset Info:CustomerAssetId1","property":"customerAssetId1","title":"cust id","description":"Asset Info:cust id","visible":true,"datatype":"value","sectionName":"Ids","sectionTitle":"Ids","sectionOrder":0,"order":0},{"propertyPath":"payload.assetInfo.licencePlateType","friendlyPropertyPath":"Asset Info:LicencePlateType","property":"licencePlateType","title":"Plate Type","description":"Asset Info:Plate Type","visible":true,"datatype":"value","sectionName":"Registration","sectionTitle":"Registration","sectionOrder":0,"order":0},{"propertyPath":"payload.assetInfo.make","friendlyPropertyPath":"Asset Info:Make","property":"make","title":"Make","description":"Asset Info:Make","visible":true,"datatype":"value","sectionName":"Description","sectionTitle":"Description","sectionOrder":0,"order":0},{"propertyPath":"payload.assetInfo.manufacturedDate","friendlyPropertyPath":"Asset Info:ManufacturedDate","property":"manufacturedDate","title":"Manufactured Date","description":"Asset Info:Manufactured Date","visible":true,"datatype":"value","sectionName":"Description","sectionTitle":"Description","sectionOrder":0,"order":0},{"propertyPath":"payload.assetInfo.model","friendlyPropertyPath":"Asset Info:Model","property":"model","title":"Model","description":"Asset Info:Model","visible":true,"datatype":"value","sectionName":"Description","sectionTitle":"Description","sectionOrder":0,"order":0},{"propertyPath":"payload.assetInfo.regoExpiry","friendlyPropertyPath":"Asset Info:RegoExpiry","property":"regoExpiry","title":"Rego Expiry","description":"Asset Info:Rego Expiry","visible":true,"datatype":"datetime","sectionName":"Registration","sectionTitle":"Registration","sectionOrder":0,"order":0},{"propertyPath":"payload.assetInfo.regoNumber","friendlyPropertyPath":"Asset Info:RegoNumber","property":"regoNumber","title":"Rego Number","description":"Asset Info:Rego Number","visible":true,"datatype":"value","sectionName":"Registration","sectionTitle":"Registration","sectionOrder":0,"order":0},{"propertyPath":"payload.assetInfo.regoState","friendlyPropertyPath":"Asset Info:RegoState","property":"regoState","title":"Rego State","description":"Asset Info:Rego State","visible":true,"datatype":"value","sectionName":"Registration","sectionTitle":"Registration","sectionOrder":0,"order":0},{"propertyPath":"payload.assetInfo.serialNumber","friendlyPropertyPath":"Asset Info:SerialNumber","property":"serialNumber","title":"Serial Number","description":"Asset Info:Serial Number","visible":false,"datatype":"value","sectionName":"Ids","sectionTitle":"Ids","sectionOrder":0,"order":0},{"propertyPath":"payload.assetInfo.size","friendlyPropertyPath":"Asset Info:Size","property":"size","title":"Size","description":"Asset Info:Size","visible":true,"datatype":"value","sectionName":"Description","sectionTitle":"Description","sectionOrder":0,"order":0},{"propertyPath":"payload.assetInfo.sourceSysAssetId","friendlyPropertyPath":"Asset Info:SourceSysAssetId","property":"sourceSysAssetId","title":"Source Sys Asset Id","description":"Asset Info:Source Sys Asset Id","visible":true,"datatype":"value","sectionName":"Ids","sectionTitle":"Ids","sectionOrder":0,"order":0},{"propertyPath":"payload.assetInfo.sourceSysAssetId1","friendlyPropertyPath":"Asset Info:SourceSysAssetId1","property":"sourceSysAssetId1","title":"Source Sys Asset Id 1","description":"Asset Info:Source Sys Asset Id 1","visible":false,"datatype":"value","sectionName":"Ids","sectionTitle":"Ids","sectionOrder":0,"order":0},{"propertyPath":"payload.assetInfo.type","friendlyPropertyPath":"Asset Info:Type","property":"type","title":"Type1","description":"Asset Info:Type1","visible":true,"datatype":"value","sectionName":"Description","sectionTitle":"Description","sectionOrder":0,"order":0},{"propertyPath":"payload.contacts.compliance.ropsNumber","friendlyPropertyPath":"Contacts:Compliance:RopsNumber","property":"ropsNumber","title":"Contact Email","description":"Contacts:Contact Email","visible":true,"datatype":"value","sectionName":"Operation","sectionTitle":"Operation","sectionOrder":0,"order":0},{"propertyPath":"payload.contacts.contact1Email","friendlyPropertyPath":"Contacts:Contact1Email","property":"contact1Email","title":"Contact1 Email","description":"Contacts:Contact1 Email","visible":true,"datatype":"value","sectionName":"Contacts1","sectionTitle":"Contacts 1","sectionOrder":0,"order":0},{"propertyPath":"payload.contacts.contact1Name","friendlyPropertyPath":"Contacts:Contact1Name","property":"contact1Name","title":"Contact1 Name","description":"Contacts:Contact1 Name","visible":true,"datatype":"value","sectionName":"Contacts1","sectionTitle":"Contacts 1","sectionOrder":0,"order":0},{"propertyPath":"payload.contacts.contact1ObjectLink1","friendlyPropertyPath":"Contacts:Contact1ObjectLink1","property":"contact1ObjectLink1","title":"Contact1 Object Link 1","description":"Contacts:Contact1 Object Link 1","visible":true,"datatype":"value","sectionName":"Contacts1","sectionTitle":"Contacts 1","sectionOrder":0,"order":0},{"propertyPath":"payload.contacts.contact1Phone","friendlyPropertyPath":"Contacts:Contact1Phone","property":"contact1Phone","title":"Contact1 Phone","description":"Contacts:Contact1 Phone","visible":true,"datatype":"value","sectionName":"Contacts1","sectionTitle":"Contacts 1","sectionOrder":0,"order":0},{"propertyPath":"payload.contacts.contact2Email","friendlyPropertyPath":"Contacts:Contact2Email","property":"contact2Email","title":"Contact2 Email","description":"Contacts:Contact2 Email","visible":true,"datatype":"value","sectionName":"Contacts2","sectionTitle":"Contacts 2","sectionOrder":0,"order":0},{"propertyPath":"payload.contacts.contact2Name","friendlyPropertyPath":"Contacts:Contact2Name","property":"contact2Name","title":"Contact2 Name","description":"Contacts:Contact2 Name","visible":true,"datatype":"value","sectionName":"Contacts2","sectionTitle":"Contacts 2","sectionOrder":0,"order":0},{"propertyPath":"payload.contacts.contact2ObjectLink1","friendlyPropertyPath":"Contacts:Contact2ObjectLink1","property":"contact2ObjectLink1","title":"Contact2 Object Link 1","description":"Contacts:Contact2 Object Link 1","visible":true,"datatype":"value","sectionName":"Contacts2","sectionTitle":"Contacts 2","sectionOrder":0,"order":0},{"propertyPath":"payload.contacts.contact2Phone","friendlyPropertyPath":"Contacts:Contact2Phone","property":"contact2Phone","title":"Contact2 Phone","description":"Contacts:Contact2 Phone","visible":true,"datatype":"value","sectionName":"Contacts2","sectionTitle":"Contacts 2","sectionOrder":0,"order":0},{"propertyPath":"payload.contacts.contact3Email","friendlyPropertyPath":"Contacts:Contact3Email","property":"contact3Email","title":"Contact3 Email","description":"Contacts:Contact3 Email","visible":true,"datatype":"value","sectionName":"Contacts3","sectionTitle":"Contacts 3","sectionOrder":0,"order":0},{"propertyPath":"payload.contacts.contact3Name","friendlyPropertyPath":"Contacts:Contact3Name","property":"contact3Name","title":"Contact3 Name","description":"Contacts:Contact3 Name","visible":true,"datatype":"value","sectionName":"Contacts3","sectionTitle":"Contacts 3","sectionOrder":0,"order":0},{"propertyPath":"payload.contacts.contact3ObjectLink1","friendlyPropertyPath":"Contacts:Contact3ObjectLink1","property":"contact3ObjectLink1","title":"new","description":"Contacts:new","visible":true,"datatype":"value","sectionName":"Contacts3","sectionTitle":"Contacts 3","sectionOrder":0,"order":0},{"propertyPath":"payload.contacts.contact3Phone","friendlyPropertyPath":"Contacts:Contact3Phone","property":"contact3Phone","title":"Contact3 Phone","description":"Contacts:Contact3 Phone","visible":true,"datatype":"value","sectionName":"Contacts3","sectionTitle":"Contacts 3","sectionOrder":0,"order":0},{"propertyPath":"payload.contacts.contact4Email","friendlyPropertyPath":"Contacts:Contact4Email","property":"contact4Email","title":"Contact4 Email","description":"Contacts:Contact4 Email","visible":true,"datatype":"value","sectionName":"Contacts4","sectionTitle":"Contacts 4","sectionOrder":0,"order":0},{"propertyPath":"payload.contacts.contact4Name","friendlyPropertyPath":"Contacts:Contact4Name","property":"contact4Name","title":"Contact4 Name","description":"Contacts:Contact4 Name","visible":true,"datatype":"value","sectionName":"Contacts4","sectionTitle":"Contacts 4","sectionOrder":0,"order":0},{"propertyPath":"payload.contacts.contact4ObjectLink1","friendlyPropertyPath":"Contacts:Contact4ObjectLink1","property":"contact4ObjectLink1","title":"Contact4 Object Link 1","description":"Contacts:Contact4 Object Link 1","visible":true,"datatype":"value","sectionName":"Contacts4","sectionTitle":"Contacts 4","sectionOrder":0,"order":0},{"propertyPath":"payload.contacts.contact4Phone","friendlyPropertyPath":"Contacts:Contact4Phone","property":"contact4Phone","title":"Contact4 Mobile","description":"Contacts:Contact4 Mobile","visible":true,"datatype":"value","sectionName":"Contacts4","sectionTitle":"Contacts 4","sectionOrder":0,"order":0},{"propertyPath":"payload.contacts.contact5Email","friendlyPropertyPath":"Contacts:Contact5Email","property":"contact5Email","title":"Contact5 Email","description":"Contacts:Contact5 Email","visible":true,"datatype":"value","sectionName":"Contacts5","sectionTitle":"Contacts 5","sectionOrder":0,"order":0},{"propertyPath":"payload.contacts.contact5Name","friendlyPropertyPath":"Contacts:Contact5Name","property":"contact5Name","title":"Contact5 Name","description":"Contacts:Contact5 Name","visible":true,"datatype":"value","sectionName":"Contacts5","sectionTitle":"Contacts 5","sectionOrder":0,"order":0},{"propertyPath":"payload.contacts.contact5ObjectLink1","friendlyPropertyPath":"Contacts:Contact5ObjectLink1","property":"contact5ObjectLink1","title":"Contact5 Object Link 1","description":"Contacts:Contact5 Object Link 1","visible":true,"datatype":"value","sectionName":"Contacts5","sectionTitle":"Contacts 5","sectionOrder":0,"order":0},{"propertyPath":"payload.contacts.contact5Phone","friendlyPropertyPath":"Contacts:Contact5Phone","property":"contact5Phone","title":"Contact5 Phone","description":"Contacts:Contact5 Phone","visible":true,"datatype":"value","sectionName":"Contacts5","sectionTitle":"Contacts 5","sectionOrder":0,"order":0},{"propertyPath":"payload.contacts.notes","friendlyPropertyPath":"Contacts:Notes","property":"notes","title":"Notes","description":"Contacts:Notes","visible":true,"datatype":"value","sectionName":"Registration","sectionTitle":"Registration","sectionOrder":0,"order":0},{"propertyPath":"payload.finance.extendedWarrantyExpiryDate","friendlyPropertyPath":"Finance:ExtendedWarrantyExpiryDate","property":"extendedWarrantyExpiryDate","title":"Extended Warranty Expiry Date","description":"Finance:Extended Warranty Expiry Date","visible":true,"datatype":"datetime","sectionName":"Finance","sectionTitle":"Finance","sectionOrder":0,"order":0},{"propertyPath":"payload.finance.purchaseDate","friendlyPropertyPath":"Finance:PurchaseDate","property":"purchaseDate","title":"Purchase Date7","description":"Finance:Purchase Date7","visible":true,"datatype":"datetime","sectionName":"Finance","sectionTitle":"Finance","sectionOrder":0,"order":0},{"propertyPath":"payload.finance.purchasePrice","friendlyPropertyPath":"Finance:PurchasePrice","property":"purchasePrice","title":"Purchase Price","description":"Finance:Purchase Price","visible":true,"datatype":"double","sectionName":"Finance","sectionTitle":"Finance","sectionOrder":0,"order":0},{"propertyPath":"payload.finance.replacementValue","friendlyPropertyPath":"Finance:ReplacementValue","property":"replacementValue","title":"Replacement Value","description":"Finance:Replacement Value","visible":true,"datatype":"double","sectionName":"Finance","sectionTitle":"Finance","sectionOrder":0,"order":0},{"propertyPath":"payload.finance.warrantyExpiryDate","friendlyPropertyPath":"Finance:WarrantyExpiryDate","property":"warrantyExpiryDate","title":"Warranty Expiry Date","description":"Finance:Warranty Expiry Date","visible":true,"datatype":"datetime","sectionName":"Finance","sectionTitle":"Finance","sectionOrder":0,"order":0},{"propertyPath":"payload.hierarchy.locationHierarchyL1","friendlyPropertyPath":"Hierarchy:LocationHierarchyL1","property":"locationHierarchyL1","title":"Country99","description":"Hierarchy:Country99","visible":true,"datatype":"value","sectionName":"location","sectionTitle":"Location","sectionOrder":0,"order":0},{"propertyPath":"payload.hierarchy.locationHierarchyL2","friendlyPropertyPath":"Hierarchy:LocationHierarchyL2","property":"locationHierarchyL2","title":"State","description":"Hierarchy:State","visible":true,"datatype":"value","sectionName":"location","sectionTitle":"Location","sectionOrder":0,"order":0},{"propertyPath":"payload.hierarchy.locationHierarchyL3","friendlyPropertyPath":"Hierarchy:LocationHierarchyL3","property":"locationHierarchyL3","title":"City","description":"Hierarchy:City","visible":true,"datatype":"value","sectionName":"location","sectionTitle":"Location","sectionOrder":0,"order":0},{"propertyPath":"payload.hierarchy.operationalHierarchyL1","friendlyPropertyPath":"Hierarchy:OperationalHierarchyL1","property":"operationalHierarchyL1","title":"Branch2","description":"Hierarchy:Branch2","visible":true,"datatype":"value","sectionName":"Operation","sectionTitle":"Operation","sectionOrder":0,"order":0},{"propertyPath":"payload.hierarchy.operationalHierarchyL2","friendlyPropertyPath":"Hierarchy:OperationalHierarchyL2","property":"operationalHierarchyL2","title":"State","description":"Hierarchy:State","visible":true,"datatype":"value","sectionName":"Operation","sectionTitle":"Operation","sectionOrder":0,"order":0},{"propertyPath":"payload.hierarchy.operationalHierarchyL3","friendlyPropertyPath":"Hierarchy:OperationalHierarchyL3","property":"operationalHierarchyL3","title":"Country","description":"Hierarchy:Country","visible":true,"datatype":"value","sectionName":"Operation","sectionTitle":"Operation","sectionOrder":0,"order":0},{"propertyPath":"payload.hierarchy.productHierarchyL1","friendlyPropertyPath":"Hierarchy:ProductHierarchyL1","property":"productHierarchyL1","title":"Type","description":"Hierarchy:Type","visible":true,"datatype":"value","sectionName":"product","sectionTitle":"Product","sectionOrder":0,"order":0},{"propertyPath":"payload.hierarchy.productHierarchyL2","friendlyPropertyPath":"Hierarchy:ProductHierarchyL2","property":"productHierarchyL2","title":"Category","description":"Hierarchy:Category","visible":true,"datatype":"value","sectionName":"product","sectionTitle":"Product","sectionOrder":0,"order":0},{"propertyPath":"payload.hierarchy.productHierarchyL3","friendlyPropertyPath":"Hierarchy:ProductHierarchyL3","property":"productHierarchyL3","title":"Make","description":"Hierarchy:Make","visible":true,"datatype":"value","sectionName":"product","sectionTitle":"Product","sectionOrder":0,"order":0},{"propertyPath":"payload.operation.adjustedTermDate","friendlyPropertyPath":"Operation:AdjustedTermDate","property":"adjustedTermDate","title":"Adjusted Term Date","description":"Operation:Adjusted Term Date","visible":true,"datatype":"datetime","sectionName":"LineDetails","sectionTitle":"Line Details","sectionOrder":0,"order":0},{"propertyPath":"payload.operation.branchName","friendlyPropertyPath":"Operation:BranchName","property":"branchName","title":"Branch Name","description":"Operation:Branch Name","visible":true,"datatype":"value","sectionName":"HireContract","sectionTitle":"Hire Contract","sectionOrder":3,"order":0},{"propertyPath":"payload.operation.customerName","friendlyPropertyPath":"Operation:CustomerName","property":"customerName","title":"Customer Name","description":"Operation:Customer Name","visible":true,"datatype":"value","sectionName":"HireContract","sectionTitle":"Hire Contract","sectionOrder":4,"order":0},{"propertyPath":"payload.operation.customerType","friendlyPropertyPath":"Operation:CustomerType","property":"customerType","title":"Customer Type","description":"Operation:Customer Type","visible":true,"datatype":"double","sectionName":"HireContract","sectionTitle":"Hire Contract","sectionOrder":12,"order":0},{"propertyPath":"payload.operation.expectedTermDate","friendlyPropertyPath":"Operation:ExpectedTermDate","property":"expectedTermDate","title":"Expected Term Date","description":"Operation:Expected Term Date","visible":true,"datatype":"datetime","sectionName":"LineDetails","sectionTitle":"Line Details","sectionOrder":0,"order":0},{"propertyPath":"payload.operation.hireContractId","friendlyPropertyPath":"Operation:HireContractId","property":"hireContractId","title":"Hire Contract Id","description":"Operation:Hire Contract Id","visible":false,"datatype":"value","sectionName":"HireContract","sectionTitle":"Hire Contract","sectionOrder":0,"order":0},{"propertyPath":"payload.operation.hireStatus","friendlyPropertyPath":"Operation:HireStatus","property":"hireStatus","title":"Hire Contract Status","description":"Operation:Hire Contract Status","visible":true,"datatype":"value","sectionName":"HireContract","sectionTitle":"Hire Contract","sectionOrder":1,"order":0},{"propertyPath":"payload.operation.lineStatus","friendlyPropertyPath":"Operation:LineStatus","property":"lineStatus","title":"Line Status","description":"Operation:Line Status","visible":true,"datatype":"value","sectionName":"LineDetails","sectionTitle":"Line Details","sectionOrder":0,"order":0},{"propertyPath":"payload.operation.reservationNo","friendlyPropertyPath":"Operation:ReservationNo","property":"reservationNo","title":"Reservation No","description":"Operation:Reservation No","visible":true,"datatype":"value","sectionName":"HireContract","sectionTitle":"Hire Contract","sectionOrder":2,"order":0},{"propertyPath":"payload.operation.scheduleEndDateTime","friendlyPropertyPath":"Operation:ScheduleEndDateTime","property":"scheduleEndDateTime","title":"Schedule End Datetime","description":"Operation:Schedule End Datetime","visible":true,"datatype":"datetime","sectionName":"HireContract","sectionTitle":"Hire Contract","sectionOrder":6,"order":0},{"propertyPath":"payload.operation.scheduleStartDateTime","friendlyPropertyPath":"Operation:ScheduleStartDateTime","property":"scheduleStartDateTime","title":"Schedule Start Datetime","description":"Operation:Schedule Start Datetime","visible":true,"datatype":"datetime","sectionName":"HireContract","sectionTitle":"Hire Contract","sectionOrder":5,"order":0},{"propertyPath":"payload.operation.siteAddress","friendlyPropertyPath":"Operation:SiteAddress","property":"siteAddress","title":"Site Address","description":"Operation:Site Address","visible":true,"datatype":"value","sectionName":"HireContract","sectionTitle":"Hire Contract","sectionOrder":9,"order":0},{"propertyPath":"payload.operation.siteContact","friendlyPropertyPath":"Operation:SiteContact","property":"siteContact","title":"Site Contact","description":"Operation:Site Contact","visible":true,"datatype":"value","sectionName":"HireContract","sectionTitle":"Hire Contract","sectionOrder":7,"order":0},{"propertyPath":"payload.operation.siteContactEmail","friendlyPropertyPath":"Operation:SiteContactEmail","property":"siteContactEmail","title":"Site Contact Email","description":"Operation:Site Contact Email","visible":true,"datatype":"value","sectionName":"HireContract","sectionTitle":"Hire Contract","sectionOrder":11,"order":0},{"propertyPath":"payload.operation.siteContactMobile","friendlyPropertyPath":"Operation:SiteContactMobile","property":"siteContactMobile","title":"Site Contact Mobile","description":"Operation:Site Contact Mobile","visible":true,"datatype":"value","sectionName":"HireContract","sectionTitle":"Hire Contract","sectionOrder":10,"order":0},{"propertyPath":"payload.operation.siteDaysOpenPerWeek","friendlyPropertyPath":"Operation:SiteDaysOpenPerWeek","property":"siteDaysOpenPerWeek","title":"Site Days Open Per Week","description":"Operation:Site Days Open Per Week","visible":true,"datatype":"integer","sectionName":"HireContract","sectionTitle":"Hire Contract","sectionOrder":13,"order":0},{"propertyPath":"payload.operation.startDate","friendlyPropertyPath":"Operation:StartDate","property":"startDate","title":"Start Date","description":"Operation:Start Date","visible":true,"datatype":"datetime","sectionName":"LineDetails","sectionTitle":"Line Details","sectionOrder":0,"order":0},{"propertyPath":"payload.operation.status1","friendlyPropertyPath":"Operation:Status1","property":"status1","title":"Hire Status","description":"Operation:Hire Status","visible":true,"datatype":"value","sectionName":"Status","sectionTitle":"Status","sectionOrder":0,"order":0},{"propertyPath":"payload.operation.status2","friendlyPropertyPath":"Operation:Status2","property":"status2","title":"Service Status","description":"Operation:Service Status","visible":true,"datatype":"value","sectionName":"Status","sectionTitle":"Status","sectionOrder":0,"order":0},{"propertyPath":"payload.operation.status3","friendlyPropertyPath":"Operation:Status3","property":"status3","title":"Vehicle Status","description":"Operation:Vehicle Status","visible":false,"datatype":"value","sectionName":"Status","sectionTitle":"Status","sectionOrder":0,"order":0},{"propertyPath":"payload.operation.status4","friendlyPropertyPath":"Operation:Status4","property":"status4","title":"Vehicle Service Status","description":"Operation:Vehicle Service Status","visible":false,"datatype":"value","sectionName":"Status","sectionTitle":"Status","sectionOrder":0,"order":0},{"propertyPath":"payload.servicing.lastServiceDate","friendlyPropertyPath":"Servicing:LastServiceDate","property":"lastServiceDate","title":"Last Service Date","description":"Servicing:Last Service Date","visible":true,"datatype":"datetime","sectionName":"Section1","sectionTitle":"Service Schedule 1","sectionOrder":4,"order":0},{"propertyPath":"payload.servicing.lastServiceDate1","friendlyPropertyPath":"Servicing:LastServiceDate1","property":"lastServiceDate1","title":"Last Service Date","description":"Servicing:Last Service Date","visible":true,"datatype":"datetime","sectionName":"Section2","sectionTitle":"Service Schedule 2","sectionOrder":4,"order":0},{"propertyPath":"payload.servicing.lastServiceDate2","friendlyPropertyPath":"Servicing:LastServiceDate2","property":"lastServiceDate2","title":"Last Service Date","description":"Servicing:Last Service Date","visible":true,"datatype":"datetime","sectionName":"Section3","sectionTitle":"Service Schedule 3","sectionOrder":4,"order":0},{"propertyPath":"payload.servicing.lastServiceDate3","friendlyPropertyPath":"Servicing:LastServiceDate3","property":"lastServiceDate3","title":"Last Service Date","description":"Servicing:Last Service Date","visible":true,"datatype":"datetime","sectionName":"Section4","sectionTitle":"Service Schedule 4","sectionOrder":4,"order":0},{"propertyPath":"payload.servicing.lastServiceDaysSince","friendlyPropertyPath":"Servicing:LastServiceDaysSince","property":"lastServiceDaysSince","title":"Last Service Days Since","description":"Servicing:Last Service Days Since","visible":true,"datatype":"value","sectionName":"Section1","sectionTitle":"Service Schedule 1","sectionOrder":8,"order":0},{"propertyPath":"payload.servicing.lastServiceDaysSince1","friendlyPropertyPath":"Servicing:LastServiceDaysSince1","property":"lastServiceDaysSince1","title":"Last Service Days Since","description":"Servicing:Last Service Days Since","visible":true,"datatype":"value","sectionName":"Section2","sectionTitle":"Service Schedule 2","sectionOrder":8,"order":0},{"propertyPath":"payload.servicing.lastServiceDaysSince2","friendlyPropertyPath":"Servicing:LastServiceDaysSince2","property":"lastServiceDaysSince2","title":"Last Service Days Since","description":"Servicing:Last Service Days Since","visible":true,"datatype":"value","sectionName":"Section3","sectionTitle":"Service Schedule 3","sectionOrder":8,"order":0},{"propertyPath":"payload.servicing.lastServiceDaysSince3","friendlyPropertyPath":"Servicing:LastServiceDaysSince3","property":"lastServiceDaysSince3","title":"Last Service Days Since","description":"Servicing:Last Service Days Since","visible":true,"datatype":"value","sectionName":"Section4","sectionTitle":"Service Schedule 4","sectionOrder":8,"order":0},{"propertyPath":"payload.servicing.lastServiceMeter","friendlyPropertyPath":"Servicing:LastServiceMeter","property":"lastServiceMeter","title":"Last Service Meter","description":"Servicing:Last Service Meter","visible":true,"datatype":"value","sectionName":"Section1","sectionTitle":"Service Schedule 1","sectionOrder":5,"order":0},{"propertyPath":"payload.servicing.lastServiceMeter1","friendlyPropertyPath":"Servicing:LastServiceMeter1","property":"lastServiceMeter1","title":"Last Service Meter","description":"Servicing:Last Service Meter","visible":true,"datatype":"value","sectionName":"Section2","sectionTitle":"Service Schedule 2","sectionOrder":5,"order":0},{"propertyPath":"payload.servicing.lastServiceMeter2","friendlyPropertyPath":"Servicing:LastServiceMeter2","property":"lastServiceMeter2","title":"Last Service Meter","description":"Servicing:Last Service Meter","visible":true,"datatype":"value","sectionName":"Section3","sectionTitle":"Service Schedule 3","sectionOrder":5,"order":0},{"propertyPath":"payload.servicing.lastServiceMeter3","friendlyPropertyPath":"Servicing:LastServiceMeter3","property":"lastServiceMeter3","title":"Last Service Meter","description":"Servicing:Last Service Meter","visible":true,"datatype":"value","sectionName":"Section4","sectionTitle":"Service Schedule 4","sectionOrder":5,"order":0},{"propertyPath":"payload.servicing.nextServiceDate","friendlyPropertyPath":"Servicing:NextServiceDate","property":"nextServiceDate","title":"Next Service Date","description":"Servicing:Next Service Date","visible":true,"datatype":"datetime","sectionName":"Section1","sectionTitle":"Service Schedule 1","sectionOrder":6,"order":0},{"propertyPath":"payload.servicing.nextServiceDate1","friendlyPropertyPath":"Servicing:NextServiceDate1","property":"nextServiceDate1","title":"Next Service Date","description":"Servicing:Next Service Date","visible":true,"datatype":"datetime","sectionName":"Section2","sectionTitle":"Service Schedule 2","sectionOrder":6,"order":0},{"propertyPath":"payload.servicing.nextServiceDate2","friendlyPropertyPath":"Servicing:NextServiceDate2","property":"nextServiceDate2","title":"Next Service Date","description":"Servicing:Next Service Date","visible":true,"datatype":"datetime","sectionName":"Section3","sectionTitle":"Service Schedule 3","sectionOrder":6,"order":0},{"propertyPath":"payload.servicing.nextServiceDate3","friendlyPropertyPath":"Servicing:NextServiceDate3","property":"nextServiceDate3","title":"Next Service Date","description":"Servicing:Next Service Date","visible":true,"datatype":"datetime","sectionName":"Section4","sectionTitle":"Service Schedule 4","sectionOrder":6,"order":0},{"propertyPath":"payload.servicing.nextServiceDaysUntil","friendlyPropertyPath":"Servicing:NextServiceDaysUntil","property":"nextServiceDaysUntil","title":"Next Service Days Until","description":"Servicing:Next Service Days Until","visible":true,"datatype":"value","sectionName":"Section1","sectionTitle":"Service Schedule 1","sectionOrder":9,"order":0},{"propertyPath":"payload.servicing.nextServiceDaysUntil1","friendlyPropertyPath":"Servicing:NextServiceDaysUntil1","property":"nextServiceDaysUntil1","title":"Next Service Days Until","description":"Servicing:Next Service Days Until","visible":true,"datatype":"value","sectionName":"Section2","sectionTitle":"Service Schedule 2","sectionOrder":9,"order":0},{"propertyPath":"payload.servicing.nextServiceDaysUntil2","friendlyPropertyPath":"Servicing:NextServiceDaysUntil2","property":"nextServiceDaysUntil2","title":"Next Service Days Until","description":"Servicing:Next Service Days Until","visible":true,"datatype":"value","sectionName":"Section3","sectionTitle":"Service Schedule 3","sectionOrder":9,"order":0},{"propertyPath":"payload.servicing.nextServiceDaysUntil3","friendlyPropertyPath":"Servicing:NextServiceDaysUntil3","property":"nextServiceDaysUntil3","title":"Next Service Days Until","description":"Servicing:Next Service Days Until","visible":true,"datatype":"value","sectionName":"Section4","sectionTitle":"Service Schedule 4","sectionOrder":9,"order":0},{"propertyPath":"payload.servicing.nextServiceMeter","friendlyPropertyPath":"Servicing:NextServiceMeter","property":"nextServiceMeter","title":"Next Service Meter","description":"Servicing:Next Service Meter","visible":true,"datatype":"value","sectionName":"Section1","sectionTitle":"Service Schedule 1","sectionOrder":7,"order":0},{"propertyPath":"payload.servicing.nextServiceMeter1","friendlyPropertyPath":"Servicing:NextServiceMeter1","property":"nextServiceMeter1","title":"Next Service Meter","description":"Servicing:Next Service Meter","visible":true,"datatype":"value","sectionName":"Section2","sectionTitle":"Service Schedule 2","sectionOrder":7,"order":0},{"propertyPath":"payload.servicing.nextServiceMeter2","friendlyPropertyPath":"Servicing:NextServiceMeter2","property":"nextServiceMeter2","title":"Next Service Meter","description":"Servicing:Next Service Meter","visible":true,"datatype":"value","sectionName":"Section3","sectionTitle":"Service Schedule 3","sectionOrder":7,"order":0},{"propertyPath":"payload.servicing.nextServiceMeter3","friendlyPropertyPath":"Servicing:NextServiceMeter3","property":"nextServiceMeter3","title":"Next Service Meter","description":"Servicing:Next Service Meter","visible":true,"datatype":"value","sectionName":"Section4","sectionTitle":"Service Schedule 4","sectionOrder":7,"order":0},{"propertyPath":"payload.servicing.scheduleInterval","friendlyPropertyPath":"Servicing:ScheduleInterval","property":"scheduleInterval","title":"Schedule Interval","description":"Servicing:Schedule Interval","visible":true,"datatype":"value","sectionName":"Section1","sectionTitle":"Service Schedule 1","sectionOrder":3,"order":0},{"propertyPath":"payload.servicing.scheduleInterval1","friendlyPropertyPath":"Servicing:ScheduleInterval1","property":"scheduleInterval1","title":"Schedule Interval","description":"Servicing:Schedule Interval","visible":true,"datatype":"value","sectionName":"Section2","sectionTitle":"Service Schedule 2","sectionOrder":3,"order":0},{"propertyPath":"payload.servicing.scheduleInterval2","friendlyPropertyPath":"Servicing:ScheduleInterval2","property":"scheduleInterval2","title":"Schedule Interval","description":"Servicing:Schedule Interval","visible":true,"datatype":"value","sectionName":"Section3","sectionTitle":"Service Schedule 3","sectionOrder":3,"order":0},{"propertyPath":"payload.servicing.scheduleInterval3","friendlyPropertyPath":"Servicing:ScheduleInterval3","property":"scheduleInterval3","title":"Schedule Interval","description":"Servicing:Schedule Interval","visible":true,"datatype":"value","sectionName":"Section4","sectionTitle":"Service Schedule 4","sectionOrder":3,"order":0},{"propertyPath":"payload.servicing.scheduleName","friendlyPropertyPath":"Servicing:ScheduleName","property":"scheduleName","title":"Schedule Name","description":"Servicing:Schedule Name","visible":true,"datatype":"value","sectionName":"Section1","sectionTitle":"Service Schedule 1","sectionOrder":1,"order":0},{"propertyPath":"payload.servicing.scheduleName1","friendlyPropertyPath":"Servicing:ScheduleName1","property":"scheduleName1","title":"Schedule Name","description":"Servicing:Schedule Name","visible":true,"datatype":"value","sectionName":"Section2","sectionTitle":"Service Schedule 2","sectionOrder":1,"order":0},{"propertyPath":"payload.servicing.scheduleName2","friendlyPropertyPath":"Servicing:ScheduleName2","property":"scheduleName2","title":"Schedule Name","description":"Servicing:Schedule Name","visible":true,"datatype":"value","sectionName":"Section3","sectionTitle":"Service Schedule 3","sectionOrder":1,"order":0},{"propertyPath":"payload.servicing.scheduleName3","friendlyPropertyPath":"Servicing:ScheduleName3","property":"scheduleName3","title":"Schedule Name","description":"Servicing:Schedule Name","visible":true,"datatype":"value","sectionName":"Section4","sectionTitle":"Service Schedule 4","sectionOrder":1,"order":0},{"propertyPath":"payload.servicing.scheduleType","friendlyPropertyPath":"Servicing:ScheduleType","property":"scheduleType","title":"Schedule Type","description":"Servicing:Schedule Type","visible":true,"datatype":"value","sectionName":"Section1","sectionTitle":"Service Schedule 1","sectionOrder":2,"order":0},{"propertyPath":"payload.servicing.scheduleType1","friendlyPropertyPath":"Servicing:ScheduleType1","property":"scheduleType1","title":"Schedule Type","description":"Servicing:Schedule Type","visible":true,"datatype":"value","sectionName":"Section2","sectionTitle":"Service Schedule 2","sectionOrder":2,"order":0},{"propertyPath":"payload.servicing.scheduleType2","friendlyPropertyPath":"Servicing:ScheduleType2","property":"scheduleType2","title":"Schedule Type","description":"Servicing:Schedule Type","visible":true,"datatype":"value","sectionName":"Section3","sectionTitle":"Service Schedule 3","sectionOrder":2,"order":0},{"propertyPath":"payload.servicing.scheduleType3","friendlyPropertyPath":"Servicing:ScheduleType3","property":"scheduleType3","title":"Schedule Type","description":"Servicing:Schedule Type","visible":true,"datatype":"value","sectionName":"Section4","sectionTitle":"Service Schedule 4","sectionOrder":2,"order":0},{"propertyPath":"payload.servicing.serviceScheduleId","friendlyPropertyPath":"Servicing:ServiceScheduleId","property":"serviceScheduleId","title":"Service Schedule Id","description":"Servicing:Service Schedule Id","visible":true,"datatype":"value","sectionName":"Section1","sectionTitle":"Service Schedule 1","sectionOrder":0,"order":0},{"propertyPath":"payload.servicing.serviceScheduleId1","friendlyPropertyPath":"Servicing:ServiceScheduleId1","property":"serviceScheduleId1","title":"Service Schedule Id","description":"Servicing:Service Schedule Id","visible":true,"datatype":"value","sectionName":"Section2","sectionTitle":"Service Schedule 2","sectionOrder":0,"order":0},{"propertyPath":"payload.servicing.serviceScheduleId2","friendlyPropertyPath":"Servicing:ServiceScheduleId2","property":"serviceScheduleId2","title":"Service Schedule Id","description":"Servicing:Service Schedule Id","visible":true,"datatype":"value","sectionName":"Section3","sectionTitle":"Service Schedule 3","sectionOrder":0,"order":0},{"propertyPath":"payload.servicing.serviceScheduleId3","friendlyPropertyPath":"Servicing:ServiceScheduleId3","property":"serviceScheduleId3","title":"Service Schedule Id","description":"Servicing:Service Schedule Id","visible":true,"datatype":"value","sectionName":"Section4","sectionTitle":"Service Schedule 4","sectionOrder":0,"order":0},{"propertyPath":"payload.utilisation.financeUtilisation","friendlyPropertyPath":"Utilisation:FinanceUtilisation","property":"financeUtilisation","title":"Finance Utilisation","description":"Utilisation:Finance Utilisation","visible":true,"datatype":"double","sectionName":"Utilisation","sectionTitle":"Utilisation","sectionOrder":0,"order":0},{"propertyPath":"payload.utilisation.timeUtilisation","friendlyPropertyPath":"Utilisation:TimeUtilisation","property":"timeUtilisation","title":"Time Utilisation","description":"Utilisation:Time Utilisation","visible":true,"datatype":"double","sectionName":"Utilisation","sectionTitle":"Utilisation","sectionOrder":0,"order":0},{"propertyPath":"payload.variables.variable1","friendlyPropertyPath":"Variables:Variable1","property":"variable1","title":"Variable 1","description":"Variables:Variable 1","visible":true,"datatype":"value","sectionName":"Variables","sectionTitle":"Variables","sectionOrder":0,"order":0},{"propertyPath":"payload.variables.variable2","friendlyPropertyPath":"Variables:Variable2","property":"variable2","title":"Variable 2","description":"Variables:Variable 2","visible":false,"datatype":"value","sectionName":"Variables","sectionTitle":"Variables","sectionOrder":0,"order":0},{"propertyPath":"payload.variables.variable3","friendlyPropertyPath":"Variables:Variable3","property":"variable3","title":"Variable 3","description":"Variables:Variable 3","visible":false,"datatype":"value","sectionName":"Variables","sectionTitle":"Variables","sectionOrder":0,"order":0},{"propertyPath":"payload.variables.variable4","friendlyPropertyPath":"Variables:Variable4","property":"variable4","title":"Variable 4","description":"Variables:Variable 4","visible":false,"datatype":"value","sectionName":"Variables","sectionTitle":"Variables","sectionOrder":0,"order":0}],"schemaDefinition":"hierarchy,finance,contacts,operation,servicing,utilisation,variables","id":null,"type":"AssetMasterSchema","correlationId":null,"_ts":0,"ttl":-1}}}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetMasterApi.GetAssetMasterSchema","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/master/assetMasterSchema","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"patch":{"tags":["Details"],"summary":"Update Asset Master Schema","description":"Update the asset master schema for a tenant.","operationId":"updateAssetMasterSchema","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAssetInfo-RequestObject"},"example":[{"op":"replace","path":"/schema/1/title","value":"Asset Name"}]}}},"responses":{"200":{"description":"The request was applied."},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetMasterApi.UpdateAssetMasterSchema","errorType":"NullReferenceException","statusCode":500,"request":"PATCH /api/master/assetMasterSchema","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/assetMasterSchema/export":{"get":{"tags":["Details"],"summary":"Export Tenant Asset Master Schema","description":"Export the tenant-specific asset master schema overrides. Returns only properties that differ from the global schema, with all sub-properties fully populated (e.g., flags and position include all fields merged from global).","operationId":"exportTenantAssetMasterSchema","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}},"example":{"metadata.assetInfo.sourceSysAssetId1":{"title":"Source Sys Asset Id 1 Custom","description":"Asset Info:Source Sys Asset Id 1 Custom","flags":{"showInGui":true,"isReportable":false,"isAggregatable":false},"position":{"order":5,"sectionName":"assetInfo","sectionTitle":"Asset Info","sectionOrder":1},"dataType":"value"}}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetMasterApi.ExportTenantAssetMasterSchema","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/master/assetMasterSchema/exportTenant","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/assetMasterSchema/import":{"post":{"tags":["Details"],"summary":"Import Tenant Asset Master Schema","description":"Import tenant-specific asset master schema overrides. Only metadata.* properties that exist in the global schema are accepted. Properties are merged field-by-field with the global schema (unspecified fields preserve global values). The dataType and unitType fields cannot be overridden.","operationId":"importTenantAssetMasterSchema","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"schema":{"type":"object","additionalProperties":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"flags":{"type":"object","properties":{"showInGui":{"type":"boolean"},"isReportable":{"type":"boolean"},"isAggregatable":{"type":"boolean"}}},"position":{"type":"object","properties":{"order":{"type":"integer"},"sectionName":{"type":"string"},"sectionTitle":{"type":"string"},"sectionOrder":{"type":"integer"}}},"format":{"type":"object"},"parentTitle":{"type":"string"},"inputType":{"type":"string"},"modelName":{"type":"string"}}}}}},"example":{"schema":{"metadata.assetInfo.sourceSysAssetId1":{"title":"Source Sys Asset Id 1 Custom","description":"Asset Info:Source Sys Asset Id 1 Custom","flags":{"showInGui":true,"isReportable":false},"position":{"order":5}}}}}}},"responses":{"200":{"description":"The asset master schema was imported."},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetMasterApi.ImportTenantAssetMasterSchema","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/master/assetMasterSchema/importTenant","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/groups":{"get":{"tags":["Details"],"summary":"Get Asset Groups","description":"Retrieve groups an asset is a member of.","operationId":"getAssetGroups","parameters":[{"name":"id","in":"path","description":"Asset Id","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"},"description":"Filter asset groups by type."},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"assetCount":{"type":"integer","format":"int32","nullable":true,"description":"Asset Count."},"assetGroupName":{"type":"string","description":"Asset Group Name."},"assetIds":{"type":"array","items":{"type":"string"}},"category":{"type":"string","description":"Category."},"correlationId":{"type":"string","description":"Client-supplied correlation id, echoed back for request tracing."},"createdBy":{"type":"string","description":"User or system that created the record."},"createdDate":{"type":"string","format":"date-time","description":"UTC timestamp when the record was created."},"deleted":{"type":"boolean","description":"Deleted."},"description":{"type":"string","description":"Free-text description."},"geofenceIds":{"type":"array","items":{"type":"string"}},"id":{"type":"string","description":"Unique identifier."},"ownedBy":{"type":"string","description":"Owner of the record."},"ownerId":{"type":"string","description":"Owner Id."},"rbacIds":{"type":"array","items":{"type":"string"}},"type":{"type":"string","description":"Type discriminator."},"tags":{"type":"array","items":{"type":"string"}},"updatedBy":{"type":"string","description":"User or system that last modified the record."},"updatedDate":{"type":"string","format":"date-time","description":"UTC timestamp when the record was last modified."}}}},"example":[{"assetCount":null,"assetGroupName":"value","assetIds":["in-000052"],"category":"value","correlationId":"value","createdBy":"value","createdDate":"2022-10-21T02:27:17Z","deleted":false,"description":"Free-text value","geofenceIds":["in-gf-000123"],"id":"A-000123","IsNew":false,"ownedBy":"value","ownerId":"value","rbacIds":["in-000052"],"type":"asset","tags":["fleet"],"TsDateTime":"2022-10-21T02:27:17Z","updatedBy":"value","updatedDate":"2022-10-21T02:27:17Z"}]}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Groups.GroupDetails.GetGroupsForAsset","errorType":"ArgumentException","statusCode":400,"request":"GET /api/assets/in-000020/groups","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Groups.GroupDetails.GetGroupsForAsset","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/assets/in-000020/groups","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"put":{"tags":["Details"],"summary":"Update Asset Groups","description":"Update asset groups. Operates on asset groups in the current tenant.","operationId":"updateAssetGroups","parameters":[{"name":"id","in":"path","description":"Asset Id","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAssetGroups-RequestObject"},"example":{"geofenceIds":["au-gf-000101","au-gf-000202","au-gf-000303"],"category":"fleet-operations","assetGroupName":"HeavyVehicles_Sydney","description":"Group for monitoring heavy vehicles operating in Sydney region","tags":["priority","compliance"],"deleted":false,"assetCount":128,"conditions":{"all":[{"fact":"metadata.assetInfo.assetId","operator":"notcontains","value":"inactive"},{"fact":"metadata.assetInfo.assetType","operator":"notequal","value":"trailer"},{"fact":"metadata.assetInfo.owner","operator":"notstartswith","value":"demo"}]},"createdBy":"alex.j@company.com","createdDate":"2024-12-10T05:20:30.0000000+00:00","updatedBy":"emma.w@company.com","updatedDate":"2025-07-02T06:45:10.0000000+00:00","id":"au-astg-000555","type":"User","correlationId":"api-20250702-064500-789-xyz123","_ts":1751431510,"ttl":-1,"lastMemberUpdatedUtc":"2025-07-02T09:45:00.0000000+00:00","lastEvaluatedUtc":"2025-07-02T09:45:00.0000000+00:00"}}}},"responses":{"200":{"description":"The request was applied."},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Groups.GroupDetails.UpdateGroupForAsset","errorType":"ArgumentException","statusCode":400,"request":"PUT /api/assets/in-000020/groups","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Groups.GroupDetails.UpdateGroupForAsset","errorType":"NullReferenceException","statusCode":500,"request":"PUT /api/assets/in-000020/groups","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/rentalhistory":{"get":{"tags":["Details"],"summary":"Get Asset Rental History","description":"Fetch rental history of an asset.","operationId":"getAssetRentalHistory","parameters":[{"name":"id","in":"path","description":"Asset Id","required":true,"schema":{"type":"string"},"example":"in-000020"},{"name":"take","in":"query","description":"number of records to return","schema":{"type":"integer"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier."},"rentalNumber":{"type":"string","description":"Rental Number."},"contractStatus":{"type":"string","description":"Contract Status."},"contractStartDate":{"type":"string","format":"date-time","description":"Contract Start Date."},"contractEndDate":{"type":"string","format":"date-time","description":"Contract End Date."},"branchName":{"type":"string","description":"Branch Name."},"contractSiteAddress":{"type":"string","description":"Contract Site Address."},"customerName":{"type":"string","description":"Customer Name."},"customerEmail":{"type":"string","description":"Customer Email."},"lineStatus":{"type":"string","description":"Line Status."},"lineStartDateTime":{"type":"string","format":"date-time","description":"Line Start Date Time."},"expectedTermDate":{"type":"string","format":"date-time","description":"Expected Term Date."},"adjustedTermDate":{"type":"string","description":"Adjusted Term Date."},"returnDate":{"type":"string","description":"Return Date."},"totalBillAmount":{"type":"string","description":"Total Bill Amount."}}},"examples":{"RentalHistoryResponse":{"summary":"A sample rental history item","value":{"id":153840,"rentalNumber":"100189","contractStatus":"Completed","contractStartDate":"2022-03-15T09:00:00Z","contractEndDate":"2023-03-15T17:00:00Z","branchName":"Sydney (Wetherill Park)","contractSiteAddress":"25 Ferndell Street, South Granville NSW 2142","customerName":"Transcorp Logistics Pty Ltd","customerEmail":"logistics@transcorp.com.au;accounts@transcorp.com.au","lineStatus":"Returned","lineStartDateTime":"2022-03-15T10:30:00Z","expectedTermDate":"2023-03-15T16:00:00Z","adjustedTermDate":"2023-03-14T15:00:00Z","returnDate":"2023-03-14T15:15:00Z","totalBillAmount":"37950.75"}}}}},"headers":{"x-perspio-integration-sourcesystem":{"description":"The upstream integration source system that provided the history.","schema":{"type":"string"},"example":"sap"}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetsRentalHistory","errorType":"ArgumentException","statusCode":400,"request":"GET /api/assetsV2rentalhistory/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetsRentalHistory","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/assetsV2rentalhistory/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/servicinghistory":{"get":{"tags":["Details"],"summary":"Get Asset Servicing History","description":"Fetch servicing history of an asset.","operationId":"getAssetsServiceHistory","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"take","in":"query","description":"number of records to return","schema":{"enum":[2],"type":"integer","default":2}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"Unique identifier."},"branchName":{"type":"string","description":"Branch Name."},"status":{"type":"string","description":"Status."},"jobType":{"type":"string","description":"Job Type."},"jobCategory":{"type":"string","description":"Job Category."},"description":{"type":"string","description":"Free-text description."},"meterReading":{"type":"string","description":"Meter Reading."},"postedDate":{"type":"string","format":"date-time","description":"Posted Date."}}}},"example":[{"id":84591,"branchName":"Dandenong","status":"COMPLETED","jobType":"External","jobCategory":"Annual Inspection","description":"Annual safety check and compliance review","meterReading":"92045.0000","postedDate":"2025-05-22T10:15:30Z"},{"id":81012,"branchName":"Welshpool","status":"IN_PROGRESS","jobType":"Internal","jobCategory":"Oil Change","description":"Engine oil and filter replacement","meterReading":"87500.0000","postedDate":"2025-06-10T08:05:45Z"},{"id":79999,"branchName":"Townsville","status":"SCHEDULED","jobType":"Internal","jobCategory":"Tyre Rotation","description":"Front and rear tyre rotation","meterReading":"83520.0000","postedDate":"2025-06-15T09:00:00Z"},{"id":78888,"branchName":"Newcastle","status":"CANCELLED","jobType":"External","jobCategory":"Battery Replacement","description":"Battery replaced by external vendor","meterReading":null,"postedDate":"2025-04-02T14:30:00Z"},{"id":76543,"branchName":"Sunshine Coast","status":"POSTED","jobType":"Internal","jobCategory":"50000km Service","description":"Routine 50,000km logbook service","meterReading":"50000.0000","postedDate":"2025-03-29T11:45:00Z"}]}},"headers":{"x-perspio-integration-sourcesystem":{"description":"The upstream integration source system that provided the history.","schema":{"type":"string"},"example":"sap"}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetsServiceHistory","errorType":"ArgumentException","statusCode":400,"request":"GET /api/assetsV2servicinghistory/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetsServiceHistory","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/assetsV2servicinghistory/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/workflowhistory":{"get":{"tags":["Details"],"summary":"Get Asset Workflow History","description":"Fetch workflow history of an asset.","operationId":"getAssetsWorkflowHistory","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"from","in":"query","description":"from Date Utc","schema":{"type":"string"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."},{"name":"ContinuationToken","in":"header","required":false,"schema":{"type":"string"},"description":"Opaque token from a previous response's ContinuationToken header, to fetch the next page."},{"name":"withActions","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, include the actions taken for each workflow history entry."},{"name":"to","in":"query","description":"End of the time range (ISO 8601, UTC).","required":false,"schema":{"type":"string","format":"date-time"},"example":"2025-06-30T23:59:59Z"},{"name":"page_size","in":"query","description":"Maximum number of items per page. When greater than 0 the response is paged and returns the ContinuationToken, ResultCount and TotalCount response headers.","required":false,"schema":{"type":"integer"},"example":50}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"array","items":{"type":"object"},"description":"The page of workflow history entries."},"resultCount":{"type":"integer","description":"Number of items in this page."},"totalCount":{"type":"integer","description":"Total number of items across all pages."},"continuationToken":{"type":"string","description":"Token to fetch the next page."}}},"example":{"result":[{}],"resultCount":0,"totalCount":0,"continuationToken":"value"}}},"headers":{"ContinuationToken":{"description":"Opaque token to fetch the next page; absent on the last page.","schema":{"type":"string"},"example":"eyJ0b2tlbiI6IjEyMyJ9"},"ResultCount":{"description":"Number of items returned in this page.","schema":{"type":"integer"},"example":50},"TotalCount":{"description":"Total number of items across all pages.","schema":{"type":"integer"},"example":1234}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetWorkflowHistory","errorType":"ArgumentException","statusCode":400,"request":"GET /api/assetsV2/in-000020/workflowhistory","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetWorkflowHistory","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/assetsV2/in-000020/workflowhistory","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/actionhistory":{"get":{"tags":["Details"],"summary":"Get Asset Action History","description":"Fetch directly triggered action history of an asset.","operationId":"getAssetsActionHistory","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"from","in":"query","description":"From date UTC","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","description":"To date UTC","schema":{"type":"string","format":"date-time"}},{"name":"page_size","in":"query","description":"Maximum number of action log rows to return","schema":{"type":"integer","format":"int32"}},{"name":"token","in":"query","description":"Continuation token returned by a previous request","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","headers":{"ContinuationToken":{"description":"Token for retrieving the next page when more rows are available","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","nullable":true},"dateUtc":{"type":"string","format":"date-time","nullable":true},"correlationId":{"type":"string","nullable":true},"tenantId":{"type":"string","nullable":true},"objectId":{"type":"string","nullable":true},"durationMilliseconds":{"type":"integer","format":"int64","nullable":true},"ruleId":{"type":"string","nullable":true},"actionName":{"type":"string","nullable":true},"actionId":{"type":"string","nullable":true},"instanceId":{"type":"string","nullable":true},"responseCode":{"type":"integer","format":"int32","nullable":true},"reasonPhrase":{"type":"string","nullable":true},"stepName":{"type":"string","nullable":true},"externalId":{"type":"string","nullable":true},"externalDeliveryStatus":{"type":"string","nullable":true},"externalDeliveryTime":{"type":"string","format":"date-time","nullable":true},"externalDeliveryComment":{"type":"string","nullable":true}}}}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"error":{"stackTrace":"string"},"errorType":"string","message":"string","method":"string","request":"string","statusCode":0}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"error":{"stackTrace":"string"},"errorType":"string","message":"string","method":"string","request":"string","statusCode":0}}}}}}},"/share":{"post":{"tags":["Details"],"summary":"Create Asset Share Link","description":"Create a public URL to share an asset.","operationId":"shareasset","requestBody":{"description":"Sharing request details","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioAssetShareRequest"},"example":{"email":"user@example.com","mobile":"+61400111222","objectIds":"asset123,asset456","tokenValidFrom":"2025-07-16T00:00:00Z","tokenValidTo":"2025-08-16T00:00:00Z","enabled":true,"token":"optional-token-string","sourceId":"src-987"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"string"},"example":"https://talk.perspio.io/public/v3/assets/495e99ed2c8542de94d8d9f4f03fb675"}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.ShareAsset","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/share","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/shares":{"post":{"tags":["Details"],"summary":"Create Asset Share","description":"Create an asset share. Operates on asset share in the current tenant.","operationId":"createAssetShare","parameters":[{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"requestBody":{"content":{"application/json":{"schema":{"required":["objectIds","email","tokenValidFrom","tokenValidTo"],"type":"object","properties":{"objectIds":{"type":"string","example":"in-000052"},"email":{"type":"string","format":"email","example":"bhanu@inauro.io"},"mobile":{"type":"string","nullable":true,"example":null},"tokenValidFrom":{"type":"string","format":"date-time","example":"2025-07-02T02:22:21.0000000+00:00"},"tokenValidTo":{"type":"string","format":"date-time","example":"2025-07-02T03:22:21.0000000+00:00"}}},"example":{"objectIds":"in-000089","email":"john.doe@example.com","mobile":"+61412345678","tokenValidFrom":"2025-07-02T05:00:00.0000000+00:00","tokenValidTo":"2025-07-02T06:00:00.0000000+00:00"}}}},"responses":{"200":{"description":"The request was applied.","content":{"application/json":{"schema":{"type":"object","properties":{"sharedUrl":{"type":"string","description":"URL the asset is shared at."}}},"example":{"sharedUrl":"https://app.perspio.io/share/abc123"}}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.ShareAsset","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/shares","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/shares/tokens":{"get":{"tags":["Details"],"summary":"Get Asset Share Tokens","description":"List asset share tokens. Operates on asset share tokens in the current tenant.","operationId":"getAssetShareTokens","parameters":[{"name":"ContinuationToken","in":"header","required":false,"schema":{"type":"string"},"description":"Opaque token from a previous response's ContinuationToken header, to fetch the next page."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"tenantId":{"type":"string","description":"Tenant the record belongs to."},"tokenValidFrom":{"type":"string","description":"Token Valid From."},"tokenValidTo":{"type":"string","description":"Token Valid To."},"enabled":{"type":"boolean","description":"Whether the record is enabled."},"isExpired":{"type":"boolean","description":"Is Expired."},"shareType":{"type":"string","description":"Share Type."},"email":{"type":"string","description":"Email."},"mobile":{"description":"Mobile."},"token":{"type":"string","description":"Token."},"createdOn":{"type":"string","description":"Created On."},"updatedOn":{"type":"string","description":"Updated On."},"objectIds":{"type":"string","description":"Object Ids."}}}},"example":[{"tenantId":"value","tokenValidFrom":"value","tokenValidTo":"value","enabled":false,"isExpired":false,"shareType":"value","email":"value","mobile":"value","token":"value","createdOn":"value","updatedOn":"value","objectIds":"value"}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetShareTokens","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/shares/tokens","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/shares/tokens/{id}":{"put":{"tags":["Details"],"summary":"Update Asset Share Token","description":"Update share token of an asset.","operationId":"updateAssetShareToken","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Token update payload containing enabled state and validity period","required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"tokenValidFrom":{"type":"string","format":"date-time"},"tokenValidTo":{"type":"string","format":"date-time"}},"required":["enabled"]},"example":{"enabled":true,"tokenValidFrom":"2025-07-16T00:00:00Z","tokenValidTo":"2025-08-16T00:00:00Z"}}}},"responses":{"200":{"description":"The request was applied."},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.UpdateAssetShareToken","errorType":"ArgumentException","statusCode":400,"request":"PUT /api/shares/tokens/in-000052","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.UpdateAssetShareToken","errorType":"NullReferenceException","statusCode":500,"request":"PUT /api/shares/tokens/in-000052","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/relationships":{"get":{"tags":["Details"],"summary":"Get Asset Relationships","description":"Fetch relationships of an asset.","operationId":"getAssetRelationships","parameters":[{"name":"id","in":"path","description":"Asset ID","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"isPrimaryLocationProvider":{"type":"boolean","description":"Is Primary Location Provider."},"propertyMap":{"type":"object","properties":{"crankingVoltage":{"type":"string","description":"Cranking Voltage."},"engineCoolantTemp":{"type":"string","description":"Engine Coolant Temp."},"engineOilTemp":{"type":"string","description":"Engine Oil Temp."},"engineRoadSpeed":{"type":"string","description":"Engine Road Speed."},"engineSpeed":{"type":"string","description":"Engine Speed."},"fuelLevelPct":{"type":"string","description":"Fuel Level Pct."},"heading":{"type":"string","description":"Heading."},"outsideAirTemp":{"type":"string","description":"Outside Air Temp."},"parkingBrake":{"type":"string","description":"Parking Brake."},"speed":{"type":"string","description":"Speed."},"totalFuel":{"type":"string","description":"Total Fuel."},"externalBatteryVoltage":{"type":"string","description":"External Battery Voltage."},"odometer":{"type":"string","description":"Odometer."},"odometerSource":{"type":"string","description":"Odometer Source."},"driverId":{"type":"string","description":"Driver Id."},"runHours":{"type":"string","description":"Run Hours."},"runHoursSource":{"type":"string","description":"Run Hours Source."},"insideGeofenceJson":{"type":"string","description":"Inside Geofence Json."},"enabled":{"type":"string","description":"Whether the record is enabled."},"doorStatus":{"type":"string","description":"Door Status."},"fridgeMotorStatus":{"type":"string","description":"Fridge Motor Status."},"active":{"type":"string","description":"Active."},"latitude":{"type":"string","description":"Latitude."},"longitude":{"type":"string","description":"Longitude."},"coordinates":{"type":"string","description":"Coordinates."},"lastCommunicatedUtc":{"type":"string","description":"Last Communicated Utc."},"lastCommunicatedEpoch":{"type":"string","description":"Last Communicated Epoch."},"correlationId":{"type":"string","description":"Client-supplied correlation id, echoed back for request tracing."},"zone1SupplyAirTemperature":{"type":"string","description":"Zone1 Supply Air Temperature."},"zone1ReturnAirTemperature":{"type":"string","description":"Zone1 Return Air Temperature."}}},"relatedProperties":{"type":"object","properties":{"deviceId":{"type":"string","description":"Device Id."},"deviceTypeId":{"type":"string","description":"Device Type Id."}}},"id":{"type":"string","description":"Unique identifier."},"name":{"type":"string","description":"Display name."},"sourceTwinId":{"type":"string","description":"Source Twin Id."},"targetTwinId":{"type":"string","description":"Target Twin Id."},"correlationId":{"description":"Client-supplied correlation id, echoed back for request tracing."}}}},"example":[{"isPrimaryLocationProvider":true,"propertyMap":{"crankingVoltage":"2025-05-11T14:00:00Z","engineCoolantTemp":"85.0","engineOilTemp":"90.2","engineRoadSpeed":"65","engineSpeed":"2200","fuelLevelPct":"75","heading":"NE","outsideAirTemp":"2025-06-23T14:00:00Z","parkingBrake":"Released","speed":"64.8","totalFuel":"0250-02-28T13:00:00Z","externalBatteryVoltage":"2025-01-12T13:00:00Z","odometer":"135240.6","odometerSource":"GPS","driverId":"DRV-1234","runHours":"5600-04-30T14:00:00Z","runHoursSource":"ECM","insideGeofenceJson":"{\"geofenceId\":\"GEO-001\",\"name\":\"Depot\"}","enabled":"true","doorStatus":"Closed","fridgeMotorStatus":"Running","active":"true","latitude":"-33.8688","longitude":"151.2093","coordinates":"-33.8688,151.2093","lastCommunicatedUtc":"2025-06-19T05:00:00Z","lastCommunicatedEpoch":"1729383600","correlationId":"abc123-corr-id","zone1SupplyAirTemperature":"2025-05-03T14:00:00Z","zone1ReturnAirTemperature":"2025-01-05T13:00:00Z"},"relatedProperties":{"deviceId":"DEVICE-789","deviceTypeId":"TYPE-GPS-V2"},"id":"REL-001","name":"Primary Telematics Relationship","sourceTwinId":"ASSET-123","targetTwinId":"DEVICE-789","correlationId":"rel-xyz-456"}]}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetRelationships","errorType":"ArgumentException","statusCode":400,"request":"GET /api/assetsv2/in-000020/relationships","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetRelationships","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/assetsv2/in-000020/relationships","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{assetId}/actions":{"post":{"tags":["Details"],"summary":"Trigger Asset Action","description":"Trigger an enabled asset snapshot action for an asset.","operationId":"triggerAssetAction","parameters":[{"name":"assetId","in":"path","description":"Asset ID","required":true,"schema":{"type":"string","example":"in-000020"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerAssetAction-RequestObject"},"example":{"actionPipelineId":"ac-000001","instanceId":"000001","actionInput":{"to":["ops@example.com"],"subject":"Asset action","body":"Asset {{assetId}} action triggered"}}}}},"responses":{"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerAssetAction-ResponseObject"},"example":{"correlationId":"b7f2c9bb-f2d6-4c46-91d6-56b9a4d7d38b","status":"Accepted"}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetActionsApi.TriggerAssetAction","errorType":"ArgumentException","statusCode":400,"request":"POST /api/assetsV2/in-000020/actions","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetActionsApi.TriggerAssetAction","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/assetsV2/in-000020/actions","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{assetId}/cameras":{"get":{"tags":["Details"],"summary":"Get Asset Cameras","description":"Fetch cameras of an asset.","operationId":"getAssetCameras","parameters":[{"name":"assetId","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"null","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","description":"Camera id."}},"example":["CAM-001","CAM-002"]}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetCameras","errorType":"ArgumentException","statusCode":400,"request":"GET /api/assetsV2/in-000020/cameras","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetCameras","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/assetsV2/in-000020/cameras","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{assetId}/cameras/{cameraId}/snapshot":{"get":{"tags":["Details"],"summary":"Get Asset Camera Snapshot","description":"Fetch snapshot image from a camera of an asset.","operationId":"getAssetSnapshotImage","parameters":[{"name":"assetId","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"cameraId","in":"path","required":true,"schema":{"type":"string"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"The asset snapshot image.","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetSnapshotImage","errorType":"ArgumentException","statusCode":400,"request":"GET /api/assetsV2/in-000020/cameras/in-000020/snapshot","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetSnapshotImage","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/assetsV2/in-000020/cameras/in-000020/snapshot","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/dependency/{objectId}":{"get":{"tags":["Details"],"summary":"Get Asset Dependencies","description":"Fetch dependencies of an asset.","operationId":"checkObjectDependency","parameters":[{"name":"objectId","in":"path","description":"object Id","required":true,"schema":{"type":"string","example":"in-000020"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"objectType":{"type":"string","description":"Type of the dependent object."},"name":{"type":"string","description":"Name of the dependent object."},"id":{"type":"string","description":"Id of the dependent object."}}}},"example":[{"objectType":"rule","name":"Idle alert","id":"R-1"}]}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.ValidationService.CheckObjectDependency","errorType":"ArgumentException","statusCode":400,"request":"GET /api/dependency/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.ValidationService.CheckObjectDependency","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/dependency/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/signaldependency/{signalName}":{"get":{"tags":["Details"],"summary":"Get Asset Property Dependencies","description":"Fetch dependencies of an asset property.","operationId":"checksignaldependency","parameters":[{"name":"signalName","in":"path","description":"asset property","required":true,"schema":{"type":"string","example":"customerAssetId"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"objectType":{"type":"string","description":"Type of the entity (e.g., Rule, TaskDefinition).","example":"Rule"},"name":{"type":"string","description":"Name of the entity. May be null for some TaskDefinitions.","example":"test events"},"id":{"type":"string","description":"Unique identifier of the entity.","example":"in-wf-000845"}}}},"example":[{"objectType":"Rule","name":"Ricardo test events","id":"in-wf-000845"},{"objectType":"Rule","name":"Ricardo test periodic","id":"in-wf-000846"},{"objectType":"TaskDefinition","name":"828e4eb6e95e491ca65b906a6621fead","id":"in-task-1f965339-acaa-4790-8e84-f60129baabd1"},{"objectType":"TaskDefinition","name":null,"id":"in-task-58fef5cf-8e26-4529-a383-9e0b365cfeca"},{"objectType":"TaskDefinition","name":"044529e493a344c0be23be9159fa644c","id":"in-task-a7786d5a-bc8b-4d31-974a-ac9f88b24a23"},{"objectType":"TaskDefinition","name":"8936850d10804d4d876e17554d19fc7a","id":"in-task-20b666b6-db1c-4824-82fc-3662b72d4ef9"},{"objectType":"TaskDefinition","name":"72bb5513dda54a79aa4fae6d6c576b11","id":"in-task-00e92c08-5c95-4358-b645-d205d38bb41a"},{"objectType":"TaskDefinition","name":"a898bb3907a04dada944517f79421ef1","id":"in-task-a6fee9ce-29b1-4d1d-b42f-496685c9df1b"},{"objectType":"TaskDefinition","name":"431509fe304f40af832f9bbea2461a38","id":"in-task-197f2f24-7379-40c6-975c-8875a2fc5a45"},{"objectType":"TaskDefinition","name":"d4ab7fb3273a4fdcaad3902897f7cc26","id":"in-task-a3cf366e-630f-4c54-8fe0-94e5d0069a78"},{"objectType":"TaskDefinition","name":"7e7c7a3070eb4733bedc22e04ee606a0","id":"in-task-113cf513-8c70-437e-8104-adb6b08a20b0"},{"objectType":"TaskDefinition","name":"4ee37712f6a34a20b8f65e27c7831b20","id":"in-task-cea2b3c3-d803-4f37-854e-2a436f86ae6a"},{"objectType":"TaskDefinition","name":"ea456ce717e0435d9db980a7c4c932a9","id":"in-task-09613068-1400-4677-848b-2d9f011c2c9a"},{"objectType":"TaskDefinition","name":"d7f51e937804480ca067540d6aaa2f88","id":"in-task-cf7c6504-0450-4ce9-9037-d6cf2ac8f236"},{"objectType":"TaskDefinition","name":"a6c136f989594ae9beb2e3f80652ffb6","id":"in-task-ba303856-d485-488b-b578-00c9ff3af2af"},{"objectType":"TaskDefinition","name":"78d84f90be26427788c6d43c878da125","id":"in-task-7d84f637-d0ff-439c-a875-4c55104901fb"},{"objectType":"TaskDefinition","name":"e9a49926f7ed463797deb428c96ff36e","id":"in-task-ec81f803-7825-4f98-99d7-70439502d4cf"},{"objectType":"TaskDefinition","name":"654cc2f10de24e4aa8fc9e3339559055","id":"in-task-9df18c87-a0cc-4824-8c31-aa54e9ecc2e9"},{"objectType":"TaskDefinition","name":"25f9373861e54fb6858755dfef66fb0b","id":"in-task-9592d5dc-6390-4e6c-8afd-71476ec08714"},{"objectType":"TaskDefinition","name":"ca849563f50c43759205353125baa5c9","id":"in-task-019ee1f5-8588-4c61-9c9a-d110563bf1b6"},{"objectType":"TaskDefinition","name":"ebb3a4b6001f4380ab76e6458b40662e","id":"in-task-27732b51-45f6-4bcd-bd2a-4c5289efe8ff"}]}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.ValidationService.CheckSignalDependency","errorType":"ArgumentException","statusCode":400,"request":"GET /api/signaldependency/customerAssetId","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.ValidationService.CheckSignalDependency","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/signaldependency/customerAssetId","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/events":{"get":{"tags":["Telemetry"],"summary":"Get Asset Events","description":"Fetch event logs of an asset. The continuation token may alternatively be sent as the raw request body - useful when the token is too long for the query string or header; the body is only read when neither the token query parameter nor the ContinuationToken header is set.","operationId":"getAssetEvents","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"example":"in-000020"},{"name":"from","in":"query","description":"Start time for events in ISO 8601 format","required":true,"schema":{"type":"string","format":"date-time"},"example":"2024-06-16T14:00:00.0000000+00:00"},{"name":"to","in":"query","description":"End time for events in ISO 8601 format","required":true,"schema":{"type":"string","format":"date-time"},"example":"2024-06-17T13:59:59.9990000+00:00"},{"name":"page_size","in":"query","description":"Number of events to return per page","schema":{"type":"integer","format":"int32"},"example":50},{"name":"severityTypes","in":"query","description":"Comma-separated list of severity types","schema":{"type":"string"},"example":"CRITICAL,MAJOR,MINOR,INFO,VERBOSE"},{"name":"aggregate","in":"query","description":"Flag to aggregate events","schema":{"type":"boolean"},"example":true},{"name":"eventTypeIds","in":"query","style":"form","schema":{"type":"array","items":{"type":"integer"}}},{"name":"groupBy","in":"query","schema":{"type":"string"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."},{"name":"ContinuationToken","in":"header","required":false,"schema":{"type":"string"},"description":"Opaque token from a previous response's ContinuationToken header, to fetch the next page."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssetEventsResponseObject"}},"example":[{"eventTypeId":3,"eventTimeUTC":"2025-06-19T05:30:00Z","count":12}]}},"headers":{"ContinuationToken":{"description":"Opaque token to fetch the next page; absent on the last page.","schema":{"type":"string"},"example":"eyJ0b2tlbiI6IjEyMyJ9"},"ResultCount":{"description":"Number of items returned in this page.","schema":{"type":"integer"},"example":50},"TotalCount":{"description":"Total number of items across all pages.","schema":{"type":"integer"},"example":1234}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetEvents","errorType":"ArgumentException","statusCode":400,"request":"GET /api/assetsV2/in-000020/events","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetEvents","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/assetsV2/in-000020/events","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/events":{"get":{"tags":["Telemetry"],"summary":"Get Asset Events Master","description":"Retrieve events master data","operationId":"getAssetEventsMaster","parameters":[{"name":"includeschema","in":"query","description":"Include event schema details in the response","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"eventId":{"type":"number","description":"Event id."},"name":{"type":"string","description":"Display name."},"displayName":{"type":"string","description":"Display name."},"description":{"description":"Free-text description."},"severity":{"type":"string","description":"Severity."},"category":{"type":"string","description":"Category."},"classification":{"type":"string","description":"Classification."},"canUserCreate":{"type":"boolean","description":"Whether users can create this."},"showInGui":{"type":"boolean","description":"Whether shown in the UI."},"schema":{"description":"Schema."}}}},"example":[{"eventId":101,"name":"EngineOverheat","displayName":"Engine Overheat","description":"The engine temperature exceeded safe operating limits.","severity":"High","category":"Engine","classification":"Alert","canUserCreate":false,"showInGui":true,"schema":{"temperature":{"type":"number","unit":"Celsius"},"threshold":110}},{"eventId":102,"name":"LowFuel","displayName":"Low Fuel","description":"Fuel level has dropped below the minimum threshold.","severity":"Medium","category":"Fuel","classification":"Warning","canUserCreate":true,"showInGui":true,"schema":{"fuelLevel":{"type":"number","unit":"Liters"},"threshold":10}}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.EventsMasterApi.GetEventsMasterData","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/events","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"post":{"tags":["Telemetry"],"summary":"Bulk Update Asset Events Master","description":"Create bulk update events masterdata.","operationId":"bulkUpdateEventsMasterdata","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkPatchRequestObject"},"example":[[{"eventId":1,"patchOperations":[{"op":"replace","value":false,"path":"/showInGui"}]},{"eventId":2,"patchOperations":[{"op":"replace","value":true,"path":"/showInGui"}]}]]}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the entry was updated."},"eventId":{"type":"string","description":"Event id."},"error":{"type":"string","description":"Error message, if the entry failed."}}}}}},"example":{"results":[{"success":true,"eventId":"E-1","error":null}]}}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.EventsMasterApi.BulkUpdateEventMasterData","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/events","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/events/{id}":{"patch":{"tags":["Telemetry"],"summary":"Update Asset Events Master","description":"Update updat asset events master.","operationId":"updatAssetEventsMaster","parameters":[{"name":"id","in":"path","description":"Perspio Event ID.\n\n| ID | Type      |\n|----|-----------|\n| 1  | TripStart     |\n| 2  | TripEnd   |\n| 7  | HarshBraking   |\n| 8  | HarshAcceleration  |\n| 9  | HarshCornering |","required":true,"schema":{"enum":["1","2","7","8","9"],"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchRequestObject"},"example":[{"value":"Test Event","path":"/description","op":"replace"}]}}},"responses":{"200":{"description":"The asset event master data was updated."},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.EventsMasterApi.UpdateEventMasterData","errorType":"ArgumentException","statusCode":400,"request":"PATCH /api/events/in-000052","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.EventsMasterApi.UpdateEventMasterData","errorType":"NullReferenceException","statusCode":500,"request":"PATCH /api/events/in-000052","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/events/recent":{"get":{"tags":["Telemetry"],"summary":"Get Asset Recent Events","description":"Fetch recent events of an asset.","operationId":"getAssetRecentEvents","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"count","in":"query","schema":{"type":"integer","default":1}},{"name":"severityTypes","in":"query","style":"form","schema":{"type":"array","items":{"type":"string"}}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssetEventsRecent"}},"example":[{"objectId":"in-000061","assetId":"in-000061","eventTypeId":137,"location":{"dateTime":"2024-12-11T04:50:39Z","coordinates":[150.914941,-33.2222],"type":"Point"},"deviceId":null,"eventTimeUTC":"2024-12-11T04:50:39Z","eventTimeEpoch":1733892639,"tenantId":"in-c5a96640-9788-49bd-b71e-e6c65b4a427f","eventObject":{"geofenceId":"AU-New-South-Wales","geofenceTitle":null,"geofenceType":null,"info":null,"eventId":null},"pipelineId":"GeofenceProcessor","id":"in-000061-137-1733892639765-41b0851512","type":"AssetEvent","correlationId":"api-20241211-045039-739-e36cd","_ts":1733892814,"ttl":-1}]}},"headers":{"ContinuationToken":{"description":"Opaque token to fetch the next page; absent on the last page.","schema":{"type":"string"},"example":"eyJ0b2tlbiI6IjEyMyJ9"},"ResultCount":{"description":"Number of items returned in this page.","schema":{"type":"integer"},"example":50},"TotalCount":{"description":"Total number of items across all pages.","schema":{"type":"integer"},"example":1234}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetRecentAssetEvents","errorType":"ArgumentException","statusCode":400,"request":"GET /api/assetsV2/in-000020/events/recent","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetRecentAssetEvents","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/assetsV2/in-000020/events/recent","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/metrics":{"get":{"tags":["Telemetry"],"summary":"Get Asset Metrics","description":"Fetch telemetry data of an asset.","operationId":"getassetmetrics","parameters":[{"name":"id","in":"path","description":"Asset ID","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"from","in":"query","description":"Start time for metrics in ISO 8601 format","required":true,"schema":{"type":"string","format":"date-time"},"example":"2024-04-30T14:00:00.0000000+00:00"},{"name":"to","in":"query","description":"End time for metrics in ISO 8601 format","required":true,"schema":{"type":"string","format":"date-time"},"example":"2024-05-31T13:59:59.9990000+00:00"},{"name":"metrics","in":"query","description":"Comma-separated list of metrics to retrieve","schema":{"type":"string"},"example":"active,speed,engineRoadSpeed,engineSpeed,externalBatteryVoltage,crankingVoltage,fuelLevelPct,totalFuel,odometer,perspioOdometer,customerOdometer,runHours,perspioRunHours,customerRunHours,preferredOdometer,preferredRunHours,latitude,longitude"},{"name":"latestState","in":"query","description":"If true, retrieves the record with latest state, irrespective of the from and to time range. Default is true.","schema":{"type":"string"},"example":"true"},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."},{"name":"ContinuationToken","in":"header","required":false,"schema":{"type":"string"},"description":"Opaque token from a previous response's ContinuationToken header, to fetch the next page."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssetMetricsResponseObject"}},"example":[{"speed":[{"ts":"2025-06-19T05:00:00Z","val":"80","pipelineId":"pipeline-001"},{"ts":"2025-06-19T05:05:00Z","val":"85","pipelineId":"pipeline-001"}],"preferredRunHours":[{"ts":"2025-06-19T05:00:00Z","val":"120","pipelineId":"pipeline-001"}],"preferredOdometer":[{"ts":"2025-06-19T05:00:00Z","val":"45230","pipelineId":"pipeline-001"}],"perspioRunHours":[{"ts":"2025-06-19T05:00:00Z","val":"118","pipelineId":"pipeline-002"}],"perspioOdometer":[{"ts":"2025-06-19T05:00:00Z","val":"45190","pipelineId":"pipeline-002"}],"odometer":[{"ts":"2025-06-19T05:00:00Z","val":"45200","pipelineId":"pipeline-001"}],"longitude":[{"ts":"2025-06-19T05:00:00Z","val":"151.2093","pipelineId":"pipeline-001"}],"latitude":[{"ts":"2025-06-19T05:00:00Z","val":"-33.8688","pipelineId":"pipeline-001"}],"externalBatteryVoltage":[{"ts":"2025-06-19T05:00:00Z","val":"2025-12-07","pipelineId":"pipeline-001"}],"engineSpeed":[{"ts":"2025-06-19T05:00:00Z","val":"3000","pipelineId":"pipeline-001"}],"crankingVoltage":[{"ts":"2025-06-19T05:00:00Z","val":"2025-01-12T13:00:00Z","pipelineId":"pipeline-001"}],"active":[{"ts":"2025-06-19T05:00:00Z","val":"true","pipelineId":"pipeline-001"}]}]}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetMetrics","errorType":"ArgumentException","statusCode":400,"request":"GET /api/assetsV2/in-000020/metrics","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetMetrics","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/assetsV2/in-000020/metrics","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/calibrate":{"patch":{"tags":["Telemetry"],"summary":"Update Asset Meters","description":"Update the meters (e.g., odometer or run hours) of an asset.","operationId":"calibrateAsset","parameters":[{"name":"id","in":"path","description":"Asset ID","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalibrateAssetMeters-RequestObject"},"example":[{"value":444,"path":"/odometer","op":"replace"},{"value":445,"path":"/customerOdometer","op":"replace"},{"value":185007,"path":"/perspioMeter","op":"replace"}]}}},"responses":{"200":{"description":"The request was applied."},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.CalibrateAsset","errorType":"ArgumentException","statusCode":400,"request":"PATCH /api/assetsV2/in-000020/calibrate","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.CalibrateAsset","errorType":"NullReferenceException","statusCode":500,"request":"PATCH /api/assetsV2/in-000020/calibrate","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/objects/history":{"get":{"tags":["Telemetry"],"summary":"Get Asset History","description":"Fetch historical data of an asset.","operationId":"getObjectHistory","parameters":[{"name":"ids","in":"query","description":"Comma-separated list of asset IDs","required":true,"schema":{"type":"string"},"example":"in-000053,in-000051,in-000021,in-000023"},{"name":"from","in":"query","description":"Start time for historical data in ISO 8601 format","required":true,"schema":{"type":"string","format":"date-time"},"example":"2024-06-01T00:56:40.0000000+00:00"},{"name":"to","in":"query","description":"End time for historical data in ISO 8601 format","required":true,"schema":{"type":"string","format":"date-time"},"example":"2024-06-18T00:56:40.0000000+00:00"},{"name":"page_size","in":"query","description":"Number of records to return per page","required":true,"schema":{"type":"integer","format":"int32"},"example":1000},{"name":"metrics","in":"query","description":"Comma-separated list of metrics to retrieve","required":true,"schema":{"type":"string"},"example":"altitude,engineOilTemp,engineRoadSpeed,engineSpeed,heading,speed,assetName,assetTypeId,assetId,totalFuel"},{"name":"ContinuationToken","in":"header","description":"Opaque token from a previous response's ContinuationToken header, to fetch the next page.","schema":{"type":"string"}},{"name":"x-perspio-filter","in":"header","description":"Global data filter (JSON-serialised) scoping results to matching assets. Optional keys, each an array of strings: locationHierarchyL1..L3, productHierarchyL1..L3, operationalHierarchyL1..L3, groupIds; plus boolean 'enabled'. Omit for no additional filtering (security-group scoping always applies). Example: {\"locationHierarchyL1\":[\"NSW\"],\"enabled\":true}","required":false,"schema":{"type":"string"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."},{"name":"type","in":"query","required":false,"schema":{"type":"string"},"description":"Object type to return history for."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"Key."},"sourceTimeStamp":{"type":"string","format":"date-time","nullable":true,"description":"Source Time Stamp."},"value":{"type":"object"}}}},"example":[{"key":"temperature","sourceTimeStamp":"2025-06-19T14:30:00Z","value":{"unit":"Celsius","reading":23.5}},{"key":"humidity","sourceTimeStamp":null,"value":{"unit":"%","reading":45}},{"key":"location","sourceTimeStamp":"2025-06-19T14:35:00Z","value":{"latitude":-33.865143,"longitude":151.2099}}]}},"headers":{"ContinuationToken":{"description":"Opaque token to fetch the next page; absent on the last page.","schema":{"type":"string"},"example":"eyJ0b2tlbiI6IjEyMyJ9"},"ResultCount":{"description":"Number of items returned in this page.","schema":{"type":"integer"},"example":50},"TotalCount":{"description":"Total number of items across all pages.","schema":{"type":"integer"},"example":1234}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetObjectHistory","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/objects/history","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/counters":{"get":{"tags":["Telemetry"],"summary":"Get Asset Custom Counters","description":"Fetch custom counters of an asset.","operationId":"getAssetCustomCounters","parameters":[{"name":"id","in":"path","description":"Asset ID","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"perspioCounter1":{"type":"string","description":"Perspio Counter1."},"perspioCounter2":{"type":"string","description":"Perspio Counter2."},"perspioCounter3":{"type":"string","description":"Perspio Counter3."}}},"example":{"perspioCounter1":"12345","perspioCounter2":"67890","perspioCounter3":"abcde"}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetCustomCountersForAsset","errorType":"ArgumentException","statusCode":400,"request":"GET /api/in-000020/counters","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetCustomCountersForAsset","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/in-000020/counters","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"patch":{"tags":["Telemetry"],"summary":"Update Custom Counters","description":"Update custom counters for a specific asset.","operationId":"updateCustomCounters","parameters":[{"name":"id","in":"path","description":"Custom Counter ID","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomCountersForAsset-RequestObject"},"example":[{"op":"replace","path":"/perspio_configuration/counter/perspioCounter1","value":"sc-cc-000012"},{"op":"replace","path":"/perspio_configuration/counter/perspioCounter2","value":"sc-cc-000013"},{"op":"replace","path":"/perspio_configuration/counter/perspioCounter2","value":"sc-cc-000014"}]}}},"responses":{"200":{"description":"The request was applied."},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.UpdateCustomCountersForAsset","errorType":"ArgumentException","statusCode":400,"request":"PATCH /api/in-000020/counters","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.UpdateCustomCountersForAsset","errorType":"NullReferenceException","statusCode":500,"request":"PATCH /api/in-000020/counters","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/metricsummary":{"get":{"tags":["Telemetry"],"summary":"Get Asset Metrics Summary","description":"Fetch metrics summary of an asset.","operationId":"getassetmetricssummary","parameters":[{"name":"id","in":"path","description":"Asset ID","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"from","in":"query","description":"Start time for metrics in ISO 8601 format","required":true,"schema":{"type":"string","format":"date-time"},"example":"2024-04-30T14:00:00.0000000+00:00"},{"name":"to","in":"query","description":"End time for metrics in ISO 8601 format","required":true,"schema":{"type":"string","format":"date-time"},"example":"2024-05-31T13:59:59.9990000+00:00"},{"name":"metrics","in":"query","description":"Comma-separated list of metrics to retrieve","schema":{"type":"string"},"example":"active,speed,engineRoadSpeed,engineSpeed,externalBatteryVoltage,crankingVoltage,fuelLevelPct,totalFuel,odometer,perspioOdometer,customerOdometer,runHours,perspioRunHours,customerRunHours,preferredOdometer,preferredRunHours,latitude,longitude"},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."},{"name":"ContinuationToken","in":"header","required":false,"schema":{"type":"string"},"description":"Opaque token from a previous response's ContinuationToken header, to fetch the next page."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssetMetricsSummaryResponseObject"}},"example":[{"key":"engineTemperature","minVal":65.5,"minTs":"2025-07-01T08:00:00Z","maxVal":98.7,"maxTs":"2025-07-01T14:30:00Z","avgVal":82.3}]}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetMetricsSummary","errorType":"ArgumentException","statusCode":400,"request":"GET /api/assetsV2/in-000020/metricsummary","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetMetricsSummary","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/assetsV2/in-000020/metricsummary","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/anomalies":{"get":{"tags":["Telemetry"],"summary":"Get Asset Anomalies","description":"Fetch anomaly detection analysis of an asset.","operationId":"getAssetDataAnomalies","parameters":[{"name":"id","in":"path","description":"Asset Id","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"daterange","in":"query","description":"Date Range","required":true,"schema":{"type":"string"}},{"name":"timezone","in":"query","description":"TimeZone","schema":{"type":"string"}},{"name":"format","in":"query","description":"1","schema":{"type":"integer"}},{"name":"metrics","in":"query","description":"Semicolon separated list of Keys to filter","schema":{"type":"string"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."},{"name":"ContinuationToken","in":"header","required":false,"schema":{"type":"string"},"description":"Opaque token from a previous response's ContinuationToken header, to fetch the next page."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"anomalies":{"type":"integer","description":"Anomaly flag from the model: 1 = positive anomaly, -1 = negative anomaly, 0 = normal."},"baseline":{"type":"number","description":"Expected baseline value computed by the anomaly model (series_decompose_anomalies, linefit)."},"key":{"type":"string","description":"Identifier of the data series (the asset telemetry key / property path)."},"num":{"type":"number","description":"Numeric value of the data point at this timestamp (rounded to 5 decimal places)."},"score":{"type":"number","description":"Anomaly score for the point; a larger magnitude indicates a stronger anomaly."},"sourceTimeStamp":{"type":"string","description":"UTC timestamp of the data point."},"value":{"type":"object","description":"Value of the data point as returned to the client."}}}},"example":[{"anomalies":{"count":3,"details":[{"time":"2025-06-18T10:00:00Z","severity":"high"},{"time":"2025-06-18T12:00:00Z","severity":"medium"}]},"baseline":{"average":75.5,"threshold":80},"key":"temperatureSensor1","num":{"current":78,"previous":74},"score":{"anomalyScore":0.85,"confidence":0.9},"sourceTimeStamp":"2025-06-19T08:30:00Z","value":{"currentValue":78,"units":"Celsius"}},{"anomalies":{},"baseline":{"average":50.2},"key":"humiditySensor2","num":{"current":48,"previous":49},"score":{},"sourceTimeStamp":null,"value":{"currentValue":48,"units":"Percent"}}]}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetDataAnomalies","errorType":"ArgumentException","statusCode":400,"request":"GET /api/assetsV2/in-000020/anomalies","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetDataAnomalies","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/assetsV2/in-000020/anomalies","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/forecast":{"get":{"tags":["Telemetry"],"summary":"Get Asset Forecast","description":"Fetch forecasting analysis of an asset.","operationId":"getAssetDataForecast","parameters":[{"name":"id","in":"path","description":"Asset Id","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"daterange","in":"query","description":"Date Range","required":true,"schema":{"type":"string"}},{"name":"timezone","in":"query","description":"TimeZone","schema":{"type":"string"}},{"name":"format","in":"query","description":"1","schema":{"type":"integer"}},{"name":"metrics","in":"query","description":"Semicolon separated list of Keys to filter","schema":{"type":"string"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."},{"name":"ContinuationToken","in":"header","required":false,"schema":{"type":"string"},"description":"Opaque token from a previous response's ContinuationToken header, to fetch the next page."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"baseline":{"type":"number","description":"Baseline value of the series at this timestamp."},"forecast":{"type":"number","description":"Forecasted value for the point computed by series_decompose_forecast."},"key":{"type":"string","description":"Identifier of the data series (the asset telemetry key / property path)."},"num":{"type":"number","description":"Numeric value of the data point at this timestamp (rounded to 5 decimal places)."},"sourceTimeStamp":{"type":"string","description":"UTC timestamp of the data point."},"value":{"type":"object","description":"Value of the data point as returned to the client."}}}},"example":[{"baseline":{"average":100,"max":120,"min":80},"forecast":{"predictedAverage":105,"confidenceInterval":[95,115]},"key":"energyUsage","num":{"current":110,"previous":98},"sourceTimeStamp":"2025-06-19T14:00:00Z","value":{"actual":112,"unit":"kWh"}},{"baseline":{"average":30,"max":40,"min":20},"forecast":{"predictedAverage":32,"confidenceInterval":[25,39]},"key":"temperature","num":{"current":33,"previous":31},"sourceTimeStamp":null,"value":{"actual":33,"unit":"Celsius"}}]}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetDataForecast","errorType":"ArgumentException","statusCode":400,"request":"GET /api/assetsV2/in-000020/forecast","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetDataForecast","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/assetsV2/in-000020/forecast","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/trips":{"get":{"tags":["Telemetry"],"summary":"Get Asset Trips","description":"Fetch trips of an asset. Operates on trips in the current tenant.","operationId":"getTrips","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"tripTypes","in":"query","style":"form","schema":{"type":"array","items":{"type":"string"}},"example":["Driving","Idle"]},{"name":"from","in":"query","description":"Start of the trip time range (ISO 8601, UTC). When omitted the service default window applies.","required":false,"schema":{"type":"string","format":"date-time"},"example":"2025-06-01T00:00:00Z"},{"name":"to","in":"query","description":"End of the trip time range (ISO 8601, UTC).","required":false,"schema":{"type":"string","format":"date-time"},"example":"2025-06-30T23:59:59Z"},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."},{"name":"ContinuationToken","in":"header","required":false,"schema":{"type":"string"},"description":"Opaque token from a previous response's ContinuationToken header, to fetch the next page."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssetTrips"}},"example":[{"tripTypeId":1,"tripStatus":2,"deviceId":"G9N60K1KCADR","assetId":"br-003157","driverId":"UnknownDriverId","tenantId":"br-876aec24-5645-425d-a7a1-cb2f14b0432e","lastSeenUTC":"2025-01-14T14:13:33Z","lastSeenEpoch":1736864013,"tripStartTime":"2025-01-14T14:10:21Z","tripDistance":0.09320565,"tripEndTime":"2025-01-14T14:13:33Z","tripDuration":0.05,"isFinalised":true,"tripStartTimeEpoch":1736863821,"tripEndTimeEpoch":1736864013,"previousTripAgoSeconds":47437,"tripLocations":[{"dateTime":"2025-01-14T14:10:21Z","coordinates":[-115.102821,36.1591301],"type":"Point"}],"tripStartLocation":null,"tripEndLocation":null,"tripLocationCount":19,"tripEvents":[{"eventId":"br-003157-1-1736863821063-02802fc84d-13838408","eventTypeId":1}],"tripEventCount":5,"_etag":"\"120048f8-0000-1a00-0000-678676190000\"","id":"br-003157-1-1736863821063","type":null,"correlationId":"proc-000022-20250114-143500-785-c03de","_ts":1736865305,"ttl":-1}]}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.TripApi.GetTrips","errorType":"ArgumentException","statusCode":400,"request":"GET /api/trips/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.TripApi.GetTrips","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/trips/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/trips/recent":{"get":{"tags":["Telemetry"],"summary":"Get Latest Asset Trips","description":"Fetch recent trips of an asset.","operationId":"getLatestAssetTrips","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"count","in":"query","schema":{"type":"integer","default":1},"example":3},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssetTripResponseObject"}},"example":[{"tripTypeId":0,"tripStatus":0,"deviceId":"value","assetId":"value","driverId":"value","tenantId":"value","lastSeenUTC":"value","lastSeenEpoch":0,"tripStartTime":"value","tripDistance":0,"tripEndTime":"value","tripDuration":0,"isFinalised":false,"tripStartTimeEpoch":0,"tripEndTimeEpoch":0,"previousTripAgoSeconds":0,"tripLocations":[{"type":null,"coordinates":null,"dateTime":null}],"tripStartLocation":"value","tripEndLocation":"value","tripLocationCount":0,"tripEvents":[{"eventId":null,"eventTypeId":null}],"tripEventCount":0,"_etag":"value","id":"A-000123","type":"value","correlationId":"value","_ts":0}]}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.TripApi.GetLastCompletedTrips","errorType":"ArgumentException","statusCode":400,"request":"GET /api/trips/in-000020/recent","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.TripApi.GetLastCompletedTrips","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/trips/in-000020/recent","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/utilisation/trips/{id}":{"get":{"tags":["Telemetry"],"summary":"Get Asset Trips","description":"Fetch trips of an asset (utilisation perspective).","operationId":"getAssetTrips","parameters":[{"name":"id","in":"path","description":"Asset Id","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"tripTypes","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}},"description":"Filter to these trip types."},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"Get Asset Trips Utilisation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetTripUtilisation-ResponseObject"},"example":{"tripDate":"2022-12-15T12:00:00Z","deviceId":"G9C6211EC504","7DaysDistance":0,"7DaysDistanceAvg":0,"30DaysDistance":665.39,"30DaysDistanceAvg":22.18,"90DaysDistance":4451.58,"90DaysDistanceAvg":49.46,"7DaysDuration":0,"7DaysDurationAvg":0,"30DaysDuration":31.79,"30DaysDurationAvg":1.06,"90DaysDuration":120.39,"90DaysDurationAvg":1.34,"assetId":"he-000114"}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.TripApi.GetTrips","errorType":"ArgumentException","statusCode":400,"request":"GET /api/trips/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.TripApi.GetTrips","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/trips/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/utilisation/meters":{"get":{"tags":["Telemetry"],"summary":"Gets Asset Meters Utilisation","description":"Fetch meter utilisation report of an asset.","operationId":"getMetersUtilisation","parameters":[{"name":"groupBy","in":"query","schema":{"type":"string"}},{"name":"from","in":"query","description":"Start time in ISO 8601 format","schema":{"type":"string","format":"date-time"},"example":"2024-06-17T13:59:59.9990000+00:00"},{"name":"to","in":"query","description":"End time in ISO 8601 format","schema":{"type":"string","format":"date-time"},"example":"2024-06-17T13:59:59.9990000+00:00"},{"name":"ids","in":"query","description":"Asset Ids","schema":{"type":"string","example":"IN-000123, IN-000125, IN-000126, IN-000127"}},{"name":"x-perspio-filter","in":"header","description":"Global data filter (JSON-serialised) scoping results to matching assets. Optional keys, each an array of strings: locationHierarchyL1..L3, productHierarchyL1..L3, operationalHierarchyL1..L3, groupIds; plus boolean 'enabled'. Omit for no additional filtering (security-group scoping always applies). Example: {\"locationHierarchyL1\":[\"NSW\"],\"enabled\":true}","required":false,"schema":{"type":"string"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."},{"name":"ContinuationToken","in":"header","required":false,"schema":{"type":"string"},"description":"Opaque token from a previous response's ContinuationToken header, to fetch the next page."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier."},"startHours":{"type":"number","format":"double","description":"Start Hours."},"startOdometer":{"type":"number","format":"double","description":"Start Odometer."},"stopHours":{"type":"number","format":"double","description":"Stop Hours."},"stopOdometer":{"type":"number","format":"double","description":"Stop Odometer."},"summaryDateTime":{"type":"string","format":"date-time","description":"Summary Date Time."},"totalDistance":{"type":"number","format":"double","description":"Total Distance."},"totalHours":{"type":"number","format":"double","description":"Total Hours."}}}},"example":[{"id":"trip-001","startHours":8.5,"startOdometer":15000.75,"stopHours":12.25,"stopOdometer":15045.8,"summaryDateTime":"2025-06-19T08:30:00Z","totalDistance":45.05,"totalHours":3.75},{"id":"trip-002","startHours":13,"startOdometer":15045.8,"stopHours":17,"stopOdometer":15090.25,"summaryDateTime":"2025-06-19T13:00:00Z","totalDistance":44.45,"totalHours":4}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetMetersUtilisationReport","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/utilisation/meters","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/utilisation":{"get":{"tags":["Telemetry"],"summary":"Get Asset Utilisation Average","description":"Fetch utilisation average of an asset.","operationId":"getUtilisationAverage","parameters":[{"name":"x-perspio-filter","in":"header","description":"Global data filter (JSON-serialised) scoping results to matching assets. Optional keys, each an array of strings: locationHierarchyL1..L3, productHierarchyL1..L3, operationalHierarchyL1..L3, groupIds; plus boolean 'enabled'. Omit for no additional filtering (security-group scoping always applies). Example: {\"locationHierarchyL1\":[\"NSW\"],\"enabled\":true}","required":false,"schema":{"type":"string"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier."},"total7dDistance":{"type":"number","description":"Total7d Distance."},"total7dHours":{"type":"number","description":"Total7d Hours."},"avg7dDistance":{"type":"number","description":"Average distance over the last 7 days."},"avg7dHours":{"type":"number","description":"Average hours over the last 7 days."},"total30dDistance":{"type":"number","description":"Total30d Distance."},"total30dHours":{"type":"number","description":"Total30d Hours."},"avg30dDistance":{"type":"number","description":"Average distance over the last 30 days."},"avg30dHours":{"type":"number","description":"Average hours over the last 30 days."},"total90dDistance":{"type":"number","description":"Total90d Distance."},"total90dHours":{"type":"number","description":"Total90d Hours."},"avg90dDistance":{"type":"number","description":"Average distance over the last 90 days."},"avg90dHours":{"type":"number","description":"Average hours over the last 90 days."}}}},"example":[{"id":"asset-001","total7dDistance":350.5,"total7dHours":25.75,"avg7dDistance":50.07,"avg7dHours":3.68,"total30dDistance":1420.3,"total30dHours":105,"avg30dDistance":47.34,"avg30dHours":3.5,"total90dDistance":4200.75,"total90dHours":310,"avg90dDistance":46.67,"avg90dHours":3.44},{"id":"asset-002","total7dDistance":275,"total7dHours":22,"avg7dDistance":39.29,"avg7dHours":3.14,"total30dDistance":1100,"total30dHours":95,"avg30dDistance":36.67,"avg30dHours":3.17,"total90dDistance":3350,"total90dHours":290,"avg90dDistance":37.22,"avg90dHours":3.22}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetsUtilisationAverages","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/utilisation/averages","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/utilisation/summary":{"get":{"tags":["Telemetry"],"summary":"Get Asset Utilisation Summary","description":"Fetch utilisation summary of an asset.","operationId":"getUtilisationSummary","parameters":[{"name":"x-perspio-filter","in":"header","description":"Global data filter (JSON-serialised) scoping results to matching assets. Optional keys, each an array of strings: locationHierarchyL1..L3, productHierarchyL1..L3, operationalHierarchyL1..L3, groupIds; plus boolean 'enabled'. Omit for no additional filtering (security-group scoping always applies). Example: {\"locationHierarchyL1\":[\"NSW\"],\"enabled\":true}","required":false,"schema":{"type":"string"}},{"name":"from","in":"query","description":"Start time for metrics in ISO 8601 format","required":true,"schema":{"type":"string","format":"date-time"},"example":"2024-04-30T14:00:00.0000000+00:00"},{"name":"to","in":"query","description":"End time for metrics in ISO 8601 format","required":true,"schema":{"type":"string","format":"date-time"},"example":"2024-05-31T13:59:59.9990000+00:00"},{"name":"objectIds","in":"query","description":"Comma separated list of Asset ids","schema":{"type":"string"}},{"name":"groupby","in":"query","description":"Group by value. Accepted values: day, month, year","required":true,"schema":{"type":"string"},"example":"day"},{"name":"metrics","in":"query","description":"Comma-separated list of metrics to retrieve","required":true,"schema":{"type":"string"},"example":"preferredOdometer,preferredRunHours"},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."},{"name":"ContinuationToken","in":"header","required":false,"schema":{"type":"string"},"description":"Opaque token from a previous response's ContinuationToken header, to fetch the next page."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AdxAssetsSummaryObject"}},"example":[{"id":"summary-001","correlationId":"corr-1234-abcd-5678-efgh","key":"asset-velocity","count":150,"min":12.5,"max":89.7,"minMaxDiff":77.2,"minCorrected":13,"minMaxDiffCorrected":75.5,"avg":45.3,"sum":6795,"fromDateUtc":"2025-06-01","toDateUtc":"2025-06-19T23:59:59Z"}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetsUtilisationSummary","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/utilisation/summary","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/latency/data":{"get":{"tags":["Telemetry"],"summary":"Get Asset Latency Data","description":"Fetch latency data of an asset.","operationId":"getAssetsLatencyData","parameters":[{"name":"daterange","in":"query","description":"Date Range","required":true,"schema":{"type":"string"}},{"name":"timezone","in":"query","description":"TimeZone","schema":{"type":"string"}},{"name":"metrics","in":"query","description":"Semicolon separated list of Keys to filter","schema":{"type":"string"}},{"name":"objectIds","in":"query","description":"Comma separated list of Asset ids","schema":{"type":"string"}},{"name":"pipelineIds","in":"query","description":"Semicolon separated list of pipelineIds to filter","schema":{"type":"string"}},{"name":"ContinuationToken","in":"header","required":false,"schema":{"type":"string"},"description":"Opaque token from a previous response's ContinuationToken header, to fetch the next page."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"ts":{"type":"string","format":"date-time","description":"Ts."},"delay_in_sec":{"type":"number","format":"double","description":"Delay in sec."},"unique_objects_count":{"type":"number","format":"integer","description":"Unique objects count."},"msg_count":{"type":"number","format":"integer","description":"Msg count."}}}},"example":[{"ts":"2025-06-19T10:00:00Z","delay_in_sec":1.25,"unique_objects_count":150,"msg_count":200},{"ts":"2025-06-19T11:00:00Z","delay_in_sec":0.75,"unique_objects_count":180,"msg_count":220},{"ts":"2025-06-19T12:00:00Z","delay_in_sec":2.5,"unique_objects_count":170,"msg_count":210}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetLatency","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/assetsV2/latency/data","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/metrics/count":{"get":{"tags":["Telemetry"],"summary":"Get Asset Metrics Count","description":"Fetch the history update count of an asset.","operationId":"getAssetMetricsCount","parameters":[{"name":"daterange","in":"query","description":"Date Range","required":true,"schema":{"type":"string"}},{"name":"timezone","in":"query","description":"TimeZone","schema":{"type":"string"}},{"name":"objectIds","in":"query","description":"Comma separated list of Asset ids","schema":{"type":"string"}},{"name":"metrics","in":"query","description":"Comma separated list of Keys to filter","schema":{"type":"string"}},{"name":"groupby","in":"query","description":"Comma separated list of keys to summarize data","schema":{"type":"string"}},{"name":"ContinuationToken","in":"header","required":false,"schema":{"type":"string"},"description":"Opaque token from a previous response's ContinuationToken header, to fetch the next page."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"sourceTimeStamp":{"type":"string","description":"Source Time Stamp."},"pipelineId":{"type":"string","description":"Pipeline id."},"count":{"type":"number","description":"Count."}}}},"example":[{"sourceTimeStamp":"2025-06-19T12:00:00Z","pipelineId":"PipelineA","count":150},{"sourceTimeStamp":"2025-06-18T09:30:00Z","pipelineId":"PipelineB","count":85},{"sourceTimeStamp":"2025-06-19T14:15:00Z","pipelineId":"PipelineC","count":230}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetMetricsCount","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/assetsV2/metrics/count","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/socketdata/negotiate":{"post":{"tags":["Socket"],"summary":"Negotiate Socket Connection","description":"Negotiate a realtime telemetry socket connection.","operationId":"negotiateSocketConnection","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"SignalR endpoint URL to connect to."},"accessToken":{"type":"string","description":"Access token for the SignalR connection."}}},"example":{"url":"https://perspio.service.signalr.net/client/?hub=telemetry","accessToken":"eyJhbGciOi..."}}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Sockets.Telemetry.TelemetryHub.TelemetryHubNegotiate","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/telemetry/negotiate","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/socketdata/{assetId}negotiate":{"post":{"tags":["Socket"],"summary":"Negotiate Socket Connection for a specific Asset","description":"Negotiate a realtime telemetry socket connection for an asset.","operationId":"negotiateSocketConnectionForAsset","parameters":[{"name":"assetId","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"SignalR endpoint URL to connect to."},"accessToken":{"type":"string","description":"Access token for the SignalR connection."}}},"example":{"url":"https://perspio.service.signalr.net/client/?hub=telemetry","accessToken":"eyJhbGciOi..."}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Sockets.Telemetry.TelemetryHub.TelemetryHubAssetNegotiate","errorType":"ArgumentException","statusCode":400,"request":"POST /api/telemetry/in-000020/negotiate","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Sockets.Telemetry.TelemetryHub.TelemetryHubAssetNegotiate","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/telemetry/in-000020/negotiate","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/documents":{"get":{"tags":["Documents"],"summary":"Get Asset Documents","description":"Fetch documents of an asset.","operationId":"getAssetDocuments","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"includeReferences","in":"query","description":"Whether to include reference documents in the response","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssetDocumentsResponseObject"}},"example":[{"createdDate":"value","name":"Excavator 12","contentType":"value","description":"value","updatedDate":"value"}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.GetAllDocuments","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/in-000020/documents","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"post":{"tags":["Documents"],"summary":"Upload Asset Document","description":"Create a document for an asset.","operationId":"uploadAssetDocument","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"The image file to upload"},"title":{"type":"string","description":"Title or label for the image (example form field)"},"description":{"type":"string","description":"Optional image description"}},"required":["file"]},"example":{"title":"My Sunset Photo","description":"Taken during golden hour at the beach"}}}},"responses":{"200":{"description":"The request was applied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"description":"Metadata of the uploaded document (key/value, e.g. name, contentType, size)."},"example":{"name":"manual.pdf","contentType":"application/pdf","size":"10240"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.UploadDocument","errorType":"ArgumentException","statusCode":400,"request":"POST /api/in-000020/documents","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.UploadDocument","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/in-000020/documents","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"delete":{"tags":["Documents"],"summary":"Delete Asset Document","description":"Delete a document of an asset.","operationId":"deleteAssetDocument","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"name","in":"query","required":true,"description":"The file name (id) of the document to delete. The API returns 400 when omitted (no documents found to delete).","schema":{"type":"string"},"example":"service-manual.pdf"}],"responses":{"200":{"description":"The delete was applied."},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.DeleteDocuments","errorType":"ArgumentException","statusCode":400,"request":"DELETE /api/in-000020/images","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.DeleteDocuments","errorType":"NullReferenceException","statusCode":500,"request":"DELETE /api/in-000020/images","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"put":{"tags":["Documents"],"summary":"Update Asset Document Metadata","description":"Update document metadata of an asset.","operationId":"updateAssetDocumentMetadata","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"name","in":"query","required":true,"description":"The file name (id) of the document whose metadata to update. Required - the API returns 400 when omitted.","schema":{"type":"string"},"example":"service-manual.pdf"}],"requestBody":{"required":true,"description":"Document metadata fields to update","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Friendly name of the document"},"contentType":{"type":"string","description":"MIME type of the document"},"description":{"type":"string","description":"Short description of the document"},"createdDate":{"type":"string","format":"date-time","description":"When the document was created"},"updatedDate":{"type":"string","format":"date-time","description":"When the document was last updated"},"createdBy":{"type":"string","description":"Email or user ID of creator"},"isPreferred":{"type":"string","enum":["true","false"],"description":"Whether this document is preferred"}},"additionalProperties":false},"example":{"name":"Q2-Financials.pdf","contentType":"application/pdf","description":"Quarterly report for finance","createdDate":"2024-04-10T12:30:00Z","updatedDate":"2025-07-15T15:00:00Z","createdBy":"finance@example.com","isPreferred":"true"}}}},"responses":{"200":{"description":"The request was applied."},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.UpdateDocumentMetadata","errorType":"ArgumentException","statusCode":400,"request":"PUT /api/in-000020/documents","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.UpdateDocumentMetadata","errorType":"NullReferenceException","statusCode":500,"request":"PUT /api/in-000020/documents","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/images":{"get":{"tags":["Documents"],"summary":"Get Asset Images","description":"Fetch images of an asset.","operationId":"getImages","parameters":[{"name":"id","in":"path","description":"Asset Id","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"includeReferences","in":"query","description":"Whether to include reference images in the response","schema":{"type":"boolean","default":false}},{"name":"name","in":"query","required":false,"schema":{"type":"string"},"description":"Filter images by name."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetImages-ResponseObject"},"example":[{"createdDate":"2022-12-16T06:32:20Z","name":"uh-000664/im-2154d2a5-cdd3-4c7c-8d46-e33d54b19563","contentType":"image/jpeg","description":"Updated Description","imageType":"Perspio UI","fileCreator":"bhanu"},{"createdDate":"2022-12-14T12:51:17Z","name":"uh-000664/im-97838a3b-5e85-4141-9848-be61c121468c","contentType":"image/jpeg","Description":"Error","imageType":"Background","fileCreator":"bhanu"},{"createdDate":"2022-12-14T12:47:43Z","name":"uh-000664/im-98c6f1f2-a151-4cdf-b96d-4cf2821d4da3","contentType":"image/jpeg","Description":"Error","imageType":"Background","fileCreator":"bhanu"},{"createdDate":"2022-12-12T04:29:32Z","name":"uh-000664/im-b88b5114-e60b-475a-8aa0-f6b376fdac62","contentType":"image/jpeg","Description":"Error","imageType":"Background","fileCreator":"bhanu"}]}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.GetImages","errorType":"ArgumentException","statusCode":400,"request":"GET /api/in-000020/images","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.GetImages","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/in-000020/images","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"post":{"tags":["Documents"],"summary":"Upload Asset Image","description":"Create an image for an asset.","operationId":"uploadAssetImage","parameters":[{"name":"id","in":"path","description":"Asset Id","required":true,"schema":{"type":"string","example":"in-000020"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"The image file to upload"},"description":{"type":"string","description":"Optional description for the image"},"createdBy":{"type":"string","description":"Uploader identity or email"},"tags":{"type":"string","description":"Comma-separated list of tags"}},"required":["file"]},"encoding":{"file":{"contentType":"image/jpeg"}}}}},"responses":{"200":{"description":"The request was applied.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadImage-ResponseObject"},"example":{"createdDate":"2022-12-15T19:23:44Z","name":"uh-000664/im-2154d2a5-cdd3-4c7c-8d46-e33d54b19563","contentType":"image/jpeg","description":"Perspio","imageType":"Perspio UI","fileCreator":""}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.UploadImage","errorType":"ArgumentException","statusCode":400,"request":"POST /api/in-000020/images","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.UploadImage","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/in-000020/images","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"delete":{"tags":["Documents"],"summary":"Delete Asset Image","description":"Delete images of an asset.","operationId":"deleteImages","parameters":[{"name":"id","in":"path","description":"Asset Id","required":true,"schema":{"type":"string","example":"in-000020"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteImages-RequestObject"},"example":["uh-000664/im-2154d2a5-cdd3-4c7c-8d46-e33d54b19563"]}}},"responses":{"200":{"description":"The delete was applied."},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.DeleteImages","errorType":"ArgumentException","statusCode":400,"request":"DELETE /api/in-000020/images","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.DeleteImages","errorType":"NullReferenceException","statusCode":500,"request":"DELETE /api/in-000020/images","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{systemObjectId}/images":{"put":{"tags":["Documents"],"summary":"Update Asset Image Metadata","description":"Update asset image metadata.","operationId":"updateAssetImageMetadata","parameters":[{"name":"systemObjectId","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}}],"requestBody":{"required":true,"description":"Key-value metadata fields to update. 'name' is required.","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name/ID of the image (required)"},"contentType":{"type":"string","description":"MIME type of the image"},"description":{"type":"string","description":"Short description of the image"},"createdDate":{"type":"string","format":"date-time"},"updatedDate":{"type":"string","format":"date-time"},"createdBy":{"type":"string"},"isPreferred":{"type":"string","enum":["true","false"],"description":"Flag to mark image as preferred"}},"required":["name"],"additionalProperties":false},"example":{"name":"image-456.jpg","contentType":"image/jpeg","description":"Updated team photo","updatedDate":"2025-07-16T12:45:00Z","isPreferred":"true"}}}},"responses":{"200":{"description":"The request was applied."},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.UpdateImageMetadata","errorType":"ArgumentException","statusCode":400,"request":"PUT /api/in-000020/images","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.UpdateImageMetadata","errorType":"NullReferenceException","statusCode":500,"request":"PUT /api/in-000020/images","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/comments":{"get":{"tags":["Documents"],"summary":"Get Asset Comments","description":"Retrieve comments of an asset.","operationId":"getComments","parameters":[{"name":"id","in":"path","description":"Asset Id","required":true,"schema":{"type":"string","example":"in-000020"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetComments-ResponseObject"},"example":[{"createdDate":"2024-12-01T15:45:12Z","name":"in-000089/co-998a77cd-bc21-4901-b671-1c2a5dfbe8a9","contentType":"text/plain","createdBy":"jane.doe@example.com"},{"createdDate":"2025-01-10T09:22:34Z","name":"in-000102/co-a5be3f4e-60f2-4d42-93d2-c1baf7e65b43","contentType":"application/json","createdBy":"admin@system.local"}]}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.GetAllComments","errorType":"ArgumentException","statusCode":400,"request":"GET /api/in-000020/comments","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.GetAllComments","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/in-000020/comments","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"post":{"tags":["Documents"],"summary":"Add Asset Comment","description":"Add a comment to an asset.","operationId":"addAssetComment","parameters":[{"name":"id","in":"path","description":"Asset Id","required":true,"schema":{"type":"string","example":"in-000020"}}],"requestBody":{"description":"Comment data to upload","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentUploadData"},"example":{"comment":"This image needs rotation and cropping.","tag":"NeedsEditing","metadata":{"source":"mobile","deviceId":"dev-000807"}}}}},"responses":{"200":{"description":"The request was applied.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddComments-ResponseObject"},"example":{"createdDate":"value","name":"value","contentType":"value","createdBy":"value"}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.AddComment","errorType":"ArgumentException","statusCode":400,"request":"POST /api/in-000020/comments","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.AddComment","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/in-000020/comments","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{systemObjectId}/links":{"get":{"tags":["Documents"],"summary":"Get Asset Links","description":"Fetch all document links for an asset.","operationId":"getDocumentLinks","parameters":[{"name":"systemObjectId","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"includeReferences","in":"query","description":"Whether to include reference links in the response","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"link":{"type":"string","format":"uri","example":"https://mitch.com.au","description":"Link."},"linkName":{"type":"string","example":"Test Mitch","description":"Link Name."},"systemObjectId":{"type":"string","example":"in-000052","description":"System Object Id."},"timestamp":{"type":"string","format":"date-time","example":"2023-12-05T05:28:49Z","description":"Timestamp."},"rowKey":{"type":"string","format":"uuid","example":"6d7afc22-b9a8-4a06-aaf6-24691a6049d2","description":"Row Key."}}},"example":{"link":"https://example.org/resource/info","linkName":"Fleet Maintenance Portal","systemObjectId":"ve-000431","timestamp":"2024-11-22T14:45:30Z","rowKey":"9f2e59c8-d51f-4f79-bc3a-77b5c3c94b07"}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.GetAllDocumentLinks","errorType":"ArgumentException","statusCode":400,"request":"GET /api/in-000020/links","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.GetAllDocumentLinks","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/in-000020/links","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"post":{"tags":["Documents"],"summary":"Upload Asset Document Link","description":"Create a document link for an asset.","operationId":"uploadAssetDocumentLink","parameters":[{"name":"systemObjectId","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}}],"requestBody":{"required":true,"description":"Metadata for the document link","content":{"application/json":{"schema":{"type":"object","properties":{"linkName":{"type":"string","description":"Human-friendly name for the link"},"link":{"type":"string","format":"uri","description":"Fully qualified link to the document (must be an absolute URI)"},"description":{"type":"string","description":"Optional description for the link"},"createdBy":{"type":"string","description":"User or system that created the link"}},"required":["linkName","link"],"additionalProperties":false},"example":{"linkName":"Product Brochure","link":"https://example.com/files/brochure.pdf","description":"2025 product catalog brochure","createdBy":"marketing@example.com"}}}},"responses":{"200":{"description":"The document link was created."},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.UploadDocumentLink","errorType":"ArgumentException","statusCode":400,"request":"POST /api/in-000020/links","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.UploadDocumentLink","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/in-000020/links","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"delete":{"tags":["Documents"],"summary":"Delete Asset Document Links","description":"Delete document links for an Asset.","operationId":"deleteDocumentLinks","parameters":[{"name":"systemObjectId","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}}],"responses":{"200":{"description":"The delete was applied."},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.DeleteDocumentLinks","errorType":"ArgumentException","statusCode":400,"request":"DELETE /api/in-000020/links","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.DeleteDocumentLinks","errorType":"NullReferenceException","statusCode":500,"request":"DELETE /api/in-000020/links","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{systemObjectId}/links/{documentId}":{"put":{"tags":["Documents"],"summary":"Update Asset Document Link","description":"Update a document link of an asset.","operationId":"updateAssetDocumentLink","parameters":[{"name":"systemObjectId","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"documentId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Updated metadata for the document link","content":{"application/json":{"schema":{"type":"object","properties":{"linkName":{"type":"string","description":"Friendly name for the document link"},"link":{"type":"string","format":"uri","description":"Fully qualified URI of the linked document"},"description":{"type":"string","description":"Optional description of the link"},"createdBy":{"type":"string","description":"Email or user who originally created the link"}},"required":["linkName","link"],"additionalProperties":false},"example":{"linkName":"Updated Product Spec","link":"https://example.com/docs/spec-v2.pdf","description":"Updated spec sheet as of July 2025","createdBy":"engineer@example.com"}}}},"responses":{"200":{"description":"The request was applied."},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.UpdateDocumentLinks","errorType":"ArgumentException","statusCode":400,"request":"PUT /api/in-000020/links/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.UpdateDocumentLinks","errorType":"NullReferenceException","statusCode":500,"request":"PUT /api/in-000020/links/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/documentlibrary":{"get":{"tags":["DocumentLibrary"],"summary":"Get All References","description":"Fetch all document library references.","operationId":"getAllReferences","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DocumentLibraryReference"}},"example":[{"id":"in-doclib-000001","name":"Fleet Safety Documents","description":"Standard safety documentation for fleet vehicles","enabled":true}]}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentLibraryApi.GetAllReferences","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/documentlibrary","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"post":{"tags":["DocumentLibrary"],"summary":"Create Reference","description":"Create a new document library reference.","operationId":"createReference","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentLibraryReferenceRequest"},"example":{"name":"Fleet Safety Documents","description":"Standard safety documentation for fleet vehicles"}}}},"responses":{"200":{"description":"The request was applied.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentLibraryReference"},"example":{"id":"in-doclib-000001","name":"Fleet Safety Documents","description":"Standard safety documentation for fleet vehicles","enabled":true}}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentLibraryApi.CreateReference","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/documentlibrary","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/documentlibrary/{referenceId}":{"get":{"tags":["DocumentLibrary"],"summary":"Get Reference","description":"Fetch a document library reference by ID.","operationId":"getReference","parameters":[{"name":"referenceId","in":"path","description":"Reference Id","required":true,"schema":{"type":"string","example":"in-doclib-000001"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentLibraryReference"},"example":{"id":"in-doclib-000001","name":"Fleet Safety Documents","description":"Standard safety documentation for fleet vehicles","enabled":true}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentLibraryApi.GetReference","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/documentlibrary/in-doclib-000001","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"put":{"tags":["DocumentLibrary"],"summary":"Update Reference","description":"Update an existing document library reference.","operationId":"updateReference","parameters":[{"name":"referenceId","in":"path","description":"Reference Id","required":true,"schema":{"type":"string","example":"in-doclib-000001"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentLibraryReferenceRequest"},"example":{"name":"Updated Fleet Safety Documents","description":"Updated standard safety documentation for fleet vehicles"}}}},"responses":{"200":{"description":"The request was applied.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentLibraryReference"},"example":{"id":"in-doclib-000001","name":"Updated Fleet Safety Documents","description":"Updated standard safety documentation for fleet vehicles","enabled":true}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentLibraryApi.UpdateReference","errorType":"ArgumentException","statusCode":400,"request":"PUT /api/documentlibrary/in-doclib-000001","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentLibraryApi.UpdateReference","errorType":"NullReferenceException","statusCode":500,"request":"PUT /api/documentlibrary/in-doclib-000001","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"delete":{"tags":["DocumentLibrary"],"summary":"Delete Reference","description":"Delete a document library reference and all its associated documents, images, and links.","operationId":"deleteReference","parameters":[{"name":"referenceId","in":"path","description":"Reference Id","required":true,"schema":{"type":"string","example":"in-doclib-000001"}}],"responses":{"200":{"description":"The reference was deleted."},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentLibraryApi.DeleteReference","errorType":"NullReferenceException","statusCode":500,"request":"DELETE /api/documentlibrary/in-doclib-000001","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/workinghours":{"get":{"tags":["Profiles"],"summary":"Get Asset Work Hour Profile","description":"Fetch working hours profile of an asset.","operationId":"getAssetWorkHourProfile","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"Sucsess","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Display name."},"description":{"type":"string","description":"Free-text description."},"enabled":{"type":"boolean","description":"Whether the record is enabled."},"timeZone":{"type":"string","description":"Time Zone."},"schedule":{"type":"array","items":{"type":"object","properties":{"dayOfWeek":{"maximum":6,"minimum":-1,"type":"integer","description":"Day Of Week."},"timeIntervals":{"pattern":"^\\d{2}:\\d{2}-\\d{2}:\\d{2}$","type":"string","description":"Time Intervals."}}}},"createdBy":{"type":"string","description":"User or system that created the record."},"createdDate":{"type":"string","format":"date-time","description":"UTC timestamp when the record was created."},"updatedBy":{"type":"string","description":"User or system that last modified the record."},"updatedDate":{"type":"string","format":"date-time","description":"UTC timestamp when the record was last modified."},"id":{"type":"string","description":"Unique identifier."},"type":{"enum":["WorkingHour"],"type":"string","description":"Type discriminator."},"correlationId":{"type":"string","description":"Client-supplied correlation id, echoed back for request tracing."},"_ts":{"type":"integer","description":"Ts."},"ttl":{"type":"integer","description":"Ttl."}}}},"example":[{"name":"Excavator 12","description":"value","enabled":false,"timeZone":"value","schedule":[{"dayOfWeek":0,"timeIntervals":"value"}],"createdBy":"value","createdDate":"value","updatedBy":"value","updatedDate":"value","id":"A-000123","type":"value","correlationId":"value","_ts":0,"ttl":0}]}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetWorkingHoursProfilesForAsset","errorType":"ArgumentException","statusCode":400,"request":"GET /api/in-000020/workinghours","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetWorkingHoursProfilesForAsset","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/in-000020/workinghours","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"patch":{"tags":["Profiles"],"summary":"Update Asset Work Hour Profile","description":"Update working hours profile of an asset.","operationId":"updateAssetWorkHourProfile","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonPatchDocument"}}},"required":true},"responses":{"200":{"description":"The request was applied."},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.UpdateWorkingHoursProfileForAsset","errorType":"ArgumentException","statusCode":400,"request":"PATCH /api/in-000020/workinghours","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.UpdateWorkingHoursProfileForAsset","errorType":"NullReferenceException","statusCode":500,"request":"PATCH /api/in-000020/workinghours","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/shareconfig":{"get":{"tags":["Profiles"],"summary":"Get Asset Share Configs","description":"Fetch share configs of an asset.","operationId":"getShareConfigsForAsset","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"tenantId":{"type":"string","description":"Tenant the record belongs to."},"assetId":{"type":"string","description":"Asset id."},"targetAssetId":{"type":"string","description":"Target asset id."},"targetTenantId":{"type":"string","description":"Target tenant id."},"actionType":{"type":"number","description":"Action type."},"status":{"type":"number","description":"Status."},"configShareType":{"type":"number","description":"Share configuration type."},"profileId":{"type":"string","description":"Profile id."},"pipelineId":{"type":"string","description":"Pipeline id."},"errors":{"description":"Errors, if any."},"id":{"type":"string","description":"Unique identifier."},"type":{"type":"string","description":"Type discriminator."},"correlationId":{"type":"string","description":"Client-supplied correlation id, echoed back for request tracing."},"_ts":{"type":"number","description":"Ts."},"assetName":{"type":"string","description":"Asset name."},"assetTypeId":{"type":"number","description":"Asset type id."},"customerAssetId":{"type":"string","description":"Customer-assigned asset id."}}}},"example":[{"tenantId":"tenant-abc123","assetId":"asset-001","targetAssetId":"asset-002","targetTenantId":"tenant-def456","actionType":2,"status":1,"configShareType":0,"profileId":"profile-789","pipelineId":"pipeline-456","errors":{"code":"None","message":""},"id":"transfer-xyz789","type":"AssetShare","correlationId":"corr-20250619-001","_ts":1750300000,"assetName":"Front Loader CAT 950","assetTypeId":3,"customerAssetId":"CUST-950-FL"}]}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetShareConfiguration.GetAllShareConfigsForAsset","errorType":"ArgumentException","statusCode":400,"request":"GET /api/in-000020/shareconfig","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetShareConfiguration.GetAllShareConfigsForAsset","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/in-000020/shareconfig","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"post":{"tags":["Profiles"],"summary":"Create Asset Share Config","description":"Create share config for an asset.","operationId":"createAssetShareConfig","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"requestBody":{"content":{"application/json":{"schema":{"required":["tenantId","assetId","targetTenantId","configShareType","type"],"type":"object","properties":{"tenantId":{"type":"string","example":"in-c5a96640-9788-49bd-b71e-e6c65b4a427f"},"assetId":{"type":"string","example":"in-000004"},"targetTenantId":{"type":"string","example":"aa-e4a5678f-2db1-49df-b2f5-1434dcd0c5d1"},"targetAssetId":{"type":"string","nullable":true,"example":null},"configShareType":{"type":"integer","description":"Type of config share (e.g., 1 = Full, 2 = Partial).","example":1},"profileId":{"type":"string","nullable":true,"example":null},"type":{"type":"string","description":"Fixed value representing the type of request.","example":"ConfigShare"}}},"example":{"tenantId":"in-3f21a890-1234-4567-b89c-abcdef123456","assetId":"in-000123","targetTenantId":"aa-9b876543-210f-4c3e-9a98-7654321fedcb","targetAssetId":"aa-000789","configShareType":2,"profileId":"profile-abc123","type":"ConfigShare"}}}},"responses":{"200":{"description":"The request was applied.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier."},"type":{"type":"string","description":"Type discriminator."},"correlationId":{"type":"string","description":"Client-supplied correlation id, echoed back for request tracing."},"_ts":{"type":"string","description":"Ts."},"tenantId":{"type":"string","description":"Tenant the record belongs to."},"assetId":{"type":"string","description":"Asset id."},"targetAssetId":{"type":"string","description":"Target asset id."},"targetTenantId":{"type":"string","description":"Target tenant id."},"actionType":{"type":"string","description":"Action type."},"status":{"type":"string","description":"Status."},"configShareType":{"type":"string","description":"Share configuration type."},"profileId":{"type":"string","description":"Profile id."},"pipelineId":{"type":"string","description":"Pipeline id."},"errors":{"type":"array","items":{"type":"object"},"description":"Errors, if any."},"createdBy":{"type":"string","description":"User or system that created the record."},"createdDate":{"type":"string","description":"UTC timestamp when the record was created."},"updatedBy":{"type":"string","description":"User or system that last modified the record."},"updatedDate":{"type":"string","description":"UTC timestamp when the record was last modified."}}},"example":{"id":"value","type":"value","correlationId":"value","_ts":"value","tenantId":"value","assetId":"value","targetAssetId":"value","targetTenantId":"value","actionType":"value","status":"value","configShareType":"value","profileId":"value","pipelineId":"value","errors":[{}],"createdBy":"value","createdDate":"value","updatedBy":"value","updatedDate":"value"}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetShareConfiguration.UpsertShareConfigForAsset","errorType":"ArgumentException","statusCode":400,"request":"POST /api/in-000020/shareconfig","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetShareConfiguration.UpsertShareConfigForAsset","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/in-000020/shareconfig","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"put":{"tags":["Profiles"],"summary":"Update Asset Share Config","description":"Update share config of an asset.","operationId":"updateAssetShareConfig","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"The request was applied."},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetShareConfiguration.UpsertShareConfigForAsset","errorType":"ArgumentException","statusCode":400,"request":"PUT /api/in-000020/shareconfig","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetShareConfiguration.UpsertShareConfigForAsset","errorType":"NullReferenceException","statusCode":500,"request":"PUT /api/in-000020/shareconfig","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}},"requestBody":{"content":{"application/json":{"schema":{"required":["tenantId","assetId","targetTenantId","configShareType","type"],"type":"object","properties":{"tenantId":{"type":"string","example":"in-c5a96640-9788-49bd-b71e-e6c65b4a427f"},"assetId":{"type":"string","example":"in-000004"},"targetTenantId":{"type":"string","example":"aa-e4a5678f-2db1-49df-b2f5-1434dcd0c5d1"},"targetAssetId":{"type":"string","nullable":true,"example":null},"configShareType":{"type":"integer","description":"Type of config share (e.g., 1 = Full, 2 = Partial).","example":1},"profileId":{"type":"string","nullable":true,"example":null},"type":{"type":"string","description":"Fixed value representing the type of request.","example":"ConfigShare"}}},"example":{"tenantId":"in-3f21a890-1234-4567-b89c-abcdef123456","assetId":"in-000123","targetTenantId":"aa-9b876543-210f-4c3e-9a98-7654321fedcb","targetAssetId":"aa-000789","configShareType":2,"profileId":"profile-abc123","type":"ConfigShare"}}}}}},"/{id}/shareconfig/{shareConfigId}":{"delete":{"tags":["Profiles"],"summary":"Delete Asset Share Config","description":"Delete a share config of an asset.","operationId":"deleteShareConfigForAsset","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"shareConfigId","in":"path","required":true,"schema":{"type":"string"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"The delete was applied."},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetShareConfiguration.DeleteShareConfigForAsset","errorType":"ArgumentException","statusCode":400,"request":"DELETE /api/in-000020/shareconfig/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetShareConfiguration.DeleteShareConfigForAsset","errorType":"NullReferenceException","statusCode":500,"request":"DELETE /api/in-000020/shareconfig/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/shareconfigbyid/{shareConfigId}":{"get":{"tags":["Profiles"],"summary":"Get Asset Share Config","description":"Fetch share config of an asset.","operationId":"getAssetShareConfig","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"shareConfigId","in":"path","required":true,"schema":{"type":"string"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShareConfigResponseObject"},"example":{"tenantId":"tenant-xyz789","assetId":"asset-00123","targetAssetId":"asset-00987","targetTenantId":"tenant-abc456","actionType":1,"status":0,"configShareType":2,"profileId":"profile-321","pipelineId":"pipeline-876","errors":{"code":"NO_ERROR","message":"Configuration shared successfully."},"id":"share-config-20250619-001","type":"ConfigShare","correlationId":"corr-20250619-xyz","_ts":1750305555,"assetName":"Hydraulic Excavator ZX350","assetTypeId":12,"customerAssetId":"CUST-ZX350"}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetShareConfiguration.GetShareConfigForAssetById","errorType":"ArgumentException","statusCode":400,"request":"GET /api/in-000020/shareconfigbyid/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetShareConfiguration.GetShareConfigForAssetById","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/in-000020/shareconfigbyid/in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/shareConfig":{"get":{"tags":["Profiles"],"summary":"Get Assets Share Config","description":"Fetch share configurations of an asset.","operationId":"getAssetsShareConfig","parameters":[{"name":"shareConfigEnabled","in":"query","description":"Flag to enable or disable share configuration","required":true,"schema":{"type":"boolean"},"example":true},{"name":"x-perspio-filter","in":"header","description":"Global data filter (JSON-serialised) scoping results to matching assets. Optional keys, each an array of strings: locationHierarchyL1..L3, productHierarchyL1..L3, operationalHierarchyL1..L3, groupIds; plus boolean 'enabled'. Omit for no additional filtering (security-group scoping always applies). Example: {\"locationHierarchyL1\":[\"NSW\"],\"enabled\":true}","required":false,"schema":{"type":"string"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ShareConfigResponseObject"}},"example":[{"tenantId":"tenant-xyz789","assetId":"asset-00123","targetAssetId":"asset-00987","targetTenantId":"tenant-abc456","actionType":1,"status":0,"configShareType":2,"profileId":"profile-321","pipelineId":"pipeline-876","errors":{"code":"NO_ERROR","message":"Configuration shared successfully."},"id":"share-config-20250619-001","type":"ConfigShare","correlationId":"corr-20250619-xyz","_ts":1750305555,"assetName":"Hydraulic Excavator ZX350","assetTypeId":12,"customerAssetId":"CUST-ZX350"},{"tenantId":"tenant-qwe456","assetId":"asset-00456","targetAssetId":"asset-00876","targetTenantId":"tenant-lmn123","actionType":2,"status":1,"configShareType":2,"profileId":"profile-321","pipelineId":"pipeline-876","errors":{"code":"NO_ERROR","message":"Configuration shared successfully."},"id":"share-config-20250619-001","type":"ConfigShare","correlationId":"corr-20250619-xyz","_ts":1750305555,"assetName":"Hydraulic Excavator ZX350","assetTypeId":12,"customerAssetId":"CUST-ZX350"}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetShareConfiguration.GetAssetsWithShareConfig","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/assets","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/servicing":{"get":{"tags":["Servicing"],"summary":"Get Asset Servicing Info","description":"Fetch servicing information of an asset.","operationId":"getAssetMasterServicing","parameters":[{"name":"x-perspio-filter","in":"header","description":"Global data filter (JSON-serialised) scoping results to matching assets. Optional keys, each an array of strings: locationHierarchyL1..L3, productHierarchyL1..L3, operationalHierarchyL1..L3, groupIds; plus boolean 'enabled'. Omit for no additional filtering (security-group scoping always applies). Example: {\"locationHierarchyL1\":[\"NSW\"],\"enabled\":true}","required":false,"schema":{"type":"string"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"Id":{"type":"string","description":"Unique identifier."},"Name":{"type":"string","description":"Display name."},"Servicing":{"type":"object","properties":{"description":{"type":"string","description":"Free-text description."},"description1":{"type":"string","description":"Description1."},"description2":{"type":"string","description":"Description2."},"description3":{"type":"string","description":"Description3."},"lastServiceDate":{"type":"string","format":"date-time","nullable":true,"description":"Last Service Date."},"lastServiceDate1":{"type":"string","format":"date-time","nullable":true,"description":"Last Service Date1."},"lastServiceDate2":{"type":"string","format":"date-time","nullable":true,"description":"Last Service Date2."},"lastServiceDate3":{"type":"string","format":"date-time","nullable":true,"description":"Last Service Date3."},"meterReading":{"type":"string","description":"Meter Reading."},"meterReading1":{"type":"string","description":"Meter Reading1."},"meterReading2":{"type":"string","description":"Meter Reading2."},"meterReading3":{"type":"string","description":"Meter Reading3."},"nextServiceDate":{"type":"string","format":"date-time","nullable":true,"description":"Next Service Date."},"nextServiceDate1":{"type":"string","format":"date-time","nullable":true,"description":"Next Service Date1."},"nextServiceDate2":{"type":"string","format":"date-time","nullable":true,"description":"Next Service Date2."},"nextServiceDate3":{"type":"string","format":"date-time","nullable":true,"description":"Next Service Date3."},"nextServiceDueIn":{"type":"string","description":"Next Service Due In."},"nextServiceDueIn1":{"type":"string","description":"Next Service Due In1."},"nextServiceDueIn2":{"type":"string","description":"Next Service Due In2."},"nextServiceDueIn3":{"type":"string","description":"Next Service Due In3."},"scheduleUnit":{"type":"string","description":"Schedule Unit."},"scheduleUnit1":{"type":"string","description":"Schedule Unit1."},"scheduleUnit2":{"type":"string","description":"Schedule Unit2."},"scheduleUnit3":{"type":"string","description":"Schedule Unit3."},"serviceSchedule":{"type":"string","description":"Service Schedule."},"serviceSchedule1":{"type":"string","description":"Service Schedule1."},"serviceSchedule2":{"type":"string","description":"Service Schedule2."},"serviceSchedule3":{"type":"string","description":"Service Schedule3."},"serviceScheduleId":{"type":"string","description":"Service Schedule Id."},"serviceScheduleId1":{"type":"string","description":"Service Schedule Id1."},"serviceScheduleId2":{"type":"string","description":"Service Schedule Id2."},"serviceScheduleId3":{"type":"string","description":"Service Schedule Id3."}}}}}},"example":[{"Id":"A-000123","Name":"Excavator 12","Servicing":{"description":"Free-text value","description1":"value","description2":"value","description3":"value","lastServiceDate":null,"lastServiceDate1":null,"lastServiceDate2":null,"lastServiceDate3":null,"meterReading":"value","meterReading1":"value","meterReading2":"value","meterReading3":"value","nextServiceDate":null,"nextServiceDate1":null,"nextServiceDate2":null,"nextServiceDate3":null,"nextServiceDueIn":"value","nextServiceDueIn1":"value","nextServiceDueIn2":"value","nextServiceDueIn3":"value","scheduleUnit":"value","scheduleUnit1":"value","scheduleUnit2":"value","scheduleUnit3":"value","serviceSchedule":"value","serviceSchedule1":"value","serviceSchedule2":"value","serviceSchedule3":"value","serviceScheduleId":"value","serviceScheduleId1":"value","serviceScheduleId2":"value","serviceScheduleId3":"value"}}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetMasterServicingApi.GetAssetMasterServicing","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/servicing","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/servicing/entries":{"get":{"tags":["Servicing"],"summary":"Get Asset Service Entries","description":"Fetch service entries of an asset.","operationId":"getAssetServiceEntries","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"ContinuationToken","in":"header","required":false,"schema":{"type":"string"},"description":"Opaque token from a previous response's ContinuationToken header, to fetch the next page."},{"name":"assetId","in":"query","required":false,"schema":{"type":"string"},"description":"Filter to the service records for this asset id (in addition to the asset in the path)."},{"name":"page_size","in":"query","description":"Maximum number of items per page. When greater than 0 the response is paged and returns the ContinuationToken, ResultCount and TotalCount response headers.","required":false,"schema":{"type":"integer"},"example":50}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Opaque continuation token for the next page (echoes the ContinuationToken response header)."},"value":{"type":"array","items":{"type":"object","properties":{"assetId":{"type":"string","description":"Asset id."},"serviceReminder":{"type":"string","description":"Service Reminder."},"serviceDate":{"type":"string","format":"date-time","description":"Service Date."},"serviceType":{"type":"string","description":"Service Type."},"runHours":{"type":"number","description":"Run Hours."},"odometer":{"type":"number","description":"Odometer."},"servicedBy":{"type":"string","description":"Serviced By."},"externalSourceId":{"type":"string","description":"External Source Id."},"externalCustomerId":{"type":"string","description":"External Customer Id."},"createdBy":{"type":"string","description":"User or system that created the record."},"createdDate":{"type":"string","format":"date-time","description":"UTC timestamp when the record was created."},"updatedBy":{"type":"string","description":"User or system that last modified the record."},"updatedDate":{"type":"string","format":"date-time","description":"UTC timestamp when the record was last modified."},"id":{"type":"string","description":"Unique identifier."},"type":{"type":"string","description":"Type discriminator."},"correlationId":{"type":"string","description":"Client-supplied correlation id, echoed back for request tracing."},"_ts":{"type":"integer","description":"Ts."},"ttl":{"type":"integer","description":"Ttl."}}}}}},"example":{"key":"eyJ0b2tlbiI6IjEyMyJ9","value":[{"assetId":"bh-000999","serviceReminder":"bh-sr-000201","serviceDate":"2025-05-01T10:00:00Z","serviceType":"Annual Inspection","runHours":4230.5,"odometer":75200,"servicedBy":"FleetCare","externalSourceId":"svc-ext-789","externalCustomerId":"cust-0021","createdBy":"jane.doe@inauro.io","createdDate":"2025-05-01T12:15:30Z","updatedBy":"jane.doe@inauro.io","updatedDate":"2025-05-01T12:15:30Z","id":"bh-se-000101","type":"ServiceEntry","correlationId":"api-20250501-121530-123-xyz45","_ts":1746585330,"ttl":-1},{"assetId":"bh-000888","serviceReminder":"bh-sr-000202","serviceDate":"2024-12-15T08:00:00Z","serviceType":"Battery Check","runHours":180,"odometer":11050,"servicedBy":"BatteryWorld","externalSourceId":null,"externalCustomerId":null,"createdBy":"john.smith@inauro.io","createdDate":"2024-12-15T09:45:00Z","updatedBy":"john.smith@inauro.io","updatedDate":"2024-12-15T09:45:00Z","id":"bh-se-000102","type":"ServiceEntry","correlationId":"api-20241215-094500-987-abcd9","_ts":1734207900,"ttl":-1}]}}},"headers":{"ContinuationToken":{"description":"Opaque token to fetch the next page; absent on the last page.","schema":{"type":"string"},"example":"eyJ0b2tlbiI6IjEyMyJ9"},"ResultCount":{"description":"Number of items returned in this page.","schema":{"type":"integer"},"example":50},"TotalCount":{"description":"Total number of items across all pages.","schema":{"type":"integer"},"example":1234}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Servicing.ServicingApi.GetAllServiceEntries","errorType":"ArgumentException","statusCode":400,"request":"GET /api/entries?assetId=in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Servicing.ServicingApi.GetAllServiceEntries","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/entries?assetId=in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/servicing/programs":{"get":{"tags":["Servicing"],"summary":"Get Asset Service Programs","description":"Fetch service programs of an asset.","operationId":"getAssetServicePrograms","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"assetId","in":"query","required":false,"schema":{"type":"string"},"description":"Filter to the service records for this asset id (in addition to the asset in the path)."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","example":"Dumpers, Dozers, Backhoes, Graders","description":"Display name."},"description":{"type":"string","example":"Regular Earthmoving","description":"Free-text description."},"externalSourceId":{"type":"string","description":"External Source Id."},"externalCustomerId":{"type":"string","description":"External Customer Id."},"linkedSchedules":{"type":"array","items":{"type":"string"},"example":["bh-ss-000001","bh-ss-000006"]},"linkedAssetsCount":{"type":"integer","example":49,"description":"Linked Assets Count."},"createdBy":{"type":"string","example":"max@inauro.io","description":"User or system that created the record."},"createdDate":{"type":"string","format":"date-time","example":"2025-06-05T23:49:36Z","description":"UTC timestamp when the record was created."},"updatedBy":{"type":"string","example":"max@inauro.io","description":"User or system that last modified the record."},"updatedDate":{"type":"string","format":"date-time","example":"2025-06-16T06:06:51Z","description":"UTC timestamp when the record was last modified."},"id":{"type":"string","example":"bh-sp-000002","description":"Unique identifier."},"type":{"type":"string","example":"ServiceProgram","description":"Type discriminator."},"correlationId":{"type":"string","example":"api-20250616-060650-507-bd7ff","description":"Client-supplied correlation id, echoed back for request tracing."},"_ts":{"type":"integer","example":1750054011,"description":"Ts."},"ttl":{"type":"integer","example":-1,"description":"Ttl."}}}},"example":[{"name":"Excavator 12","description":"value","externalSourceId":"value","externalCustomerId":"value","linkedSchedules":["value"],"linkedAssetsCount":0,"createdBy":"value","createdDate":"value","updatedBy":"value","updatedDate":"value","id":"A-000123","type":"value","correlationId":"value","_ts":0,"ttl":0}]}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Servicing.ServicingApi.GetAllServicePrograms","errorType":"ArgumentException","statusCode":400,"request":"GET /api/programs?assetId=in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Servicing.ServicingApi.GetAllServicePrograms","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/programs?assetId=in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/servicing/reminders":{"get":{"tags":["Servicing"],"summary":"Get Asset Service Reminders","description":"Fetch service reminders of an asset.","operationId":"getAssetServiceReminders","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"in-000020"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."},{"name":"ContinuationToken","in":"header","required":false,"schema":{"type":"string"},"description":"Opaque token from a previous response's ContinuationToken header, to fetch the next page."},{"name":"assetId","in":"query","required":false,"schema":{"type":"string"},"description":"Filter to the service records for this asset id (in addition to the asset in the path)."},{"name":"page_size","in":"query","description":"Maximum number of items per page. When greater than 0 the response is paged and returns the ContinuationToken, ResultCount and TotalCount response headers.","required":false,"schema":{"type":"integer"},"example":50}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Opaque continuation token for the next page (echoes the ContinuationToken response header)."},"value":{"type":"array","items":{"type":"object","properties":{"assetId":{"type":"string","description":"Asset id."},"externalSourceId":{"type":"string","description":"External Source Id."},"externalCustomerId":{"type":"string","description":"External Customer Id."},"scheduleId":{"type":"string","description":"Schedule Id."},"scheduleName":{"type":"string","description":"Schedule Name."},"scheduleDescription":{"type":"string","description":"Schedule Description."},"scheduleType":{"type":"integer","description":"Schedule Type."},"programId":{"type":"string","description":"Program Id."},"programName":{"type":"string","description":"Program Name."},"programDescription":{"type":"string","description":"Program Description."},"lastServiceId":{"type":"string","description":"Last Service Id."},"dateLastService":{"type":"string","format":"date-time","description":"Date Last Service."},"dateNextService":{"type":"string","description":"Date Next Service."},"primaryMeterName":{"type":"string","description":"Primary Meter Name."},"primaryLastServiceValue":{"type":"number","description":"Primary Last Service Value."},"primaryNextServiceValue":{"type":"number","description":"Primary Next Service Value."},"primaryCurrentMeterValue":{"type":"number","description":"Primary Current Meter Value."},"primaryCurrentMeterDiff":{"type":"number","description":"Primary Current Meter Diff."},"primaryMeterType":{"type":"integer","description":"Primary Meter Type."},"secondaryMeterName":{"type":"string","description":"Secondary Meter Name."},"secondaryLastServiceValue":{"type":"number","description":"Secondary Last Service Value."},"secondaryNextServiceValue":{"type":"number","description":"Secondary Next Service Value."},"secondaryCurrentMeterValue":{"type":"number","description":"Secondary Current Meter Value."},"secondaryCurrentMeterDiff":{"type":"number","description":"Secondary Current Meter Diff."},"secondaryMeterType":{"type":"integer","description":"Secondary Meter Type."},"createdBy":{"type":"string","description":"User or system that created the record."},"createdDate":{"type":"string","format":"date-time","description":"UTC timestamp when the record was created."},"updatedBy":{"type":"string","description":"User or system that last modified the record."},"updatedDate":{"type":"string","format":"date-time","description":"UTC timestamp when the record was last modified."},"id":{"type":"string","description":"Unique identifier."},"type":{"type":"string","description":"Type discriminator."},"correlationId":{"type":"string","description":"Client-supplied correlation id, echoed back for request tracing."},"_ts":{"type":"integer","description":"Ts."},"ttl":{"type":"integer","description":"Ttl."}}}}}},"example":{"key":"eyJ0b2tlbiI6IjEyMyJ9","value":[{"assetId":"bh-000245","externalSourceId":null,"externalCustomerId":null,"scheduleId":"bh-ss-000015","scheduleName":"500 Hrs Service","scheduleDescription":"Standard 500hr maintenance","scheduleType":2,"programId":"bh-sp-000010","programName":"Excavators and Loaders","programDescription":"Heavy duty construction equipment","lastServiceId":"bh-se-000078","dateLastService":"2024-12-15T10:00:00Z","dateNextService":"2025-06-15T10:00:00Z","primaryMeterName":"engineRunHours","primaryLastServiceValue":500,"primaryNextServiceValue":1000,"primaryCurrentMeterValue":920,"primaryCurrentMeterDiff":80,"primaryMeterType":1,"secondaryMeterName":"odometer","secondaryLastServiceValue":15000,"secondaryNextServiceValue":18000,"secondaryCurrentMeterValue":17500,"secondaryCurrentMeterDiff":500,"secondaryMeterType":1,"createdBy":"jane.doe@inauro.io","createdDate":"2024-12-15T12:22:10Z","updatedBy":"jane.doe@inauro.io","updatedDate":"2025-06-16T02:31:09Z","id":"bh-sr-000115","type":"ServiceReminder","correlationId":"api-20250616-023108-874-xyz11","_ts":1750054269,"ttl":-1}]}}},"headers":{"ContinuationToken":{"description":"Opaque token to fetch the next page; absent on the last page.","schema":{"type":"string"},"example":"eyJ0b2tlbiI6IjEyMyJ9"},"ResultCount":{"description":"Number of items returned in this page.","schema":{"type":"integer"},"example":50},"TotalCount":{"description":"Total number of items across all pages.","schema":{"type":"integer"},"example":1234}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Servicing.ServicingApi.GetAllServiceReminders","errorType":"ArgumentException","statusCode":400,"request":"GET /api/reminders?assetId=in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid asset id format: 'abc123'. Expected format: xx-nnnnnn or 'system'"}}}},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Servicing.ServicingApi.GetAllServiceReminders","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/reminders?assetId=in-000020","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/assetstask":{"post":{"tags":["Jobs"],"summary":"Create Asset Update Job","description":"Submit an asset update task","operationId":"createAssetUpdateJob","requestBody":{"description":"Bulk update request payload","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetBulkUpdateRequest"}}}},"responses":{"202":{"description":"The request was applied.","content":{"application/json":{"schema":{"type":"object","properties":{"statusUrl":{"type":"string","nullable":true,"description":"Status Url."}}},"example":{"statusUrl":"https://talk.perspio.dev/tasks/v3/in-task-61667e2d-5268-42fa-bd82-87cf66d7188a"}}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.SubmitBulkAssetUpdateTask","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/assetstask","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/importassetstask":{"post":{"tags":["Jobs"],"summary":"Create Asset Import Job","description":"Submit an assets import task","operationId":"createAssetImportJob","requestBody":{"content":{"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","description":"The CSV file to import.","format":"binary"}}}}},"required":true},"responses":{"202":{"description":"The request was applied.","content":{"application/json":{"schema":{"type":"object","properties":{"statusUrl":{"type":"string","nullable":true,"description":"Status Url."}}},"example":{"statusUrl":"https://talk.perspio.dev/tasks/v3/in-task-61667e2d-5268-42fa-bd82-87cf66d7188a"}}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetMasterApi.SubmitImportAssetsTask","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/importassetstask","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/provisionassetstask":{"post":{"tags":["Jobs"],"summary":"Create Asset Provisioning Task","description":"Submit an assets provisioning task","operationId":"createAssetProvisioningTask","requestBody":{"content":{"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","description":"The CSV file to import.","format":"binary"}}}}},"required":true},"responses":{"202":{"description":"The request was applied.","content":{"application/json":{"schema":{"type":"object","properties":{"statusUrl":{"type":"string","nullable":true,"description":"Status Url."}}},"example":{"statusUrl":"https://talk.perspio.dev/tasks/v3/in-task-61667e2d-5268-42fa-bd82-87cf66d7188a"}}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.AssetMasterApi.SubmitAssetsProvisioningTask","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/provisionassetstask","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/data":{"get":{"tags":["Data Explorer"],"summary":"Fetch and explore system object data","description":"Fetch system object data for assets, devices, events, etc. Supports filtering, field selection, and pagination.","operationId":"getSystemObjectData","parameters":[{"name":"dataType","in":"query","description":"Type of data to retrieve","required":true,"schema":{"type":"string","enum":["assets","assetevents","asseteventscount","assettrips","assetmetrics","assetrelationships","assetmetricsaggregate","devices","devicemetrics"]}},{"name":"scope","in":"query","description":"Asset scope (serialized object or ID)","required":false,"schema":{"type":"string"}},{"name":"ids","in":"query","description":"Comma-separated list of object IDs","required":false,"schema":{"type":"string"}},{"name":"signals","in":"query","description":"Comma-separated list of signal/field names","required":false,"schema":{"type":"string"}},{"name":"options","in":"query","description":"Comma-separated list of options (e.g., insidegeofence, locationupdate, relateddevices, outofdaterange)","required":false,"schema":{"type":"string"}},{"name":"condition","in":"query","description":"Serialized rule/condition for advanced filtering","required":false,"schema":{"type":"string"}},{"name":"from","in":"query","description":"Start date/time (ISO 8601)","required":false,"schema":{"type":"string","format":"date-time"},"example":"2024-07-01T00:00:00.0000000+00:00"},{"name":"to","in":"query","description":"End date/time (ISO 8601)","required":false,"schema":{"type":"string","format":"date-time"},"example":"2024-07-01T00:00:00.0000000+00:00"},{"name":"page_size","in":"query","description":"Number of items per page","schema":{"type":"integer","default":50,"minimum":1},"example":10},{"name":"x-perspio-filter","in":"header","description":"Global data filter (JSON-serialised) scoping results to matching assets. Optional keys, each an array of strings: locationHierarchyL1..L3, productHierarchyL1..L3, operationalHierarchyL1..L3, groupIds; plus boolean 'enabled'. Omit for no additional filtering (security-group scoping always applies). Example: {\"locationHierarchyL1\":[\"NSW\"],\"enabled\":true}","required":false,"schema":{"type":"string"}},{"name":"includedisabledassets","in":"header","required":false,"schema":{"type":"boolean"},"example":false,"description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false."},{"name":"ContinuationToken","in":"header","required":false,"schema":{"type":"string"},"description":"Opaque token from a previous response's ContinuationToken header, to fetch the next page."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"dataType":{"type":"string","description":"Data Type."},"inputParametersQuery":{"type":"string","description":"Input Parameters Query."},"errors":{"type":"array","items":{"type":"string"},"description":"Errors, if any."},"dataItems":{"type":"array","items":{"type":"object","properties":{"objectId":{"type":"string","description":"Object Id."},"data":{"type":"object","additionalProperties":true}}}}}},"example":{"dataType":"assets","inputParametersQuery":"dataType=assets&scope=in-000001&from=2023-01-01T00:00:00Z&to=2023-01-31T23:59:59Z&page_size=10","errors":[],"dataItems":[{"objectId":"in-000001","data":{"assetName":"Asset Name","assetTypeId":15,"latitude":-33.82,"longitude":150.93,"lastCommunicatedUtc":"2023-06-21T11:04:14Z","locationHierarchyL1":"Australia","locationHierarchyL2":"NSW","locationHierarchyL3":"Sydney"}}]}}},"headers":{"ContinuationToken":{"description":"Opaque token to fetch the next page; absent on the last page.","schema":{"type":"string"},"example":"eyJ0b2tlbiI6IjEyMyJ9"},"ResultCount":{"description":"Number of items returned in this page.","schema":{"type":"integer"},"example":50},"TotalCount":{"description":"Total number of items across all pages.","schema":{"type":"integer"},"example":1234}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.AssetData.SystemObjectApi.GetSystemObjectData","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/systemobjectdata","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/documentlibrary/{referenceId}/images":{"get":{"tags":["DocumentLibrary"],"summary":"Get Reference Images","description":"Fetch images for a document library reference.","operationId":"getReferenceImages","parameters":[{"name":"referenceId","in":"path","description":"Reference Id","required":true,"schema":{"type":"string","example":"in-doclib-000001"}},{"name":"name","in":"query","description":"Optional image blob name to fetch raw image content","required":false,"schema":{"type":"string"}},{"name":"includeReferences","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, include referenced items in the result."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetImages-ResponseObject"},"example":[{"createdDate":"value","name":"value","contentType":"value","description":"value","imageType":"value","fileCreator":"value","Description":"value"}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error"}}},"post":{"tags":["DocumentLibrary"],"summary":"Upload Reference Image","description":"Upload an image for a document library reference.","operationId":"uploadReferenceImage","parameters":[{"name":"referenceId","in":"path","description":"Reference Id","required":true,"schema":{"type":"string","example":"in-doclib-000001"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"The image file to upload"},"description":{"type":"string","description":"Optional description for the image"},"createdBy":{"type":"string","description":"Uploader identity or email"},"tags":{"type":"string","description":"Comma-separated list of tags"}},"required":["file"]}}}},"responses":{"200":{"description":"The request was applied.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadImage-ResponseObject"},"example":{"createdDate":"value","name":"value","contentType":"value","description":"value","imageType":"value","fileCreator":"value"}}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error"}}},"put":{"tags":["DocumentLibrary"],"summary":"Update Reference Image Metadata","description":"Update image metadata for a document library reference.","operationId":"updateReferenceImageMetadata","parameters":[{"name":"referenceId","in":"path","description":"Reference Id","required":true,"schema":{"type":"string","example":"in-doclib-000001"}}],"requestBody":{"required":true,"description":"Image metadata fields to update","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"contentType":{"type":"string"},"description":{"type":"string"},"createdDate":{"type":"string","format":"date-time"},"updatedDate":{"type":"string","format":"date-time"},"createdBy":{"type":"string"},"isPreferred":{"type":"string","enum":["true","false"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"The request was applied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"description":"Reference metadata key/value pairs."},"example":{"name":"manual.pdf","description":"Operator manual"}}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}},"delete":{"tags":["DocumentLibrary"],"summary":"Delete Reference Images","description":"Delete one or more images for a document library reference.","operationId":"deleteReferenceImages","parameters":[{"name":"referenceId","in":"path","description":"Reference Id","required":true,"schema":{"type":"string","example":"in-doclib-000001"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteImages-RequestObject"}}}},"responses":{"200":{"description":"The delete was applied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"description":"Reference metadata key/value pairs."},"example":{"name":"manual.pdf","description":"Operator manual"}}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error"}}}},"/documentlibrary/{referenceId}/documents":{"get":{"tags":["DocumentLibrary"],"summary":"Get Reference Documents","description":"Fetch documents for a document library reference.","operationId":"getReferenceDocuments","parameters":[{"name":"referenceId","in":"path","description":"Reference Id","required":true,"schema":{"type":"string","example":"in-doclib-000001"}},{"name":"name","in":"query","description":"Optional document blob name to fetch raw file content","required":false,"schema":{"type":"string"}},{"name":"includeReferences","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, include referenced items in the result."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssetDocumentsResponseObject"}},"example":[{"createdDate":"value","name":"value","contentType":"value","description":"value","updatedDate":"value"}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error"}}},"post":{"tags":["DocumentLibrary"],"summary":"Upload Reference Document","description":"Upload a document for a document library reference.","operationId":"uploadReferenceDocument","parameters":[{"name":"referenceId","in":"path","description":"Reference Id","required":true,"schema":{"type":"string","example":"in-doclib-000001"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"The document file to upload"},"title":{"type":"string","description":"Title or label for the document"},"description":{"type":"string","description":"Optional document description"}},"required":["file"]}}}},"responses":{"200":{"description":"The request was applied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"description":"Reference metadata key/value pairs."},"example":{"name":"manual.pdf","description":"Operator manual"}}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error"}}},"put":{"tags":["DocumentLibrary"],"summary":"Update Reference Document Metadata","description":"Update document metadata for a document library reference.","operationId":"updateReferenceDocumentMetadata","parameters":[{"name":"referenceId","in":"path","description":"Reference Id","required":true,"schema":{"type":"string","example":"in-doclib-000001"}},{"name":"name","in":"query","description":"Document name/blob path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Document metadata fields to update","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"contentType":{"type":"string"},"description":{"type":"string"},"createdDate":{"type":"string","format":"date-time"},"updatedDate":{"type":"string","format":"date-time"},"createdBy":{"type":"string"},"isPreferred":{"type":"string","enum":["true","false"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"The request was applied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"description":"Reference metadata key/value pairs."},"example":{"name":"manual.pdf","description":"Operator manual"}}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}},"delete":{"tags":["DocumentLibrary"],"summary":"Delete Reference Document","description":"Delete a document for a document library reference.","operationId":"deleteReferenceDocuments","parameters":[{"name":"referenceId","in":"path","description":"Reference Id","required":true,"schema":{"type":"string","example":"in-doclib-000001"}},{"name":"name","in":"query","description":"Document name/blob path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The delete was applied.","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"description":"Reference metadata key/value pairs."},"example":{"name":"manual.pdf","description":"Operator manual"}}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error"}}}},"/documentlibrary/{referenceId}/links":{"get":{"tags":["DocumentLibrary"],"summary":"Get Reference Links","description":"Fetch links for a document library reference.","operationId":"getReferenceLinks","parameters":[{"name":"referenceId","in":"path","description":"Reference Id","required":true,"schema":{"type":"string","example":"in-doclib-000001"}},{"name":"includeReferences","in":"query","required":false,"schema":{"type":"boolean"},"description":"When true, include referenced items in the result."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"link":{"type":"string","format":"uri","description":"Link."},"linkName":{"type":"string","description":"Link Name."},"systemObjectId":{"type":"string","description":"System Object Id."},"timestamp":{"type":"string","format":"date-time","description":"Timestamp."},"rowKey":{"type":"string","description":"Row Key."},"isFromReference":{"type":"boolean","description":"Is From Reference."},"referenceId":{"type":"string","description":"Reference Id."},"referenceName":{"type":"string","description":"Reference Name."}}}},"example":[{"link":"value","linkName":"value","systemObjectId":"value","timestamp":"value","rowKey":"value","isFromReference":false,"referenceId":"value","referenceName":"value"}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error"}}},"post":{"tags":["DocumentLibrary"],"summary":"Upload Reference Link","description":"Create a document link for a document library reference.","operationId":"uploadReferenceLink","parameters":[{"name":"referenceId","in":"path","description":"Reference Id","required":true,"schema":{"type":"string","example":"in-doclib-000001"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"linkName":{"type":"string"},"link":{"type":"string","format":"uri"}},"required":["linkName","link"],"additionalProperties":false}}}},"responses":{"200":{"description":"The reference link was uploaded."},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error"}}},"delete":{"tags":["DocumentLibrary"],"summary":"Delete Reference Links","description":"Delete one or more document links for a document library reference.","operationId":"deleteReferenceLinks","parameters":[{"name":"referenceId","in":"path","description":"Reference Id","required":true,"schema":{"type":"string","example":"in-doclib-000001"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}},"responses":{"200":{"description":"The reference links were deleted."},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"500":{"description":"Internal Server Error"}}}},"/documentlibrary/{referenceId}/links/{documentId}":{"put":{"tags":["DocumentLibrary"],"summary":"Update Reference Link","description":"Update a document link for a document library reference.","operationId":"updateReferenceLinks","parameters":[{"name":"referenceId","in":"path","description":"Reference Id","required":true,"schema":{"type":"string","example":"in-doclib-000001"}},{"name":"documentId","in":"path","description":"Document Link RowKey","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"linkName":{"type":"string"},"link":{"type":"string","format":"uri"}},"required":["linkName","link"],"additionalProperties":false}}}},"responses":{"200":{"description":"The reference links were updated."},"400":{"description":"Invalid Request"},"401":{"description":"Unauthorized. The response body's error code identifies which credential failed: invalid_subscription_key, invalid_token, expired_token, or invalid_tenant."},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}}},"/uptime":{"get":{"tags":["Uptime"],"summary":"Gets Asset Uptime Overview","description":"Per-day asset uptime bucket counts (isHealthy / silent / unhealthy / noDevice) from the nightly uptime snapshot. Days are opaque UTC date keys (yyyy-MM-dd), each covering the completed UTC day window [D 00:00, D+1 00:00). The snapshot is day-behind: the latest available day is yesterday UTC. Defaults: to = yesterday UTC, from = to - 29 days; maximum range 366 days. Hierarchy global filters match the values stamped on each snapshot day (historical semantics).","operationId":"getAssetUptimeOverview","parameters":[{"name":"from","in":"query","description":"First UTC day as a plain date key (yyyy-MM-dd). Defaults to 29 days before 'to'.","schema":{"type":"string","format":"date"},"example":"2026-06-15"},{"name":"to","in":"query","description":"Last UTC day as a plain date key (yyyy-MM-dd). Defaults to yesterday UTC.","schema":{"type":"string","format":"date"},"example":"2026-07-14"},{"name":"x-perspio-filter","in":"header","description":"Global data filter (JSON-serialised) scoping results to matching assets. Optional keys, each an array of strings: locationHierarchyL1..L3, productHierarchyL1..L3, operationalHierarchyL1..L3, groupIds; plus boolean 'enabled'. Omit for no additional filtering (security-group scoping always applies). Example: {\"locationHierarchyL1\":[\"NSW\"],\"enabled\":true}","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"UTC date key (yyyy-MM-dd) of the snapshot day"},"total":{"type":"integer","format":"int64","description":"Assets in the snapshot for the day (= isHealthy + silent + unhealthy + noDevice)"},"isHealthy":{"type":"integer","format":"int64","description":"Assets that reported with no communication gap over the threshold"},"silent":{"type":"integer","format":"int64","description":"Assets with a device that did not report at all during the day"},"unhealthy":{"type":"integer","format":"int64","description":"Assets that reported but breached the communication-gap threshold"},"noDevice":{"type":"integer","format":"int64","description":"Assets with no device mapped (excluded from health states)"}}}},"example":[{"date":"2026-07-14","total":1000,"isHealthy":500,"silent":20,"unhealthy":470,"noDevice":10},{"date":"2026-07-13","total":1000,"isHealthy":200,"silent":300,"unhealthy":490,"noDevice":10}]}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"}}}}}}},"/uptime/details":{"get":{"tags":["Uptime"],"summary":"Gets Asset Uptime Details for a Day","description":"Paged per-asset uptime rows for a single UTC day from the nightly uptime snapshot, ordered worst first (unhealthy, silent, healthy, none; largest communication gap first). The date is required and only one day can be queried per request. Master-data fields (name, serial, hierarchy) are stamped as-of the snapshot run.","operationId":"getAssetUptimeDetails","parameters":[{"name":"date","in":"query","description":"UTC day as a plain date key (yyyy-MM-dd)","required":true,"schema":{"type":"string","format":"date"},"example":"2026-07-13"},{"name":"page","in":"query","description":"1-based page number. Defaults to 1.","schema":{"type":"integer","format":"int32","default":1}},{"name":"page_size","in":"query","description":"Rows per page. Defaults to 500, maximum 5000.","schema":{"type":"integer","format":"int32","default":500,"maximum":5000}},{"name":"x-perspio-filter","in":"header","description":"Global data filter (JSON-serialised) scoping results to matching assets. Optional keys, each an array of strings: locationHierarchyL1..L3, productHierarchyL1..L3, operationalHierarchyL1..L3, groupIds; plus boolean 'enabled'. Omit for no additional filtering (security-group scoping always applies). Example: {\"locationHierarchyL1\":[\"NSW\"],\"enabled\":true}","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date"},"page":{"type":"integer","format":"int32"},"pageSize":{"type":"integer","format":"int32"},"totalCount":{"type":"integer","format":"int64"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"assetName":{"type":"string"},"serialNumber":{"type":"string","nullable":true},"assetTypeId":{"type":"integer","format":"int32"},"locationHierarchyL1":{"type":"string","nullable":true},"locationHierarchyL2":{"type":"string","nullable":true},"locationHierarchyL3":{"type":"string","nullable":true},"productHierarchyL1":{"type":"string","nullable":true},"productHierarchyL2":{"type":"string","nullable":true},"productHierarchyL3":{"type":"string","nullable":true},"operationalHierarchyL1":{"type":"string","nullable":true},"operationalHierarchyL2":{"type":"string","nullable":true},"operationalHierarchyL3":{"type":"string","nullable":true},"enabled":{"type":"boolean"},"hasDevice":{"type":"boolean"},"deviceCount":{"type":"integer","format":"int32"},"connectorIds":{"type":"string","nullable":true,"description":"Configured ingress pipeline instances of the linked devices (csv of pipelineId/instanceId) — diagnostic"},"primaryConnector":{"type":"string","nullable":true,"description":"Connector that produced the most updates in the window — diagnostic"},"hasContact":{"type":"boolean"},"isHealthy":{"type":"boolean"},"isHealthyRecency":{"type":"boolean","description":"Secondary flag: last contact within the threshold at day end"},"status":{"type":"string","enum":["healthy","unhealthy","silent","none"]},"updateCount":{"type":"integer","format":"int64"},"distinctKeys":{"type":"integer","format":"int64"},"maxGapHours":{"type":"number","format":"double","description":"Largest silent stretch intersecting the day window, in hours"},"hoursSinceContact":{"type":"number","format":"double","nullable":true,"description":"Hours from the last known contact to day end; null when never seen"},"firstContactUtc":{"type":"string","format":"date-time","nullable":true},"lastContactUtc":{"type":"string","format":"date-time","nullable":true},"priorContactUtc":{"type":"string","format":"date-time","nullable":true,"description":"Last contact before the day window (14-day lookback)"},"thresholdHours":{"type":"number","format":"double","description":"Communication-gap threshold applied to this asset for this day"}}}}}},"example":{"date":"2026-07-13","page":1,"pageSize":500,"totalCount":990,"items":[{"id":"in-000094","assetName":"Excavator 7","serialNumber":"SN-0007","assetTypeId":12,"locationHierarchyL1":"AU","locationHierarchyL2":"NSW","locationHierarchyL3":"Sydney","productHierarchyL1":"Heavy","productHierarchyL2":"Earthmoving","productHierarchyL3":"Excavator","operationalHierarchyL1":"Rental","operationalHierarchyL2":"FleetA","operationalHierarchyL3":"Crew1","enabled":true,"hasDevice":true,"deviceCount":1,"connectorIds":"ic-000009/000001","primaryConnector":"ic-000009","hasContact":true,"isHealthy":false,"isHealthyRecency":true,"status":"unhealthy","updateCount":214,"distinctKeys":18,"maxGapHours":9.5,"hoursSinceContact":1.25,"firstContactUtc":"2026-07-13T09:30:00Z","lastContactUtc":"2026-07-13T22:45:00Z","priorContactUtc":"2026-07-12T23:55:00Z","thresholdHours":6}]}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"}}}}}}}},"components":{"examples":{"AssetSchemaCreateRequestExample":{"value":{"originalTypeId":1,"name":"WattWatchers","title":"WattWatchers","description":"WattWatchers asset type"}},"AssetTypeExample":{"value":{"typeId":4,"baseTypeId":-1,"name":"WattWatchers","title":"WattWatchers","description":null,"properties":{"model":{"title":"Model","flags":{"showInGui":true},"dataType":"string","modelName":"WattWatchersDevice"},"firmware":{"title":"Firmware","flags":{"showInGui":true},"dataType":"string","modelName":"WattWatchersDevice"},"timestampUtc":{"title":"Timestamp Utc","flags":{"showInGui":true},"dataType":"datetime","modelName":"WattWatchersDevice"},"duration":{"title":"Duration","flags":{"showInGui":true},"dataType":"number","modelName":"WattWatchersDevice"}},"layout":{"DeviceTemplate":{"StaticProperties":["deviceId","serial","deviceTypeId","pipelineId","createdDate","model","uninitialised","label","phasesCount","commsType","signalQualityDbm","simId","apn","imsi","networkId"],"MetricsProperties":["hubEnqueuedTimeUtc","lastCommunicatedUtc"]}},"id":"4","type":"DeviceTypeSchema","correlationId":null,"_ts":1732163564}},"AssetTypeListExample":{"value":[{"typeId":4,"baseTypeId":-1,"name":"WattWatchers","title":"WattWatchers","description":null,"properties":{"model":{"title":"Model","flags":{"showInGui":true},"dataType":"string","modelName":"WattWatchersDevice"},"firmware":{"title":"Firmware","flags":{"showInGui":true},"dataType":"string","modelName":"WattWatchersDevice"},"timestampUtc":{"title":"Timestamp Utc","flags":{"showInGui":true},"dataType":"datetime","modelName":"WattWatchersDevice"},"duration":{"title":"Duration","flags":{"showInGui":true},"dataType":"number","modelName":"WattWatchersDevice"}},"layout":{"DeviceTemplate":{"StaticProperties":["deviceId","serial","deviceTypeId","pipelineId","createdDate","model","uninitialised","label","phasesCount","commsType","signalQualityDbm","simId","apn","imsi","networkId"],"MetricsProperties":["hubEnqueuedTimeUtc","lastCommunicatedUtc"]}},"id":"4","type":"DeviceTypeSchema","correlationId":null,"_ts":1732163564}]},"DeleteAssetTypeResponseExample":{"value":{"statusUrl":"https://talk.perspio.dev/tasks/v3/in-task-61667e2d-5268-42fa-bd82-87cf66d7188a"}},"PerspioErrorExample":{"value":{"functionName":"Perspio.API.AssetData.AssetDetailsApi.GetAssetTypes","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/types","tenantId":"in-c5a96640-9788-49bd-b71e-e6c65b4a427f","message":"Internal Server Error: Object reference not set to an instance of an object."}}},"schemas":{"AssetTripUtilisation-ResponseObject":{"type":"object","properties":{"tripDate":{"type":"string","description":"Trip Date."},"deviceId":{"type":"string","description":"Device Id."},"7DaysDistance":{"type":"integer","description":"Distance. over the last 7 days."},"7DaysDistanceAvg":{"type":"integer","description":"Distance Avg. over the last 7 days."},"30DaysDistance":{"type":"number","description":"Distance. over the last 30 days."},"30DaysDistanceAvg":{"type":"number","description":"Distance Avg. over the last 30 days."},"90DaysDistance":{"type":"number","description":"Distance. over the last 90 days."},"90DaysDistanceAvg":{"type":"number","description":"Distance Avg. over the last 90 days."},"7DaysDuration":{"type":"integer","description":"Duration. over the last 7 days."},"7DaysDurationAvg":{"type":"integer","description":"Duration Avg. over the last 7 days."},"30DaysDuration":{"type":"number","description":"Duration. over the last 30 days."},"30DaysDurationAvg":{"type":"number","description":"Duration Avg. over the last 30 days."},"90DaysDuration":{"type":"number","description":"Duration. over the last 90 days."},"90DaysDurationAvg":{"type":"number","description":"Duration Avg. over the last 90 days."},"assetId":{"type":"string","description":"Asset id."}}},"PerspioError":{"type":"object","description":"Standard Perspio backend error body (ErrorResultObject emitted by the error-handling middleware).","properties":{"functionName":{"type":"string","description":"Name of the backend function that raised the error."},"errorType":{"type":"string","description":"Exception/error type name."},"statusCode":{"type":"integer","format":"int32","description":"HTTP status code of the error."},"request":{"type":"string","description":"Method and URL of the failing request."},"tenantId":{"type":"string","description":"Tenant the request was executed for."},"message":{"type":"string","description":"Human-readable error message."}}},"TriggerAssetAction-RequestObject":{"type":"object","required":["actionPipelineId"],"properties":{"actionPipelineId":{"type":"string","description":"Action pipeline ID to trigger.","example":"ac-000001"},"instanceId":{"type":"string","description":"Action pipeline instance ID. Defaults to the pipeline default instance when omitted.","example":"000001"},"actionInput":{"type":"object","description":"Input object matching the action catalog input schema.","additionalProperties":{}}}},"TriggerAssetAction-ResponseObject":{"type":"object","properties":{"correlationId":{"type":"string","description":"Correlation ID for the queued action execution.","example":"b7f2c9bb-f2d6-4c46-91d6-56b9a4d7d38b"},"status":{"type":"string","enum":["Accepted"],"example":"Accepted","description":"Status."}}},"CalibrateAssetMeters-RequestObject":{"type":"array","items":{"required":["value","path","op"],"type":"object","properties":{"value":{"type":"integer","description":"Value."},"path":{"type":"string","description":"Path."},"op":{"type":"string","description":"Op."}}}},"CreateAsset-RequestObject":{"type":"object","properties":{"assetName":{"type":"string","description":"Asset name."},"assetTypeId":{"type":"integer","description":"Perspio Asset Type ID.\n\n| ID | Type                |\n|----|---------------------|\n| 1  | Vehicle             |\n| 6  | Refrigerated Truck  |\n| 14 | Tank                |\n| 62 | Armored Truck       |\n| 72 | Pump Truck          |"},"customerAssetId":{"type":"string","description":"Customer-assigned asset id."},"deviceId":{"description":"Device Id."},"systemFlags":{"type":"object","properties":{"speedingEnabled":{"type":"boolean","description":"Speeding Enabled."},"geofencingEnabled":{"type":"boolean","description":"Geofencing Enabled."},"tollEnabled":{"type":"boolean","description":"Toll Enabled."},"tripsEnabled":{"type":"boolean","description":"Trips Enabled."},"computeOdometerEnabled":{"type":"boolean","description":"Whether odometer computation is enabled."},"computeRunhoursEnabled":{"type":"boolean","description":"Whether runhours computation is enabled."},"notificationsEnabled":{"type":"boolean","description":"Notifications Enabled."},"proximitySvcEnabled":{"type":"boolean","description":"Proximity Svc Enabled."}}}}},"AssetSchemaCreateRequest":{"type":"object","required":["originalTypeId","name","title"],"properties":{"originalTypeId":{"type":"integer","format":"int32","example":1,"description":"Original Type Id."},"name":{"type":"string","example":"WattWatchers","description":"Display name."},"title":{"type":"string","example":"WattWatchers","description":"Display title."},"description":{"type":"string","example":"WattWatchers asset type","description":"Free-text description."}}},"UpdateAsset-RequestObject":{"type":"object","properties":{"type":{"enum":[1,2],"type":"integer","description":"Perspio Asset Update Type.\n\n| ID | Type                |\n|----|---------------------|\n| 1  | Add Device             |\n| 2  | Remove Device  |\n||"},"deviceId":{"type":"string","description":"Device Id."}}},"PatchRequestObject":{"type":"array","items":{"required":["value","path","op"],"type":"object","properties":{"value":{"type":"string","description":"Value."},"path":{"type":"string","description":"Path."},"op":{"type":"string","description":"Op."}}}},"BulkPatchRequestObject":{"type":"array","items":{"required":["eventId","patchOperations"],"type":"object","properties":{"value":{"type":"string","description":"Value."},"patchOperations":{"type":"array","items":{"$ref":"#/components/schemas/PatchRequestObject"},"description":"List of patch operations for the event"}}}},"UpdateAssetInfo-RequestObject":{"type":"array","items":{"required":["op","path","value"],"type":"object","properties":{"op":{"type":"string","description":"Op."},"path":{"type":"string","description":"Path."},"value":{"type":"string","description":"Value."}}}},"UpdateCustomCountersForAsset-RequestObject":{"type":"array","items":{"required":["op","path","value"],"type":"object","properties":{"op":{"type":"string","description":"Op."},"path":{"type":"string","description":"Path."},"value":{"type":"string","description":"Value."}}}},"UploadImage-ResponseObject":{"type":"object","properties":{"createdDate":{"type":"string","description":"UTC timestamp when the record was created."},"name":{"type":"string","description":"Display name."},"contentType":{"type":"string","description":"Content Type."},"description":{"type":"string","description":"Free-text description."},"imageType":{"type":"string","description":"Image Type."},"fileCreator":{"type":"string","description":"File Creator."}}},"GetImages-ResponseObject":{"type":"array","items":{"type":"object","properties":{"createdDate":{"type":"string","description":"UTC timestamp when the record was created."},"name":{"type":"string","description":"Display name."},"contentType":{"type":"string","description":"Content Type."},"description":{"type":"string","description":"Free-text description."},"imageType":{"type":"string","description":"Image Type."},"fileCreator":{"type":"string","description":"File Creator."},"Description":{"type":"string","description":"Free-text description."}}}},"DeleteImages-RequestObject":{"type":"array","items":{"type":"string"}},"UpdateAssetGroups-RequestObject":{"required":["geofenceIds","category","assetGroupName","description","tags","deleted","assetCount","conditions","createdBy","createdDate","updatedBy","updatedDate","id","type","correlationId","_ts","ttl","lastMemberUpdatedUtc","lastEvaluatedUtc"],"type":"object","properties":{"geofenceIds":{"type":"array","items":{"type":"string"},"description":"List of geofence IDs associated with the asset group"},"category":{"type":"string","description":"Category of the asset group"},"assetGroupName":{"type":"string","description":"Name of the asset group"},"description":{"type":"string","description":"Description of the asset group"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags for the asset group"},"deleted":{"type":"boolean","description":"Indicates if the group is deleted"},"assetCount":{"type":"integer","description":"Count of assets in the group","format":"int32"},"conditions":{"type":"object","properties":{"all":{"type":"array","items":{"required":["fact","operator","value"],"type":"object","properties":{"fact":{"type":"string","description":"Metadata field to evaluate"},"operator":{"type":"string","description":"Operator used for condition (e.g., notequal, notcontains, notstartswith)"},"value":{"type":"string","description":"Value to compare the fact against"}}}}},"description":"Conditions to filter assets in the group"},"createdBy":{"type":"string","description":"User who created the asset group"},"createdDate":{"type":"string","description":"Creation timestamp in UTC","format":"date-time"},"updatedBy":{"type":"string","description":"User who last updated the asset group"},"updatedDate":{"type":"string","description":"Last update timestamp in UTC","format":"date-time"},"id":{"type":"string","description":"Unique ID for the asset group"},"type":{"type":"string","description":"Type of the asset group (e.g., User)"},"correlationId":{"type":"string","description":"Correlation ID for tracking API calls"},"_ts":{"type":"integer","description":"Timestamp from Cosmos DB (_ts)","format":"int64"},"ttl":{"type":"integer","description":"Time-to-live setting for Cosmos DB","format":"int32"},"lastMemberUpdatedUtc":{"type":"string","description":"Timestamp when the last member was updated","format":"date-time"},"lastEvaluatedUtc":{"type":"string","description":"Timestamp when the group was last evaluated","format":"date-time"}}},"GetComments-ResponseObject":{"type":"array","items":{"type":"object","properties":{"createdDate":{"type":"string","format":"date-time","example":"2024-10-23T23:28:55Z","description":"UTC timestamp when the record was created."},"name":{"type":"string","example":"in-000063/co-085a244d-e651-4759-9100-2219557ae5e7","description":"Display name."},"contentType":{"type":"string","example":"text/plain","description":"Content Type."},"createdBy":{"type":"string","example":"","description":"User or system that created the record."}}}},"AddComments-ResponseObject":{"type":"object","properties":{"createdDate":{"type":"string","format":"date-time","example":"2024-10-23T23:33:46Z","description":"UTC timestamp when the record was created."},"name":{"type":"string","example":"in-000063/co-ac169148-3e8a-4801-93b9-65219ea15a0a","description":"Display name."},"contentType":{"type":"string","example":"text/plain","description":"Content Type."},"createdBy":{"type":"string","example":"","description":"User or system that created the record."}}},"ShareConfigResponseObject":{"type":"object","properties":{"tenantId":{"type":"string","description":"Tenant the record belongs to."},"assetId":{"type":"string","description":"Asset id."},"targetAssetId":{"type":"string","description":"Target asset id."},"targetTenantId":{"type":"string","description":"Target tenant id."},"actionType":{"type":"number","description":"Action type."},"status":{"type":"number","description":"Status."},"configShareType":{"type":"number","description":"Share configuration type."},"profileId":{"type":"string","description":"Profile id."},"pipelineId":{"type":"string","description":"Pipeline id."},"errors":{"description":"Errors, if any."},"id":{"type":"string","description":"Unique identifier."},"type":{"type":"string","description":"Type discriminator."},"correlationId":{"type":"string","description":"Client-supplied correlation id, echoed back for request tracing."},"_ts":{"type":"number","description":"Ts."},"assetName":{"type":"string","description":"Asset name."},"assetTypeId":{"type":"number","description":"Asset type id."},"customerAssetId":{"type":"string","description":"Customer-assigned asset id."}}},"AssetEventsResponseObject":{"type":"object","properties":{"eventTypeId":{"type":"number","description":"Event Type Id."},"eventTimeUTC":{"type":"string","description":"Event Time UTC."},"count":{"type":"number","description":"Count."}}},"AssetMetricsResponseObject":{"type":"object","properties":{"speed":{"type":"array","items":{"type":"object","properties":{"ts":{"type":"string","description":"Ts."},"val":{"type":"string","description":"Val."},"pipelineId":{"type":"string","description":"Pipeline id."}}}},"preferredRunHours":{"type":"array","items":{"type":"object","properties":{"ts":{"type":"string","description":"Ts."},"val":{"type":"string","description":"Val."},"pipelineId":{"type":"string","description":"Pipeline id."}}}},"preferredOdometer":{"type":"array","items":{"type":"object","properties":{"ts":{"type":"string","description":"Ts."},"val":{"type":"string","description":"Val."},"pipelineId":{"type":"string","description":"Pipeline id."}}}},"perspioRunHours":{"type":"array","items":{"type":"object","properties":{"ts":{"type":"string","description":"Ts."},"val":{"type":"string","description":"Val."},"pipelineId":{"type":"string","description":"Pipeline id."}}}},"perspioOdometer":{"type":"array","items":{"type":"object","properties":{"ts":{"type":"string","description":"Ts."},"val":{"type":"string","description":"Val."},"pipelineId":{"type":"string","description":"Pipeline id."}}}},"odometer":{"type":"array","items":{"type":"object","properties":{"ts":{"type":"string","description":"Ts."},"val":{"type":"string","description":"Val."},"pipelineId":{"type":"string","description":"Pipeline id."}}}},"longitude":{"type":"array","items":{"type":"object","properties":{"ts":{"type":"string","description":"Ts."},"val":{"type":"string","description":"Val."},"pipelineId":{"type":"string","description":"Pipeline id."}}}},"latitude":{"type":"array","items":{"type":"object","properties":{"ts":{"type":"string","description":"Ts."},"val":{"type":"string","description":"Val."},"pipelineId":{"type":"string","description":"Pipeline id."}}}},"externalBatteryVoltage":{"type":"array","items":{"type":"object","properties":{"ts":{"type":"string","description":"Ts."},"val":{"type":"string","description":"Val."},"pipelineId":{"type":"string","description":"Pipeline id."}}}},"engineSpeed":{"type":"array","items":{"type":"object","properties":{"ts":{"type":"string","description":"Ts."},"val":{"type":"string","description":"Val."},"pipelineId":{"type":"string","description":"Pipeline id."}}}},"crankingVoltage":{"type":"array","items":{"type":"object","properties":{"ts":{"type":"string","description":"Ts."},"val":{"type":"string","description":"Val."},"pipelineId":{"type":"string","description":"Pipeline id."}}}},"active":{"type":"array","items":{"type":"object","properties":{"ts":{"type":"string","description":"Ts."},"val":{"type":"string","description":"Val."},"pipelineId":{"type":"string","description":"Pipeline id."}}}}}},"AssetTripResponseObject":{"type":"object","properties":{"tripTypeId":{"type":"number","description":"Trip Type Id."},"tripStatus":{"type":"number","description":"Trip Status."},"deviceId":{"type":"string","description":"Device Id."},"assetId":{"type":"string","description":"Asset id."},"driverId":{"description":"Driver Id."},"tenantId":{"type":"string","description":"Tenant the record belongs to."},"lastSeenUTC":{"type":"string","description":"Last Seen UTC."},"lastSeenEpoch":{"type":"number","description":"Last Seen Epoch."},"tripStartTime":{"type":"string","description":"Trip Start Time."},"tripDistance":{"type":"number","description":"Trip Distance."},"tripEndTime":{"type":"string","description":"Trip End Time."},"tripDuration":{"type":"number","description":"Trip Duration."},"isFinalised":{"type":"boolean","description":"Is Finalised."},"tripStartTimeEpoch":{"type":"number","description":"Trip Start Time Epoch."},"tripEndTimeEpoch":{"type":"number","description":"Trip End Time Epoch."},"previousTripAgoSeconds":{"type":"number","description":"Previous Trip Ago Seconds."},"tripLocations":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Type discriminator."},"coordinates":{"type":"array","items":{"type":"number"}},"dateTime":{"type":"string","description":"Date Time."}}}},"tripStartLocation":{"description":"Trip Start Location."},"tripEndLocation":{"description":"Trip End Location."},"tripLocationCount":{"type":"number","description":"Trip Location Count."},"tripEvents":{"type":"array","items":{"type":"object","properties":{"eventId":{"type":"string","description":"Event id."},"eventTypeId":{"type":"number","description":"Event Type Id."}}}},"tripEventCount":{"type":"number","description":"Trip Event Count."},"_etag":{"type":"string","description":"Etag."},"id":{"type":"string","description":"Unique identifier."},"type":{"description":"Type discriminator."},"correlationId":{"type":"string","description":"Client-supplied correlation id, echoed back for request tracing."},"_ts":{"type":"number","description":"Ts."}}},"AssetDocumentsResponseObject":{"type":"object","properties":{"createdDate":{"type":"string","description":"UTC timestamp when the record was created."},"name":{"type":"string","description":"Display name."},"contentType":{"type":"string","description":"Content Type."},"description":{"type":"string","description":"Free-text description."},"updatedDate":{"type":"string","description":"UTC timestamp when the record was last modified."}}},"AssetsResponseObject":{"type":"object","properties":{"assetTypeId":{"type":"number","description":"Asset type id."},"active":{"type":"boolean","description":"Active."},"assetId":{"type":"string","description":"Asset id."},"assetName":{"type":"string","description":"Asset name."},"customerAssetId":{"type":"string","description":"Customer-assigned asset id."},"deviceDataJson":{"type":"string","description":"Device Data Json."},"driverId":{"description":"Driver Id."},"latitude":{"type":"number","description":"Latitude."},"longitude":{"type":"number","description":"Longitude."},"coordinates":{"type":"string","description":"Coordinates."},"lastCommunicatedUtc":{"type":"string","description":"Last Communicated Utc."},"lastCommunicatedOrderedUtc":{"type":"string","description":"Last Communicated Ordered Utc."},"lastLocatedUtc":{"type":"string","description":"Last Located Utc."},"lastSynchronizedUtc":{"type":"string","description":"Last Synchronized Utc."},"markerChoice":{"type":"string","description":"Marker Choice."},"markerType":{"type":"number","description":"Marker Type."},"preferredOdometer":{"type":"number","description":"Preferred Odometer."},"preferredRunHours":{"type":"number","description":"Preferred Run Hours."},"locationHierarchyL1":{"type":"string","description":"Location Hierarchy L1."},"locationHierarchyL2":{"type":"string","description":"Location Hierarchy L2."},"locationHierarchyL3":{"type":"string","description":"Location Hierarchy L3."},"operationalHierarchyL1":{"type":"string","description":"Operational Hierarchy L1."},"operationalHierarchyL2":{"type":"string","description":"Operational Hierarchy L2."},"operationalHierarchyL3":{"type":"string","description":"Operational Hierarchy L3."},"productHierarchyL1":{"type":"string","description":"Product Hierarchy L1."},"productHierarchyL2":{"type":"string","description":"Product Hierarchy L2."},"productHierarchyL3":{"type":"string","description":"Product Hierarchy L3."},"relatedObjectsCount":{"type":"number","description":"Related Objects Count."},"timeZone":{"type":"string","description":"Time Zone."},"encodedSystemFlags":{"type":"number","description":"Encoded System Flags."},"odometer":{"type":"number","description":"Odometer."},"perspioOdometer":{"type":"number","description":"Perspio Odometer."},"customerOdometer":{"type":"number","description":"Customer Odometer."},"preferredOdometerSource":{"type":"number","description":"Preferred Odometer Source."},"runHours":{"type":"number","description":"Run Hours."},"perspioRunHours":{"type":"number","description":"Perspio Run Hours."},"customerRunHours":{"type":"number","description":"Customer Run Hours."},"preferredRunHoursSource":{"type":"number","description":"Preferred Run Hours Source."},"deviceData":{"type":"object"},"systemFlags":{"type":"object","properties":{"encodedSystemFlags":{"type":"number","description":"Encoded System Flags."},"enabled":{"type":"boolean","description":"Whether the record is enabled."},"customCountersEnabled":{"type":"boolean","description":"Custom Counters Enabled."},"geofencingEnabled":{"type":"boolean","description":"Geofencing Enabled."},"tollEnabled":{"type":"boolean","description":"Toll Enabled."},"tripsEnabled":{"type":"boolean","description":"Trips Enabled."},"computeOdometerEnabled":{"type":"boolean","description":"Whether odometer computation is enabled."},"computeRunhoursEnabled":{"type":"boolean","description":"Whether runhours computation is enabled."},"notificationsEnabled":{"type":"boolean","description":"Notifications Enabled."},"systemFlagsEnabled":{"type":"boolean","description":"System Flags Enabled."},"workflowsEnabled":{"type":"boolean","description":"Workflows Enabled."},"validated":{"type":"boolean","description":"Validated."}}},"id":{"type":"string","description":"Unique identifier."},"tenantId":{"description":"Tenant the record belongs to."},"correlationId":{"description":"Client-supplied correlation id, echoed back for request tracing."},"enabled":{"type":"boolean","description":"Whether the record is enabled."}}},"AdxAssetsSummaryObject":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier."},"correlationId":{"type":"string","description":"Client-supplied correlation id, echoed back for request tracing."},"key":{"type":"string","description":"Key."},"count":{"type":"number","description":"Count."},"min":{"type":"number","description":"Min."},"max":{"type":"number","description":"Max."},"minMaxDiff":{"type":"number","description":"Min Max Diff."},"minCorrected":{"type":"number","description":"Min Corrected."},"minMaxDiffCorrected":{"type":"number","description":"Min Max Diff Corrected."},"avg":{"type":"number","description":"Avg."},"sum":{"type":"number","description":"Sum."},"fromDateUtc":{"type":"string","description":"From Date Utc."},"toDateUtc":{"type":"string","description":"To Date Utc."}}},"AssetEventsRecent":{"type":"object","properties":{"objectId":{"type":"string","example":"in-000061","description":"Object Id."},"assetId":{"type":"string","example":"in-000061","description":"Asset id."},"eventTypeId":{"type":"integer","example":137,"description":"Event Type Id."},"location":{"type":"object","properties":{"dateTime":{"type":"string","format":"date-time","example":"2024-12-11T04:50:39Z","description":"Date Time."},"coordinates":{"type":"array","items":{"type":"number"},"example":[150.914941,-33.2222]},"type":{"type":"string","example":"Point","description":"Type discriminator."}}},"deviceId":{"type":"string","nullable":true,"example":null,"description":"Device Id."},"eventTimeUTC":{"type":"string","format":"date-time","example":"2024-12-11T04:50:39Z","description":"Event Time UTC."},"eventTimeEpoch":{"type":"integer","example":1733892639,"description":"Event Time Epoch."},"tenantId":{"type":"string","example":"in-c5a96640-9788-49bd-b71e-e6c65b4a427f","description":"Tenant the record belongs to."},"eventObject":{"type":"object","properties":{"geofenceId":{"type":"string","example":"AU-New-South-Wales","description":"Geofence Id."},"geofenceTitle":{"type":"string","nullable":true,"example":null,"description":"Geofence Title."},"geofenceType":{"type":"string","nullable":true,"example":null,"description":"Geofence Type."},"info":{"type":"string","nullable":true,"example":null,"description":"Info."},"eventId":{"type":"string","nullable":true,"example":null,"description":"Event id."}}},"pipelineId":{"type":"string","example":"GeofenceProcessor","description":"Pipeline id."},"id":{"type":"string","example":"in-000061-137-1733892639765-41b0851512","description":"Unique identifier."},"type":{"type":"string","example":"AssetEvent","description":"Type discriminator."},"correlationId":{"type":"string","example":"api-20241211-045039-739-e36cd","description":"Client-supplied correlation id, echoed back for request tracing."},"_ts":{"type":"integer","example":1733892814,"description":"Ts."},"ttl":{"type":"integer","example":-1,"description":"Ttl."}}},"AssetTrips":{"type":"object","properties":{"tripTypeId":{"type":"integer","example":1,"description":"Trip Type Id."},"tripStatus":{"type":"integer","example":2,"description":"Trip Status."},"deviceId":{"type":"string","example":"G9N60K1KCADR","description":"Device Id."},"assetId":{"type":"string","example":"br-003157","description":"Asset id."},"driverId":{"type":"string","example":"UnknownDriverId","description":"Driver Id."},"tenantId":{"type":"string","example":"br-876aec24-5645-425d-a7a1-cb2f14b0432e","description":"Tenant the record belongs to."},"lastSeenUTC":{"type":"string","format":"date-time","example":"2025-01-14T14:13:33Z","description":"Last Seen UTC."},"lastSeenEpoch":{"type":"integer","example":1736864013,"description":"Last Seen Epoch."},"tripStartTime":{"type":"string","format":"date-time","example":"2025-01-14T14:10:21Z","description":"Trip Start Time."},"tripDistance":{"type":"number","example":0.09320565,"description":"Trip Distance."},"tripEndTime":{"type":"string","format":"date-time","example":"2025-01-14T14:13:33Z","description":"Trip End Time."},"tripDuration":{"type":"number","example":0.05,"description":"Trip Duration."},"isFinalised":{"type":"boolean","example":true,"description":"Is Finalised."},"tripStartTimeEpoch":{"type":"integer","example":1736863821,"description":"Trip Start Time Epoch."},"tripEndTimeEpoch":{"type":"integer","example":1736864013,"description":"Trip End Time Epoch."},"previousTripAgoSeconds":{"type":"integer","example":47437,"description":"Previous Trip Ago Seconds."},"tripLocations":{"type":"array","items":{"type":"object","properties":{"dateTime":{"type":"string","format":"date-time","example":"2025-01-14T14:10:21Z","description":"Date Time."},"coordinates":{"type":"array","items":{"type":"number"},"example":[-115.102821,36.1591301]},"type":{"type":"string","example":"Point","description":"Type discriminator."}}}},"tripStartLocation":{"type":"string","nullable":true,"example":null,"description":"Trip Start Location."},"tripEndLocation":{"type":"string","nullable":true,"example":null,"description":"Trip End Location."},"tripLocationCount":{"type":"integer","example":19,"description":"Trip Location Count."},"tripEvents":{"type":"array","items":{"type":"object","properties":{"eventId":{"type":"string","example":"br-003157-1-1736863821063-02802fc84d-13838408","description":"Event id."},"eventTypeId":{"type":"integer","example":1,"description":"Event Type Id."}}}},"tripEventCount":{"type":"integer","example":5,"description":"Trip Event Count."},"_etag":{"type":"string","example":"\"120048f8-0000-1a00-0000-678676190000\"","description":"Etag."},"id":{"type":"string","example":"br-003157-1-1736863821063","description":"Unique identifier."},"type":{"type":"string","nullable":true,"example":null,"description":"Type discriminator."},"correlationId":{"type":"string","example":"proc-000022-20250114-143500-785-c03de","description":"Client-supplied correlation id, echoed back for request tracing."},"_ts":{"type":"integer","example":1736865305,"description":"Ts."},"ttl":{"type":"integer","example":-1,"description":"Ttl."}}},"AssetType2":{"type":"object","properties":{"typeId":{"type":"integer","example":4,"description":"Type Id."},"baseTypeId":{"type":"integer","example":-1,"description":"Base Type Id."},"name":{"type":"string","example":"WattWatchers","description":"Display name."},"title":{"type":"string","example":"WattWatchers","description":"Display title."},"description":{"type":"string","nullable":true,"example":null,"description":"Free-text description."},"properties":{"type":"object","properties":{"model":{"type":"object","properties":{"title":{"type":"string","example":"Model","description":"Display title."},"flags":{"type":"object","properties":{"showInGui":{"type":"boolean","example":true,"description":"Whether shown in the UI."}}},"dataType":{"type":"string","example":"string","description":"Data Type."},"modelName":{"type":"string","example":"WattWatchersDevice","description":"Model Name."}}},"firmware":{"type":"object","properties":{"title":{"type":"string","example":"Firmware","description":"Display title."},"flags":{"type":"object","properties":{"showInGui":{"type":"boolean","example":true,"description":"Whether shown in the UI."}}},"dataType":{"type":"string","example":"string","description":"Data Type."},"modelName":{"type":"string","example":"WattWatchersDevice","description":"Model Name."}}},"timestampUtc":{"type":"object","properties":{"title":{"type":"string","example":"Timestamp Utc","description":"Display title."},"flags":{"type":"object","properties":{"showInGui":{"type":"boolean","example":true,"description":"Whether shown in the UI."}}},"dataType":{"type":"string","example":"datetime","description":"Data Type."},"modelName":{"type":"string","example":"WattWatchersDevice","description":"Model Name."}}},"duration":{"type":"object","properties":{"title":{"type":"string","example":"Duration","description":"Display title."},"flags":{"type":"object","properties":{"showInGui":{"type":"boolean","example":true,"description":"Whether shown in the UI."}}},"dataType":{"type":"string","example":"number","description":"Data Type."},"modelName":{"type":"string","example":"WattWatchersDevice","description":"Model Name."}}},"deviceTypeId":{"type":"object","properties":{"title":{"type":"string","example":"Device Type Id","description":"Display title."},"flags":{"type":"object","properties":{"showInGui":{"type":"boolean","example":true,"description":"Whether shown in the UI."}}},"dataType":{"type":"string","example":"number","description":"Data Type."},"modelName":{"type":"string","example":"DeviceState","description":"Model Name."}}},"pipelineId":{"type":"object","properties":{"title":{"type":"string","example":"Pipeline Id","description":"Display title."},"flags":{"type":"object","properties":{"showInGui":{"type":"boolean","example":true,"description":"Whether shown in the UI."}}},"dataType":{"type":"string","example":"string","description":"Data Type."},"modelName":{"type":"string","example":"DeviceState","description":"Model Name."}},"description":"Pipeline id."},"heading":{"type":"object","properties":{"title":{"type":"string","example":"Heading","description":"Display title."},"format":{"type":"object","properties":{"precision":{"type":"integer","example":0,"description":"Precision."}}},"flags":{"type":"object"},"dataType":{"type":"string","example":"number","description":"Data Type."},"unitType":{"type":"string","example":"degrees","description":"Unit Type."},"modelName":{"type":"string","example":"DeviceState","description":"Model Name."}}},"serial":{"type":"object","properties":{"title":{"type":"string","example":"Serial","description":"Display title."},"flags":{"type":"object","properties":{"showInGui":{"type":"boolean","example":true,"description":"Whether shown in the UI."}}},"dataType":{"type":"string","example":"string","description":"Data Type."},"modelName":{"type":"string","example":"DeviceState","description":"Model Name."}}},"sequenceNo":{"type":"object","properties":{"title":{"type":"string","example":"Sequence No","description":"Display title."},"flags":{"type":"object","properties":{"showInGui":{"type":"boolean","example":true,"description":"Whether shown in the UI."}}},"dataType":{"type":"string","example":"number","description":"Data Type."},"modelName":{"type":"string","example":"DeviceState","description":"Model Name."}}},"hubEnqueuedTimeUtc":{"type":"object","properties":{"title":{"type":"string","example":"Hub Enqueued Time Utc","description":"Display title."},"flags":{"type":"object","properties":{"showInGui":{"type":"boolean","example":true,"description":"Whether shown in the UI."}}},"dataType":{"type":"string","example":"datetime","description":"Data Type."},"modelName":{"type":"string","example":"DeviceState","description":"Model Name."}}},"odometer":{"type":"object","properties":{"title":{"type":"string","example":"Odometer (Device)","description":"Display title."},"format":{"type":"object","properties":{"icon":{"type":"string","example":"fa-ruler","description":"Icon."},"precision":{"type":"integer","example":2,"description":"Precision."}}},"flags":{"type":"object","properties":{"showInGui":{"type":"boolean","example":true,"description":"Whether shown in the UI."}}},"dataType":{"type":"string","example":"number","description":"Data Type."},"unitType":{"type":"string","example":"distance","description":"Unit Type."},"modelName":{"type":"string","example":"DeviceState","description":"Model Name."}}},"runHours":{"type":"object","properties":{"title":{"type":"string","example":"Run Hours (Device)","description":"Display title."},"format":{"type":"object","properties":{"icon":{"type":"string","example":"fa-clock","description":"Icon."},"precision":{"type":"integer","example":2,"description":"Precision."}}},"flags":{"type":"object","properties":{"showInGui":{"type":"boolean","example":true,"description":"Whether shown in the UI."}}},"dataType":{"type":"string","example":"number","description":"Data Type."},"unitType":{"type":"string","example":"hours","description":"Unit Type."},"modelName":{"type":"string","example":"DeviceState","description":"Model Name."}}},"runHoursRaw":{"type":"object","properties":{"title":{"type":"string","example":"Run Hours Raw","description":"Display title."},"flags":{"type":"object","properties":{"showInGui":{"type":"boolean","example":true,"description":"Whether shown in the UI."}}},"dataType":{"type":"string","example":"number","description":"Data Type."},"modelName":{"type":"string","example":"DeviceState","description":"Model Name."}}},"runHoursSource":{"type":"object","properties":{"title":{"type":"string","example":"Run Hours Source","description":"Display title."},"flags":{"type":"object"},"dataType":{"type":"string","example":"number","description":"Data Type."},"modelName":{"type":"string","example":"DeviceState","description":"Model Name."}}},"mapping":{"type":"object","properties":{"title":{"type":"string","example":"Mapping","description":"Display title."},"flags":{"type":"object","properties":{"showInGui":{"type":"boolean","example":true,"description":"Whether shown in the UI."}}},"dataType":{"type":"string","example":"string","description":"Data Type."},"modelName":{"type":"string","example":"DeviceState","description":"Model Name."}}},"type":{"type":"object","properties":{"title":{"type":"string","example":"Type","description":"Display title."},"flags":{"type":"object","properties":{"showInGui":{"type":"boolean","example":true,"description":"Whether shown in the UI."}}},"dataType":{"type":"string","example":"string","description":"Data Type."},"modelName":{"type":"string","example":"StateBase","description":"Model Name."}},"description":"Type discriminator."},"active":{"type":"object","properties":{"title":{"type":"string","example":"Active","description":"Display title."},"format":{"type":"object","properties":{"icon":{"type":"string","example":"fa-power-off","description":"Icon."},"boolLabels":{"type":"array","items":{"type":"string"},"example":["Inactive","Active"]},"boolColors":{"type":"array","items":{"type":"string"},"example":["red","green"]},"boolIcons":{"type":"array","items":{"type":"string"},"example":["fa-solid fa-power-off","fa-solid fa-power-off"]}}},"flags":{"type":"object","properties":{"showInGui":{"type":"boolean","example":true,"description":"Whether shown in the UI."}}},"dataType":{"type":"string","example":"boolean","description":"Data Type."},"unitType":{"type":"string","example":"activeinactive","description":"Unit Type."},"modelName":{"type":"string","example":"StateBase","description":"Model Name."}}},"latitude":{"type":"object","properties":{"title":{"type":"string","example":"Latitude","description":"Display title."},"flags":{"type":"object","properties":{"showInGui":{"type":"boolean","example":true,"description":"Whether shown in the UI."}}},"dataType":{"type":"string","example":"number","description":"Data Type."},"modelName":{"type":"string","example":"StateBase","description":"Model Name."}}},"longitude":{"type":"object","properties":{"title":{"type":"string","example":"Longitude","description":"Display title."},"flags":{"type":"object","properties":{"showInGui":{"type":"boolean","example":true,"description":"Whether shown in the UI."}}},"dataType":{"type":"string","example":"number","description":"Data Type."},"modelName":{"type":"string","example":"StateBase","description":"Model Name."}}},"coordinates":{"type":"object","properties":{"title":{"type":"string","example":"Coordinates","description":"Display title."},"flags":{"type":"object"},"dataType":{"type":"string","example":"string","description":"Data Type."},"modelName":{"type":"string","example":"StateBase","description":"Model Name."}}},"lastCommunicatedUtc":{"type":"object","properties":{"title":{"type":"string","example":"Last Communicated Utc","description":"Display title."},"flags":{"type":"object","properties":{"showInGui":{"type":"boolean","example":true,"description":"Whether shown in the UI."}}},"dataType":{"type":"string","example":"datetime","description":"Data Type."},"modelName":{"type":"string","example":"StateBase","description":"Model Name."}}},"lastCommunicatedEpoch":{"type":"object","properties":{"title":{"type":"string","example":"Last Communicated Epoch","description":"Display title."},"flags":{"type":"object"},"dataType":{"type":"string","example":"number","description":"Data Type."},"modelName":{"type":"string","example":"StateBase","description":"Model Name."}}},"id":{"type":"object","properties":{"title":{"type":"string","example":"Id","description":"Display title."},"flags":{"type":"object"},"dataType":{"type":"string","example":"string","description":"Data Type."},"modelName":{"type":"string","example":"FlexibleTwin","description":"Model Name."}},"description":"Unique identifier."},"correlationId":{"type":"object","properties":{"title":{"type":"string","example":"Correlation Id","description":"Display title."},"flags":{"type":"object"},"dataType":{"type":"string","example":"string","description":"Data Type."},"modelName":{"type":"string","example":"FlexibleTwin","description":"Model Name."}},"description":"Client-supplied correlation id, echoed back for request tracing."}}},"layout":{"type":"object","properties":{"DeviceTemplate":{"type":"object","properties":{"StaticProperties":{"type":"array","items":{"type":"string"},"example":["deviceId","serial","deviceTypeId","pipelineId","createdDate","model","uninitialised","label","phasesCount","commsType","signalQualityDbm","simId","apn","imsi","networkId"]},"MetricsProperties":{"type":"array","items":{"type":"string"},"example":["hubEnqueuedTimeUtc","lastCommunicatedUtc"]}}}}},"id":{"type":"string","example":"4","description":"Unique identifier."},"type":{"type":"string","example":"DeviceTypeSchema","description":"Type discriminator."},"correlationId":{"type":"string","nullable":true,"example":null,"description":"Client-supplied correlation id, echoed back for request tracing."},"_ts":{"type":"integer","example":1732163564,"description":"Ts."}}},"AssetMetricsSummaryResponseObject":{"type":"object","properties":{"key":{"type":"string","description":"Key."},"minVal":{"type":"number","description":"Min Val."},"minTs":{"type":"string","description":"Min Ts."},"maxVal":{"type":"number","description":"Max Val."},"maxTs":{"type":"string","description":"Max Ts."},"avgVal":{"type":"number","description":"Avg Val."}}},"JsonPatchDocument":{"type":"array","items":{"required":["op","path"],"type":"object","properties":{"op":{"type":"string","description":"Op."},"path":{"type":"string","description":"Path."},"value":{"type":"object"}}}},"AssetBulkUpdateRequest":{"type":"object","properties":{"scope":{"$ref":"#/components/schemas/AssetScope"},"patchItems":{"type":"array","items":{"$ref":"#/components/schemas/PropertyPatchItem"}}},"required":["scope","patchItems"]},"AssetScope":{"type":"object","properties":{"scopeType":{"$ref":"#/components/schemas/AssetScopeTypes"},"objectRefs":{"type":"array","items":{"type":"string"}}},"required":["scopeType","objectRefs"]},"AssetScopeTypes":{"type":"string","enum":["UNKNOWN","SystemGlobal","SystemTenant","AssetId","AssetGroup","AssetType","TenantAssets"],"x-enumNames":["UNKNOWN","SystemGlobal","SystemTenant","AssetId","AssetGroup","AssetType","TenantAssets"],"x-enum-varnames":{"UNKNOWN":-100,"SystemGlobal":-1,"SystemTenant":0,"AssetId":1,"AssetGroup":2,"AssetType":3,"TenantAssets":5}},"PropertyPatchItem":{"type":"object","properties":{"op":{"type":"string","enum":["add","replace"],"description":"Op."},"path":{"type":"string","description":"Path."},"value":{"type":"string","description":"Value."},"oldValue":{"type":"string","description":"Old Value."}}},"CommentUploadData":{"type":"object","properties":{"comment":{"type":"string","description":"The actual comment text"},"systemObjectId":{"type":"string","description":"The ID of the system object (optional in body, set from route)"},"contentType":{"type":"string","description":"Optional MIME type, e.g., text/plain"},"description":{"type":"string","description":"Optional comment description or context"}},"required":["comment"]},"CommentMetadata":{"type":"object","properties":{"commentId":{"type":"string","description":"Comment Id."},"systemObjectId":{"type":"string","description":"System Object Id."},"user":{"type":"string","format":"email","description":"User."},"timestamp":{"type":"string","format":"date-time","description":"Timestamp."},"comment":{"type":"string","description":"Comment."}},"required":["commentId","systemObjectId","user","timestamp","comment"]},"PerspioAssetShareRequest":{"allOf":[{"$ref":"#/components/schemas/PerspioShareRequest"},{"type":"object","properties":{"shareType":{"type":"string","example":"AssetShare"}},"required":["shareType"]}]},"PerspioShareRequest":{"type":"object","properties":{"tenantId":{"type":"string","description":"Tenant ID (injected on server)"},"tokenValidFrom":{"type":"string","format":"date-time","description":"Token Valid From."},"tokenValidTo":{"type":"string","format":"date-time","description":"Token Valid To."},"enabled":{"type":"boolean","description":"Whether the record is enabled."},"isExpired":{"type":"boolean","readOnly":true,"description":"Is Expired."},"shareType":{"type":"string","description":"Share Type."},"email":{"type":"string","format":"email","description":"Email."},"mobile":{"type":"string","description":"Mobile."},"token":{"type":"string","description":"Token."},"createdOn":{"type":"string","format":"date-time","description":"Created On."},"updatedOn":{"type":"string","format":"date-time","description":"Updated On."},"objectIds":{"type":"string","description":"Comma-separated list of asset IDs"},"sourceId":{"type":"string","description":"Source Id."}},"required":["tokenValidFrom","tokenValidTo","objectIds"]},"DocumentLibraryReference":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the reference","example":"in-doclib-000001"},"name":{"type":"string","description":"Name of the document library reference","example":"Fleet Safety Documents"},"description":{"type":"string","description":"Description of the document library reference","example":"Standard safety documentation for fleet vehicles"},"enabled":{"type":"boolean","description":"Whether the reference is enabled","example":true}}},"DocumentLibraryReferenceRequest":{"type":"object","properties":{"name":{"type":"string","description":"Name of the document library reference"},"description":{"type":"string","description":"Description of the document library reference"}},"required":["name"]}},"securitySchemes":{"oauth2":{"type":"oauth2","description":"Client credentials from your Perspio API application. See Get Access Token.","flows":{"clientCredentials":{"tokenUrl":"/auth/v3/token","scopes":{}}}},"subscriptionKey":{"type":"apiKey","name":"Ocp-Apim-Subscription-Key","in":"header","description":"Your tenant's subscription key, from your API application."},"tenantId":{"type":"apiKey","name":"tid","in":"header","description":"Your tenant ID (tid), from your API application."}}},"security":[{"oauth2":[],"subscriptionKey":[],"tenantId":[]}],"tags":[{"name":"Data Explorer","description":"Asset data exploration (anomalies/forecast/history)."},{"name":"Details","description":"Asset details and lifecycle."},{"name":"DocumentLibrary","description":"Asset document library."},{"name":"Documents","description":"Asset documents and references."},{"name":"Jobs","description":"Bulk/async asset jobs."},{"name":"Profiles","description":"Asset profiles (counters, working hours, marker)."},{"name":"Servicing","description":"Asset servicing and rental."},{"name":"Socket","description":"Realtime telemetry socket negotiation."},{"name":"Telemetry","description":"Asset metrics, events and telemetry."}],"x-readme":{"oauth-options":{"useInsecureClientAuthentication":true}}}