{"openapi":"3.0.1","info":{"title":"Organisation","description":"Organisation","version":"v3"},"servers":[{"url":"https://talk.perspio.io/organisation/v3","description":"AU Region"},{"url":"https://us-talk.perspio.io/organisation/v3","description":"US Region"}],"paths":{"/configuration":{"get":{"tags":["Config"],"summary":"Get Tenant Config","description":"Return the tenant configuration flags and values.","operationId":"gettenantconfig","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"configs":{"type":"object","properties":{"idField":{"type":"string"},"assetTrackerDefaultGroup":{"type":"string"},"theme":{"type":"object","properties":{"mainColor":{"type":"string"},"secondaryColor":{},"scrollColor":{},"markerNotCommunicated":{},"markerActiveIgnitionOn":{},"markerActiveIgnitionOff":{},"markerPartial":{},"markerNoDevice":{"type":"string"},"markerNoDeviceActive":{}}},"filters":{"type":"object","properties":{"showDisabledAssets":{"type":"boolean"},"showTollRoads":{"type":"boolean"}}},"mapOption":{"type":"object","properties":{"theme":{"type":"object","properties":{"satellite":{"type":"boolean"},"perspio":{"type":"boolean"},"light":{"type":"boolean"},"dark":{"type":"boolean"},"googleDefault":{"type":"boolean"}}},"objects":{"type":"object","properties":{"clustering":{"type":"boolean"},"geofences":{"type":"boolean"},"kml":{"type":"boolean"},"toll":{"type":"boolean"}}},"layers":{"type":"object","properties":{"traffic":{"type":"boolean"}}}}},"reportSettings":{},"dynamicGroupsEnabled":{"type":"boolean"},"weekUsageProcessorEnabled":{"type":"boolean"},"geofenceFixProcessorEnabled":{"type":"boolean"},"servicingProcessorEnabled":{"type":"boolean"},"assetSharingEnabled":{"type":"boolean"},"assetSyncEnabled":{"type":"boolean"},"tripFinaliserProcessorEnabled":{"type":"boolean"},"runHourSyncEnabled":{"type":"boolean"},"odometerSyncEnabled":{"type":"boolean"},"systemJobFlags":{"type":"object","properties":{"dynamicGroupsEnabled":{"type":"boolean"},"weekUsageProcessorEnabled":{"type":"boolean"},"geofenceFixProcessorEnabled":{"type":"boolean"},"servicingProcessorEnabled":{"type":"boolean"},"assetSharingEnabled":{"type":"boolean"},"assetSyncEnabled":{"type":"boolean"},"runHourSyncEnabled":{"type":"boolean"},"odometerSyncEnabled":{"type":"boolean"},"tripFinaliserProcessorEnabled":{"type":"boolean"}}},"geofenceModuleSettings":{"type":"object","properties":{"snapshotChartGroupProperty":{"type":"string"},"categories":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the image."},"icon":{"type":"string","description":"Display icon of the banner."},"color":{"type":"string","description":"Display colour of the banner."}}}}}},"chipLabels":{"type":"object","properties":{"asset":{"type":"object","properties":{"property1":{"type":"object","properties":{"name":{"type":"string","description":"Name of the image."},"title":{"description":"Banner title."}}},"property2":{"type":"object","properties":{"name":{"type":"string","description":"Name of the image."},"title":{"description":"Banner title."}}}}}}},"localisationPreferences":{"type":"object","properties":{"timeZone":{"type":"string","description":"Default time zone of the tenant."},"dateFormat":{"type":"string"},"distance":{"type":"string"},"speed":{"type":"string"},"temperature":{"type":"string"},"capacity":{"type":"string"},"weight":{"type":"string"}}},"assetHeaderLabels":{"type":"object","properties":{"header1":{"type":"object","properties":{"name":{"type":"string","description":"Name of the image."}}},"header2":{"type":"object","properties":{"name":{"type":"string","description":"Name of the image."}}},"header3":{"type":"object","properties":{"name":{"description":"Name of the image."}}}}},"systemFlags":{"type":"object","properties":{"encodedSystemFlags":{"type":"number"},"enabled":{"type":"boolean"},"customCountersEnabled":{"type":"boolean"},"geofencingEnabled":{"type":"boolean"},"tollEnabled":{"type":"boolean"},"tripsEnabled":{"type":"boolean"},"computeOdometerEnabled":{"type":"boolean"},"computeRunhoursEnabled":{"type":"boolean"},"notificationsEnabled":{"type":"boolean"},"systemFlagsEnabled":{"type":"boolean"},"workflowsEnabled":{"type":"boolean"},"validated":{"type":"boolean"}}},"emailTemplates":{}},"description":"Tenant configuration flags and values."},"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."},"ownedBy":{"description":"Owner of the record."},"updatedDate":{"type":"string","description":"UTC timestamp when the record was last modified."},"id":{"type":"string","description":"Unique identifier of this record."},"type":{"type":"string","description":"Type / record-type discriminator."},"correlationId":{"type":"string","description":"Client-supplied correlation id, echoed back for request tracing."},"_ts":{"type":"number"}}},"example":{"configs":{"idField":"assetId","assetTrackerDefaultGroup":"DefaultGroup","theme":{"mainColor":"#0055FF","secondaryColor":"#FFA500","scrollColor":"#CCCCCC","markerNotCommunicated":"#FF0000","markerActiveIgnitionOn":"#00FF00","markerActiveIgnitionOff":"#0000FF","markerPartial":"#FFFF00","markerNoDevice":"#808080","markerNoDeviceActive":"#800080"},"filters":{"showDisabledAssets":false,"showTollRoads":true},"mapOption":{"theme":{"satellite":true,"perspio":true,"light":false,"dark":false,"googleDefault":false},"objects":{"clustering":true,"geofences":true,"kml":false,"toll":true},"layers":{"traffic":true}},"reportSettings":{},"dynamicGroupsEnabled":true,"weekUsageProcessorEnabled":true,"geofenceFixProcessorEnabled":true,"servicingProcessorEnabled":false,"assetSharingEnabled":true,"assetSyncEnabled":true,"tripFinaliserProcessorEnabled":true,"runHourSyncEnabled":false,"odometerSyncEnabled":true,"systemJobFlags":{"dynamicGroupsEnabled":true,"weekUsageProcessorEnabled":true,"geofenceFixProcessorEnabled":true,"servicingProcessorEnabled":false,"assetSharingEnabled":true,"assetSyncEnabled":true,"runHourSyncEnabled":false,"odometerSyncEnabled":true,"tripFinaliserProcessorEnabled":true},"geofenceModuleSettings":{"snapshotChartGroupProperty":"Branch","categories":[{"name":"Branch","icon":"location_on","color":"#0055FF"},{"name":"Depot","icon":"store","color":"#FFA500"}]},"chipLabels":{"asset":{"property1":{"name":"Status","title":"Asset Status"},"property2":{"name":"Location","title":"Current Location"}}},"localisationPreferences":{"timeZone":"Australia/Sydney","dateFormat":"dd/MM/yyyy","distance":"km","speed":"km/h","temperature":"C","capacity":"litres","weight":"kg"},"assetHeaderLabels":{"header1":{"name":"Asset Name"},"header2":{"name":"Status"},"header3":{"name":"Location"}},"systemFlags":{"encodedSystemFlags":123456,"enabled":true,"customCountersEnabled":true,"geofencingEnabled":true,"tollEnabled":true,"tripsEnabled":true,"computeOdometerEnabled":true,"computeRunhoursEnabled":true,"notificationsEnabled":true,"systemFlagsEnabled":true,"workflowsEnabled":true,"validated":true},"emailTemplates":{}},"createdBy":"admin@domain.com","createdDate":"2025-06-25T09:00:00.0000000+00:00","updatedBy":"user@domain.com","ownedBy":"ops-team","updatedDate":"2025-06-26T09:00:00.0000000+00:00","id":"config-123456","type":"Configuration","correlationId":"corr-abc-123456","_ts":1739900000}}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.TenantConfigApi.GetTenantConfig","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/config","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"patch":{"tags":["Config"],"summary":"Update Tenant Config","description":"Update the tenant configuration.","operationId":"updatetenantconfig","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchRequestObject"},"example":[{"op":"replace","path":"/theme/mainColor","value":"#1177d0"},{"op":"replace","path":"/filters/showTollRoads","value":true}]}}},"responses":{"200":{"description":"The tenant configuration was updated."},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.TenantConfigApi.UpdateTenantConfig","errorType":"NullReferenceException","statusCode":500,"request":"PATCH /api/config","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/catalog":{"get":{"tags":["Info"],"summary":"Get Tenant Info","description":"Return information about the current tenant.","operationId":"gettenantinfo","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"accountType":{"type":"object","description":"Account type of the tenant."},"correlationId":{"type":"string","description":"Client-supplied correlation id, echoed back for request tracing."},"databaseIndex":{"type":"string","description":"Internal database index for the tenant."},"dataRetentionPeriod":{"type":"integer","description":"Data retention period for the tenant.","format":"int32"},"groupId":{"type":"string","description":"Identifier of the tenant's group."},"id":{"type":"string","description":"Unique identifier of this record."},"organisationAddress":{"type":"object","properties":{"city":{"type":"string"},"country":{"type":"string"},"postCode":{"type":"string"},"streetName":{"type":"string"},"streetNumber":{"type":"string"}},"description":"Registered address of the organisation."},"organisationBillingContact":{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string","description":"Name of the image."},"phone":{"type":"string"}},"description":"Billing contact for the organisation."},"organisationTechnicalContact":{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string","description":"Name of the image."},"phone":{"type":"string"}},"description":"Technical contact for the organisation."},"perpioActionIds":{"type":"array","items":{"type":"string"},"description":"Associated Perspio action identifiers."},"perpiodataIds":{"type":"array","items":{"type":"string"},"description":"Associated Perspio data identifiers."},"perspioIngressIds":{"type":"array","items":{"type":"string"},"description":"Associated Perspio ingress identifiers."},"preferredAssetTypes":{"type":"object","description":"Asset types preferred/enabled for the tenant."},"type":{"type":"string","description":"Type / record-type discriminator."},"recurlyId":{"type":"object","description":"Recurly billing account id."},"rolesMap":{"type":"object","description":"Map of roles configured for the tenant."},"ruleTemplateGroups":{"type":"array","items":{"type":"object","properties":{"enabled":{"type":"boolean"},"properties":{"type":"object","description":"Additional properties."},"secrets":{"type":"object"},"templateGroupId":{"type":"string"}}},"description":"Rule template groups available to the tenant."},"tenantDescription":{"type":"string","description":"Description of the tenant."},"tenantDisplayName":{"type":"string","description":"Display name of the tenant."},"tenantName":{"type":"string","description":"Internal name of the tenant."},"timeZone":{"type":"string","description":"Default time zone of the tenant."}}}},"example":[{"accountType":{"type":"Premium","level":"Gold"},"correlationId":"corr-001","databaseIndex":"db-01","dataRetentionPeriod":365,"groupId":"group-123","id":"tenant-001","organisationAddress":{"city":"Sydney","country":"Australia","postCode":"2000","streetName":"George St","streetNumber":"123"},"organisationBillingContact":{"email":"billing@sydneycorp.com","name":"Alice Smith","phone":"+61-2-1234-5678"},"organisationTechnicalContact":{"email":"tech@sydneycorp.com","name":"Bob Johnson","phone":"+61-2-8765-4321"},"perpioActionIds":["action-101","action-102"],"perpiodataIds":["data-201","data-202"],"perspioIngressIds":["ingress-301","ingress-302"],"preferredAssetTypes":{"vehicles":["truck","van"],"equipment":["forklift","loader"]},"type":"Tenant","recurlyId":{"subscriptionId":"sub_987654"},"rolesMap":{"admin":["user-001","user-002"],"user":["user-003"]},"ruleTemplateGroups":[{"enabled":true,"properties":{"threshold":10,"alert":true},"secrets":{"apiKey":"abc123xyz"},"templateGroupId":"tmpl-01"}],"tenantDescription":"Sydney corporate tenant","tenantDisplayName":"Sydney Corp","tenantName":"sydneycorp","timeZone":"Australia/Sydney"},{"accountType":{"type":"Standard","level":"Silver"},"correlationId":"corr-002","databaseIndex":"db-02","dataRetentionPeriod":180,"groupId":"group-456","id":"tenant-002","organisationAddress":{"city":"Melbourne","country":"Australia","postCode":"3000","streetName":"Collins St","streetNumber":"456"},"organisationBillingContact":{"email":"billing@melbcorp.com","name":"Carol White","phone":"+61-3-1234-5678"},"organisationTechnicalContact":{"email":"tech@melbcorp.com","name":"Dave Brown","phone":"+61-3-8765-4321"},"perpioActionIds":["action-201"],"perpiodataIds":["data-301"],"perspioIngressIds":["ingress-401"],"preferredAssetTypes":{"vehicles":["car","bike"],"equipment":["crane"]},"type":"Tenant","recurlyId":{"subscriptionId":"sub_123456"},"rolesMap":{"admin":["user-004"],"user":["user-005","user-006"]},"ruleTemplateGroups":[{"enabled":false,"properties":{},"secrets":{},"templateGroupId":"tmpl-02"}],"tenantDescription":"Melbourne regional tenant","tenantDisplayName":"Melbourne Corp","tenantName":"melbournecorp","timeZone":"Australia/Melbourne"}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.TenantCatalog.GetTenantInfo","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/catalog","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"patch":{"tags":["Info"],"summary":"Update Tenant Info","description":"Update the tenant information.","operationId":"updateTenantInfo","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchRequestObject"},"example":[{"op":"replace","path":"/organisationAddress/counter/streetNumber","value":"3/50"},{"op":"replace","path":"/tenantDescription","value":"Safety Zone"}]}}},"responses":{"200":{"description":"The tenant information was updated."},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.TenantCatalog.UpdateTenantInformation","errorType":"NullReferenceException","statusCode":500,"request":"PATCH /api/catalog","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/logo":{"delete":{"tags":["Logo"],"summary":"Delete Tenant Logo Images","description":"Delete all logo images of a tenant.","operationId":"deleteimages","responses":{"200":{"description":"The logo images were deleted."},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"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/logoimages","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"post":{"tags":["Logo"],"summary":"Upload Tenant Logo","description":"Upload a new logo image for the tenant.","operationId":"uploadTenantLogo","requestBody":{"content":{"multipart/form-data":{"schema":{"required":["file"],"properties":{"file":{"type":"string","description":"The image file to upload","format":"binary"},"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"}}}}}},"responses":{"200":{"description":"The logo image was uploaded."},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.UploadLogoImages","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/logoimages","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/appversions":{"get":{"tags":["App Information"],"summary":"Get App Versions","description":"Get Perspio App Versions.","operationId":"getappversions","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppVersions"},"example":{"appVersions":{"android":{"version":"2001-05-02T12:00:00.0000000+00:00"},"ios":{"version":"2007-04-08T12:00:00.0000000+00:00"},"web":{"version":"2000-03-01T12:00:00.0000000+00:00"}},"id":"appver-12345","type":"AppVersions","correlationId":"corr-7890"}}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.AppVersions.GetPerspioAppVersions","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/appversions","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/inventory":{"get":{"tags":["Tenant"],"summary":"Get Tenant Inventory","description":"Fetch the inventory details of a tenant.","operationId":"getTenantInventory","parameters":[{"name":"includedisabledassets","in":"header","description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false.","schema":{"type":"boolean"},"example":"False"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"tenantUsage":{"type":"object","properties":{"tenantId":{"type":"string"},"tenantName":{"type":"string","description":"Internal name of the tenant."},"devices":{"type":"number"},"assets":{"type":"number"},"assetsEnabled":{"type":"number"},"assetsDisabled":{"type":"number"},"assetsWithDevices":{"type":"number"},"users":{"type":"number"},"groups":{"type":"number"},"assetGroups":{"type":"number"},"securityGroups":{"type":"number"},"geofences":{"type":"number"},"rules":{"type":"number"},"workflows":{"type":"number"},"linkedWorkflows":{"type":"number"},"dashboards":{"type":"number"},"people":{"type":"number"},"customCounters":{"type":"number"},"banners":{"type":"number"},"ingressConnectors":{"type":"number"},"dataConnectors":{"type":"number"},"actionConnectors":{"type":"number"},"webhookConnectors":{"type":"number"},"isTotal":{"type":"boolean"},"errors":{}},"description":"Current resource usage for the tenant."},"tenantQuota":{"type":"object","properties":{"assetQuota":{"type":"number"},"deviceQuota":{"type":"number"},"userQuota":{"type":"number"},"assetGroupQuota":{"type":"number"},"securityGroupQuota":{"type":"number"},"geofenceQuota":{"type":"number"},"ruleQuota":{"type":"number"},"dashboardQuota":{"type":"number"},"peopleQuota":{"type":"number"}},"description":"Resource quota (limit) for the tenant."}}},"example":{"tenantUsage":{"tenantId":"tenant-12345","tenantName":"ABC Logistics","devices":150,"assets":120,"assetsEnabled":110,"assetsDisabled":10,"assetsWithDevices":100,"users":50,"groups":5,"assetGroups":8,"securityGroups":4,"geofences":20,"rules":15,"workflows":12,"linkedWorkflows":7,"dashboards":6,"people":30,"customCounters":3,"banners":2,"ingressConnectors":5,"dataConnectors":4,"actionConnectors":6,"webhookConnectors":3,"isTotal":false,"errors":null},"tenantQuota":{"assetQuota":200,"deviceQuota":250,"userQuota":100,"assetGroupQuota":20,"securityGroupQuota":10,"geofenceQuota":50,"ruleQuota":30,"dashboardQuota":15,"peopleQuota":60}}}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.Inventory.GetTenantInventory","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/inventory","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/invoices":{"get":{"tags":["Billing & Consumption"],"summary":"Get Invoices","description":"Fetch all invoices of a tenant.","operationId":"getInvoices","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetInvoices-ResponseObject"},"example":{"object":"list","has_more":false,"next":null,"data":[{"id":"ot38cfewzc39","uuid":"5a9f7a18cf23b2f0617bca427a8f1439","object":"invoice","type":"charge","origin":"purchase","state":"paid","account":{"id":"ot37z6gwtwx5","object":"account","code":"Inauro_Test","email":"max@iot-advice.com.au","first_name":"Test","last_name":"Inauro","company":"Inauro","parent_account_id":null,"bill_to":"self","dunning_campaign_id":null},"billing_info_id":null,"subscription_ids":["ot38cfez6dxz"],"previous_invoice_id":null,"number":"1003","collection_method":"automatic","po_number":"","net_terms":0,"address":{"name_on_account":null,"first_name":"Test","last_name":"Inauro","company":"Inauro","street1":"1/15-21 Mindarie Street","street2":"","city":"Lane Cove North","region":"NSW","postal_code":"2066","country":"AU"},"currency":"AUD","balance":0,"paid":0,"total":0,"subtotal":0,"refundable_amount":0,"discount":0,"tax":0,"tax_info":{"type":"au","region":"AU","rate":0.1},"vat_number":"","vat_reverse_charge_notes":null,"terms_and_conditions":"","customer_notes":"","line_items":[{"id":"ot38cfew8yum","object":"line_item","uuid":"5a9f7a18c87fd6ae7b024d4990ac472d","type":"charge","state":"invoiced","legacy_category":null,"account":{"id":"ot37z6gwtwx5","object":"account","code":"Inauro_Test","email":"max@iot-advice.com.au","first_name":"Test","last_name":"Inauro","company":"Inauro","parent_account_id":null,"bill_to":"self","dunning_campaign_id":null},"bill_for_account_id":"ot37z6gwtwx5","subscription_id":"ot38cfez6dxz","plan_id":"ot383xz84vbe","plan_code":"test","add_on_id":null,"add_on_code":null,"invoice_id":"ot38cfewzc39","invoice_number":"1003","previous_line_item_id":null,"original_line_item_invoice_id":null,"origin":"plan","accounting_code":"","product_code":"test","credit_reason_code":null,"currency":"AUD","amount":0,"description":"Test","quantity":1,"unit_amount":0,"unit_amount_decimal":null,"subtotal":0,"discount":0,"tax":0,"taxable":true,"tax_exempt":false,"tax_code":null,"tax_info":null,"proration_rate":null,"refund":false,"refunded_quantity":null,"credit_applied":null,"shipping_address":null,"item_code":null,"item_id":null,"external_sku":null,"revenue_schedule_type":"evenly","start_date":"2021-05-03T05:23:55.0000000+00:00","end_date":"2021-06-03T05:23:55.0000000+00:00","created_at":"2021-05-03T05:23:55.0000000+00:00","updated_at":"2021-05-03T05:23:55.0000000+00:00"}],"has_more_line_items":false,"transactions":[],"credit_payments":[],"shipping_address":null,"created_at":"2021-05-03T05:23:55.0000000+00:00","updated_at":"2021-05-03T05:23:55.0000000+00:00","due_at":"2021-05-03T05:23:55.0000000+00:00","closed_at":"2021-05-03T05:23:55.0000000+00:00","dunning_campaign_id":null,"dunning_events_sent":0,"final_dunning_event":true}]}}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.in.GetInvoices","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/invoices","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/systemjobs":{"get":{"tags":["Tenant"],"summary":"Get System Jobs","description":"Fetch the system job catalog.","operationId":"getSystemJobs","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"lastRun":{"type":"string","description":"UTC timestamp of the last run."},"systemJobName":{"type":"string","description":"Name of the system job."},"systemJobDescription":{"type":"string","description":"Description of the system job."},"tenantConfigFlag":{"type":"string","description":"Tenant config flag that controls this job."},"tenantConfigFlagEnabled":{"type":"boolean","description":"Whether the controlling config flag is enabled."},"executionInterval":{"type":"string","description":"How often the job runs."},"isGlobal":{"type":"string","description":"Whether the record is shared across the tenant."},"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":{"type":"string","description":"Unique identifier of this record."},"type":{"type":"string","description":"Type / record-type discriminator."},"correlationId":{"description":"Client-supplied correlation id, echoed back for request tracing."},"_ts":{"type":"number"}}}},"example":[{"lastRun":"2025-06-24T08:30:00.0000000+00:00","systemJobName":"DataHealthCheck","systemJobDescription":"Performs routine data integrity checks across tenant databases.","tenantConfigFlag":"enableDataHealthJob","tenantConfigFlagEnabled":true,"executionInterval":"Daily","isGlobal":"false","createdBy":"admin-user","createdDate":"2024-12-01T10:00:00.0000000+00:00","updatedBy":"system","ownedBy":"platform-admin","updatedDate":"2025-06-24T08:00:00.0000000+00:00","id":"job-abc123","type":"SystemJob","correlationId":"corr-987654321","_ts":1739854321}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.SystemJobCatalog.GetSystemJobCatalog","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/systemjobs","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/consumption":{"get":{"tags":["Billing & Consumption"],"summary":"Get Tenant Consumption","description":"Fetch the overall consumption data of a tenant.","operationId":"getTenantConsumption","parameters":[{"name":"from","in":"query","description":"Start time in ISO 8601 format","required":true,"schema":{"type":"string","format":"date-time","example":"2024-06-18T02:00:00.0000000+00:00"}},{"name":"to","in":"query","description":"End time in ISO 8601 format","required":true,"schema":{"type":"string","format":"date-time","example":"2024-06-19T01:59:59.0000000+00:00"}},{"name":"page_size","in":"query","description":"Number of results per page","schema":{"type":"integer","example":50}},{"name":"summaryBy","in":"query","schema":{"type":"string"},"example":"day"},{"name":"timeZone","in":"query","schema":{"type":"string"},"example":"Australia/Sydney"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"timeStamp":{"type":"string","description":"Timestamp of the data point."},"timeStampEpoch":{"type":"number","description":"Timestamp of the data point, as Unix epoch milliseconds."},"assetsCount":{"type":"number","description":"Number of assets count."},"devicesCount":{"type":"number","description":"Number of devices count."},"activeDevicesDayCount":{"type":"number","description":"Number of active devices day count."},"activeDevicesMonthCount":{"type":"number","description":"Number of active devices month count."},"peopleCount":{"type":"number","description":"Number of people count."},"assetGroupsCount":{"type":"number","description":"Number of asset groups count."},"securityGroupsCount":{"type":"number","description":"Number of security groups count."},"bannersCount":{"type":"number","description":"Number of banners count."},"dashboardsCount":{"type":"number","description":"Number of dashboards count."},"geofencesCount":{"type":"number","description":"Number of geofences count."},"rulesCount":{"type":"number","description":"Number of rules count."},"usersCount":{"type":"number","description":"Number of users count."},"dailyActiveUsersCount":{"type":"number","description":"Number of daily active users count."},"monthlyActiveUsersCount":{"type":"number","description":"Number of monthly active users count."},"dailyActiveAssetsCount":{"type":"number","description":"Number of daily active assets count."},"monthlyActiveAssetsCount":{"type":"number","description":"Number of monthly active assets count."},"assetsLinkedDevicesCount":{"type":"number","description":"Number of assets linked devices count."}}}},"example":[{"timeStamp":"2025-06-25T10:00:00.0000000+00:00","timeStampEpoch":1761434400,"assetsCount":120,"devicesCount":95,"activeDevicesDayCount":80,"activeDevicesMonthCount":90,"peopleCount":60,"assetGroupsCount":10,"securityGroupsCount":5,"bannersCount":3,"dashboardsCount":7,"geofencesCount":15,"rulesCount":20,"usersCount":50,"dailyActiveUsersCount":35,"monthlyActiveUsersCount":48,"dailyActiveAssetsCount":100,"monthlyActiveAssetsCount":110,"assetsLinkedDevicesCount":85}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.Consumption.GetTenantConsumption","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/consumption","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/consumption/actions":{"get":{"tags":["Billing & Consumption"],"summary":"Get Tenant Actions Consumption","description":"Fetch action-specific consumption data of a tenant.","operationId":"getTenantActionsConsumption","parameters":[{"name":"from","in":"query","description":"Start time in ISO 8601 format","required":true,"schema":{"type":"string","format":"date-time","example":"2023-12-19T04:35:54.0000000+00:00"}},{"name":"to","in":"query","description":"End time in ISO 8601 format","required":true,"schema":{"type":"string","format":"date-time","example":"2024-06-19T05:35:54.0000000+00:00"}},{"name":"timeZone","in":"query","description":"IANA time zone used to bucket the daily consumption figures. Defaults to the tenant time zone.","schema":{"type":"string"},"example":"Australia/Sydney"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"timeStamp":{"type":"string","description":"Timestamp of the data point."},"ac-000001":{"type":"number","description":"Number of executions of action ac-000001 in the period."},"ac-000002":{"type":"number","description":"Number of executions of action ac-000002 in the period."},"ac-000003":{"type":"number","description":"Number of executions of action ac-000003 in the period."},"ac-000004":{"type":"number","description":"Number of executions of action ac-000004 in the period."},"ac-000005":{"type":"number","description":"Number of executions of action ac-000005 in the period."},"ac-000006":{"type":"number","description":"Number of executions of action ac-000006 in the period."},"ac-000007":{"type":"number","description":"Number of executions of action ac-000007 in the period."},"ac-000010":{"type":"number","description":"Number of executions of action ac-000010 in the period."},"ac-000011":{"type":"number","description":"Number of executions of action ac-000011 in the period."},"ac-000012":{"type":"number","description":"Number of executions of action ac-000012 in the period."},"ac-000013":{"type":"number","description":"Number of executions of action ac-000013 in the period."},"ac-000014":{"type":"number","description":"Number of executions of action ac-000014 in the period."},"ac-000015":{"type":"number","description":"Number of executions of action ac-000015 in the period."},"ac-000016":{"type":"number","description":"Number of executions of action ac-000016 in the period."},"ac-000017":{"type":"number","description":"Number of executions of action ac-000017 in the period."},"ac-000018":{"type":"number","description":"Number of executions of action ac-000018 in the period."},"ac-000019":{"type":"number","description":"Number of executions of action ac-000019 in the period."}}}},"example":[{"timeStamp":"2025-06-25T10:00:00.0000000+00:00","ac-000001":12,"ac-000002":15,"ac-000003":8,"ac-000004":10,"ac-000005":5,"ac-000006":7,"ac-000007":9,"ac-000010":4,"ac-000011":6,"ac-000012":11,"ac-000013":13,"ac-000014":14,"ac-000015":16,"ac-000016":9,"ac-000017":3,"ac-000018":5,"ac-000019":7}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.Consumption.GetTenantActionsConsumption","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/consumption/actions","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/logoimage/{id}":{"get":{"tags":["Logo"],"summary":"Get Tenant Logo Image","description":"Fetch logo image of a tenant.","operationId":"getTenantLogo","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","example":"im-xxxxx-xxnmnmxx"}}],"responses":{"200":{"description":"The logo image.","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"},"examples":{"default":{"value":null}}}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.GetLogoImage","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/logoimage/im-xxxxx-xxnmnmxx","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/logoimages":{"get":{"tags":["Logo"],"summary":"Get Tenant Logo Images","description":"Fetch all logo images of a tenant.","operationId":"getLogos","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogoImages"},"example":[{"createdDate":"2024-09-05T04:19:15.0000000+00:00","name":"logo/im-1d10b409-30a1-496e-8698-b66ac49458fb","contentType":"image/png","imgType":"bgSmall","isPreferred":"false"},{"createdDate":"2024-10-12T11:30:00.0000000+00:00","name":"banner/im-2a34cd45-67e2-498d-951a-88bcde1234fa","contentType":"image/jpeg","imgType":"bgLarge","isPreferred":"true"},{"createdDate":"2025-01-20T07:45:22.0000000+00:00","name":"logo/im-5c78de90-12b3-4679-9945-ffe9aabc9087","contentType":"image/svg+xml","imgType":"icon","isPreferred":"false"},{"createdDate":"2025-03-01T02:10:55.0000000+00:00","name":"header/im-9e21ab34-4567-4932-bb67-ccdfaa123c45","contentType":"image/webp","imgType":null,"isPreferred":"true"}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.GetLogoImages","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/logoimages","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/banners":{"get":{"tags":["Banners"],"summary":"Get Notifications","description":"List the active in-app notification banners.","operationId":"getNotifications","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Banners"},"example":[{"pipelineId":"dc-000005","level":3,"title":"Data Connector Issue","description":"Ongoing issues with Syrinx Asset Master (dc-000005)","properties":null,"startDateUtc":"2025-01-14T08:32:12.0000000+00:00","endDateUtc":"2025-02-13T08:32:12.0000000+00:00","createdBy":null,"createdDate":"2025-01-14T08:32:12.0000000+00:00","updatedBy":null,"ownedBy":null,"updatedDate":"2025-01-14T08:32:12.0000000+00:00","id":"bn-dc-000005-e892ba21-9c15-4c94-974c-67b8c738d29d","type":"Notification","correlationId":"proc-000025-20250114-083212-581-33261","_ts":1736843533,"color":"#E53935","icon":"times-circle"}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.BannerApi.GetBanners","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/banners","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/banners/{id}":{"get":{"tags":["Banners"],"summary":"Get Notification","description":"Fetch a single notification banner by id.","operationId":"getNotification","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Banner"},"example":{"pipelineId":"dc-000005","level":3,"title":"Data Connector Issue","description":"Ongoing issues with Syrinx Asset Master (dc-000005)","properties":null,"startDateUtc":"2025-01-14T08:32:12.0000000+00:00","endDateUtc":"2025-02-13T08:32:12.0000000+00:00","createdBy":null,"createdDate":"2025-01-14T08:32:12.0000000+00:00","updatedBy":null,"ownedBy":null,"updatedDate":"2025-01-14T08:32:12.0000000+00:00","id":"bn-dc-000005-e892ba21-9c15-4c94-974c-67b8c738d29d","type":"Notification","correlationId":"proc-000025-20250114-083212-581-33261","_ts":1736843533,"color":"#E53935","icon":"times-circle"}}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.BannerApi.GetBannerById","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/banners/in-000052","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/referencedata/metadata/types":{"get":{"tags":["Reference Data"],"summary":"Get Entity Types","description":"Retrieve a list of all available entity types","operationId":"getEntityTypes","responses":{"200":{"description":"List of entity types","content":{"application/json":{"schema":{"type":"array","items":{"enum":["GeotabBranchEntity","FleetManufacturerModelEntity","ServiceJobTypeEntity","FleetItemHireStatusEntity","FleetCategoryEntity","ServiceJobStatusEntity","GenericDataEntity"],"type":"string"}},"example":["GeotabBranchEntity","FleetManufacturerModelEntity","ServiceJobTypeEntity"]}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.TenantReferenceDataApi.GetEntityTypes","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/referencedata/metadata/types","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/referencedata/metadata/schemas":{"get":{"tags":["Reference Data"],"summary":"Get All Entity Schemas","description":"Retrieve schemas for all entity types","operationId":"getAllEntitySchemas","responses":{"200":{"description":"Schemas for all entity types","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/EntitySchema"}},"example":{"FleetCategory":{"EntityName":"FleetCategory","Properties":[{"Name":"name","Type":"Fleet asset value"},{"Name":"sortOrder","Type":"integer"}]}}}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.TenantReferenceDataApi.GetAllEntitySchemas","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/referencedata/metadata/schemas","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/referencedata/metadata/schemas/{entityType}":{"get":{"tags":["Reference Data"],"summary":"Get Entity Schema","description":"Retrieve schema for a specific entity type","operationId":"getEntitySchema","parameters":[{"name":"entityType","in":"path","description":"The entity type to get schema for","required":true,"schema":{"enum":["GeotabBranchEntity","FleetManufacturerModelEntity","ServiceJobTypeEntity","FleetItemHireStatusEntity","FleetCategoryEntity","ServiceJobStatusEntity","GenericDataEntity"],"type":"string"}}],"responses":{"200":{"description":"Entity schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitySchema"},"example":{"EntityName":"FleetCategory","Properties":[{"Name":"name","Type":"Fleet asset value"},{"Name":"sortOrder","Type":"integer"}]}}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.TenantReferenceDataApi.GetEntitySchema","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/referencedata/metadata/schemas/assets","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/referencedata/{entityType}":{"get":{"tags":["Reference Data"],"summary":"Get Entity Data","description":"Retrieve all data for a specific entity type. Any other query parameter whose name matches a property of the entity type (case-insensitive) is applied as an equality filter, e.g. ?branchName=Sydney; unknown or empty parameters are ignored. Without pageSize/continuationToken the full (filtered) list is returned as a bare array.","operationId":"getEntityData","parameters":[{"name":"entityType","in":"path","description":"The entity type to retrieve data for","required":true,"schema":{"enum":["GeotabBranchEntity","FleetManufacturerModelEntity","ServiceJobTypeEntity","FleetItemHireStatusEntity","FleetCategoryEntity","ServiceJobStatusEntity","GenericDataEntity"],"type":"string"}},{"name":"pageSize","in":"query","description":"Page size for paged mode (defaults to 100 when not a valid number). Supplying pageSize or continuationToken switches the response to the paged shape {\"Data\": [entities], \"ContinuationToken\": \"<token>\"} instead of a bare array. Note: this operation uses camelCase pageSize, not the platform-wide page_size.","schema":{"type":"integer"},"example":100},{"name":"continuationToken","in":"query","description":"Continuation token from the previous paged response (Data/ContinuationToken shape). Also switches the response to paged mode.","schema":{"type":"string"}}],"responses":{"200":{"description":"Entity data","content":{"application/json":{"schema":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/GeotabBranchEntity"},{"$ref":"#/components/schemas/FleetManufacturerModelEntity"},{"$ref":"#/components/schemas/ServiceJobTypeEntity"},{"$ref":"#/components/schemas/FleetItemHireStatusEntity"},{"$ref":"#/components/schemas/FleetCategoryEntity"},{"$ref":"#/components/schemas/ServiceJobStatusEntity"},{"$ref":"#/components/schemas/GenericDataEntity"}]}},"example":[{"id":"FC-000123","name":"Excavators","code":"EXC"}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.TenantReferenceDataApi.GetEntityData","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/referencedata/assets","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"post":{"tags":["Reference Data"],"summary":"Create Entity Data","description":"Create a new entity record","operationId":"createEntityData","parameters":[{"name":"entityType","in":"path","description":"The entity type to create","required":true,"schema":{"enum":["GeotabBranchEntity","FleetManufacturerModelEntity","ServiceJobTypeEntity","FleetItemHireStatusEntity","FleetCategoryEntity","ServiceJobStatusEntity","GenericDataEntity"],"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/GeotabBranchEntityInput"},{"$ref":"#/components/schemas/FleetManufacturerModelEntityInput"},{"$ref":"#/components/schemas/ServiceJobTypeEntityInput"},{"$ref":"#/components/schemas/FleetItemHireStatusEntityInput"},{"$ref":"#/components/schemas/FleetCategoryEntityInput"},{"$ref":"#/components/schemas/ServiceJobStatusEntityInput"},{"$ref":"#/components/schemas/GenericDataEntityInput"}]}},"example":[{"Id":"string","Timestamp":"string","Region":"string","Name":"string","StateShort":"string","StateLong":"string","Address":"string","FleetioGroupId":"string","SCSiteId":"string"}]}}},"responses":{"200":{"description":"Entity created successfully","content":{"application/json":{"schema":{"type":"string","example":"Entity created successfully"},"example":"Successfully created 3 entities"}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.TenantReferenceDataApi.CreateEntityData","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/referencedata/assets","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"put":{"tags":["Reference Data"],"summary":"Bulk update entity data","description":"Updates multiple entities using transactional batch operations.","operationId":"bulkUpdateEntityData","parameters":[{"name":"entityType","in":"path","description":"The type of entity to operate on","required":true,"schema":{"enum":["GeotabBranchEntity","FleetManufacturerModelEntity","ServiceJobTypeEntity","FleetItemHireStatusEntity","FleetCategoryEntity","ServiceJobStatusEntity","GenericDataEntity"],"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/GeotabBranchEntityInput"},{"$ref":"#/components/schemas/FleetManufacturerModelEntityInput"},{"$ref":"#/components/schemas/ServiceJobTypeEntityInput"},{"$ref":"#/components/schemas/FleetItemHireStatusEntityInput"},{"$ref":"#/components/schemas/FleetCategoryEntityInput"},{"$ref":"#/components/schemas/ServiceJobStatusEntityInput"},{"$ref":"#/components/schemas/GenericDataEntityInput"}]}},"example":[{"Id":"string","Timestamp":"string","Region":"string","Name":"string","StateShort":"string","StateLong":"string","Address":"string","FleetioGroupId":"string","SCSiteId":"string"}]}}},"responses":{"200":{"description":"Entity updated successfully","content":{"application/json":{"schema":{"type":"string","example":"Entity updated successfully"},"example":"Successfully updated 5 entities"}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.TenantReferenceDataApi.BulkUpdateEntityData","errorType":"NullReferenceException","statusCode":500,"request":"PUT /api/referencedata/assets","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"delete":{"tags":["Reference Data"],"summary":"Bulk delete entity data","description":"Deletes multiple entities by their IDs using transactional batch operations.","operationId":"bulkDeleteEntityData","parameters":[{"name":"entityType","in":"path","description":"The type of entity to operate on","required":true,"schema":{"enum":["GeotabBranchEntity","FleetManufacturerModelEntity","ServiceJobTypeEntity","FleetItemHireStatusEntity","FleetCategoryEntity","ServiceJobStatusEntity","GenericDataEntity"],"type":"string"}},{"name":"ids","in":"query","description":"Ids to delete","required":true,"schema":{"type":"string","example":"1,2,3"}}],"responses":{"200":{"description":"Entities deleted successfully","content":{"application/json":{"schema":{"type":"string","example":"Successfully deleted 5 entities using TransactionalBatch"},"example":"Successfully deleted 4 entities"}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.TenantReferenceDataApi.BulkDeleteEntityData","errorType":"NullReferenceException","statusCode":500,"request":"DELETE /api/referencedata/assets","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/referencedata/{entityType}/{id}":{"put":{"tags":["Reference Data"],"summary":"Update specific entity","description":"Updates a specific entity by ID.","operationId":"updateEntityData","parameters":[{"name":"entityType","in":"path","description":"The type of entity to operate on","required":true,"schema":{"enum":["GeotabBranchEntity","FleetManufacturerModelEntity","ServiceJobTypeEntity","FleetItemHireStatusEntity","FleetCategoryEntity","ServiceJobStatusEntity","GenericDataEntity"],"type":"string"}},{"name":"id","in":"path","description":"Entity ID","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Entity data to update","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityData"},"example":{"Id":"string","Timestamp":"string"}}}},"responses":{"200":{"description":"Entity updated successfully","content":{"application/json":{"schema":{"type":"string","example":"Entity updated successfully"},"example":"Entity updated successfully"}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.TenantReferenceDataApi.UpdateEntityData","errorType":"NullReferenceException","statusCode":500,"request":"PUT /api/referencedata/assets/in-000052","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"delete":{"tags":["Reference Data"],"summary":"Delete specific entity","description":"Deletes a specific entity by ID.","operationId":"deleteEntityData","parameters":[{"name":"entityType","in":"path","description":"The type of entity to operate on","required":true,"schema":{"enum":["GeotabBranchEntity","FleetManufacturerModelEntity","ServiceJobTypeEntity","FleetItemHireStatusEntity","FleetCategoryEntity","ServiceJobStatusEntity","GenericDataEntity"],"type":"string"}},{"name":"id","in":"path","description":"Entity ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Entity deleted successfully","content":{"application/json":{"schema":{"type":"string","example":"Entity deleted successfully"},"example":"Entity deleted successfully"}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.TenantReferenceDataApi.DeleteEntityData","errorType":"NullReferenceException","statusCode":500,"request":"DELETE /api/referencedata/assets/in-000052","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/appchangelog":{"get":{"tags":["App Information"],"summary":"Get App Changelog","description":"Fetch the changelog entries and metadata for a specific app version.","operationId":"getappchangelog","parameters":[{"name":"version","in":"query","description":"The version number to retrieve (e.g. `1.0`, `1.0.0`).","schema":{"pattern":"^\\d+(\\.\\d+){1,2}$","type":"string"}}],"responses":{"200":{"description":"List of change logs","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AppChangeLogRecord"}},"example":[{"id":"AppChangeLogRecord-25.09.25","type":"GlobalConfig","correlationId":"api-20251015-023814-456-09f15","_ts":1760496010,"appChangeLog":[{"id":"1","type":"Added","description":"Terra Draw Integration with GeoJSON upload"},{"id":"2","type":"Added","description":"Hot Tasks Feature with history replay"},{"id":"10","type":"Changed","description":"Major Client App Refactor for performance"},{"id":"17","type":"Fixed","description":"Device registration and ID handling errors"}]}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.AppVersions.GetPerspioAppChangeLog","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/appchangelog","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/consumption/ai":{"get":{"tags":["Billing & Consumption"],"summary":"Get Tenant AI Consumption","description":"Fetch current-period AI usage, run counts, costs, effective quota, and optional breakdown by agent instance.","operationId":"getTenantAiConsumption","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"totalUsage":{"type":"integer","description":"Total AI usage in the period.","format":"int64"},"quota":{"type":"integer","description":"AI usage quota for the period.","format":"int64"},"runCount":{"type":"integer","description":"Number of AI runs in the period.","format":"int64"},"actualCostUsd":{"pattern":"^-?\\d+(\\.\\d{1,6})?$","type":"string","description":"Decimal currency encoded as string to preserve precision across SDKs."},"billedCostUsd":{"pattern":"^-?\\d+(\\.\\d{1,6})?$","type":"string","description":"Decimal currency encoded as string to preserve precision across SDKs."},"billedCostAud":{"pattern":"^-?\\d+(\\.\\d{1,6})?$","type":"string","description":"Decimal currency encoded as string to preserve precision across SDKs."},"periodKey":{"type":"string","description":"Billing period key."},"lastUpdatedUtc":{"type":"string","description":"UTC timestamp when the figures were last updated.","format":"date-time"},"breakdown":{"type":"object","description":"Per-model / per-feature cost breakdown.","nullable":true}}},"example":{"totalUsage":1240,"quota":5000,"runCount":87,"actualCostUsd":"12.45","billedCostUsd":"15.00","billedCostAud":"22.80","periodKey":"2026-06-01","lastUpdatedUtc":"2026-06-30T02:00:00.0000000+00:00","breakdown":{"gpt-4o":"2026-09-20T12:00:00.0000000+00:00","embeddings":"2026-03-25T12:00:00.0000000+00:00"}}}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Access token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Organisation.in.GetTenantAiConsumption","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/consumption/ai","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}}},"components":{"schemas":{"PerspioError":{"type":"object","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","description":"HTTP status code of the error.","format":"int32"},"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."}},"description":"Standard Perspio backend error body (ErrorResultObject emitted by the error-handling middleware)."},"PatchRequestObject":{"type":"array","items":{"required":["op","path","value"],"type":"object","properties":{"op":{"type":"string"},"path":{"type":"string"},"value":{"type":"string"}}}},"Success":{"type":"object","properties":{"tenantId":{"type":"string"},"tenantName":{"type":"string","description":"Internal name of the tenant."},"devices":{"type":"integer"},"assets":{"type":"integer"},"users":{"type":"integer"},"sites":{"type":"integer"},"groups":{"type":"integer"},"assetGroups":{"type":"integer"},"securityGroups":{"type":"integer"},"geofences":{"type":"integer"},"rules":{"type":"integer"},"dashboards":{"type":"integer"},"notifications":{"type":"integer"},"isTotal":{"type":"boolean"},"errors":{"type":"string"}}},"Success__-_Inventory":{"type":"object","properties":{"tenantId":{"type":"string"},"tenantName":{"type":"string","description":"Internal name of the tenant."},"devices":{"type":"integer"},"assets":{"type":"integer"},"users":{"type":"integer"},"sites":{"type":"integer"},"groups":{"type":"integer"},"assetGroups":{"type":"integer"},"securityGroups":{"type":"integer"},"geofences":{"type":"integer"},"rules":{"type":"integer"},"dashboards":{"type":"integer"},"notifications":{"type":"integer"},"isTotal":{"type":"boolean"},"errors":{}},"x-apim-schema-name":"Success  - Inventory"},"GetInvoices-ResponseObject":{"type":"object","properties":{"object":{"type":"string","description":"Object type discriminator."},"has_more":{"type":"boolean","description":"Whether more results are available."},"next":{"description":"Cursor for the next page of results."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of this record."},"uuid":{"type":"string"},"object":{"type":"string","description":"Object type discriminator."},"type":{"type":"string","description":"Type / record-type discriminator."},"origin":{"type":"string"},"state":{"type":"string"},"account":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of this record."},"object":{"type":"string","description":"Object type discriminator."},"code":{"type":"string"},"email":{"type":"string"},"first_name":{"type":"string"},"last_name":{"type":"string"},"company":{"type":"string"},"parent_account_id":{},"bill_to":{"type":"string"},"dunning_campaign_id":{}},"description":"Number of ac."},"billing_info_id":{},"subscription_ids":{"type":"array","items":{"type":"string"}},"previous_invoice_id":{},"number":{"type":"string"},"collection_method":{"type":"string"},"po_number":{"type":"string"},"net_terms":{"type":"integer"},"address":{"type":"object","properties":{"name_on_account":{"description":"Number of name_on_ac."},"first_name":{"type":"string"},"last_name":{"type":"string"},"company":{"type":"string"},"street1":{"type":"string"},"street2":{"type":"string"},"city":{"type":"string"},"region":{"type":"string"},"postal_code":{"type":"string"},"country":{"type":"string"}}},"currency":{"type":"string"},"balance":{"type":"integer"},"paid":{"type":"integer"},"total":{"type":"integer"},"subtotal":{"type":"integer"},"refundable_amount":{"type":"integer"},"discount":{"type":"integer","description":"Number of dis."},"tax":{"type":"integer"},"tax_info":{"type":"object","properties":{"type":{"type":"string","description":"Type / record-type discriminator."},"region":{"type":"string"},"rate":{"type":"number"}}},"vat_number":{"type":"string"},"vat_reverse_charge_notes":{},"terms_and_conditions":{"type":"string"},"customer_notes":{"type":"string"},"line_items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of this record."},"object":{"type":"string","description":"Object type discriminator."},"uuid":{"type":"string"},"type":{"type":"string","description":"Type / record-type discriminator."},"state":{"type":"string"},"legacy_category":{},"account":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of this record."},"object":{"type":"string","description":"Object type discriminator."},"code":{"type":"string"},"email":{"type":"string"},"first_name":{"type":"string"},"last_name":{"type":"string"},"company":{"type":"string"},"parent_account_id":{},"bill_to":{"type":"string"},"dunning_campaign_id":{}},"description":"Number of ac."},"bill_for_account_id":{"type":"string"},"subscription_id":{"type":"string"},"plan_id":{"type":"string"},"plan_code":{"type":"string"},"add_on_id":{},"add_on_code":{},"invoice_id":{"type":"string"},"invoice_number":{"type":"string"},"previous_line_item_id":{},"original_line_item_invoice_id":{},"origin":{"type":"string"},"accounting_code":{"type":"string"},"product_code":{"type":"string"},"credit_reason_code":{},"currency":{"type":"string"},"amount":{"type":"integer"},"description":{"type":"string","description":"Free-text description."},"quantity":{"type":"integer"},"unit_amount":{"type":"integer"},"unit_amount_decimal":{},"subtotal":{"type":"integer"},"discount":{"type":"integer","description":"Number of dis."},"tax":{"type":"integer"},"taxable":{"type":"boolean"},"tax_exempt":{"type":"boolean"},"tax_code":{},"tax_info":{},"proration_rate":{},"refund":{"type":"boolean"},"refunded_quantity":{},"credit_applied":{},"shipping_address":{},"item_code":{},"item_id":{},"external_sku":{},"revenue_schedule_type":{"type":"string"},"start_date":{"type":"string"},"end_date":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}}}},"has_more_line_items":{"type":"boolean"},"transactions":{"type":"array","items":{"type":"object","description":"Billing-provider (Recurly) transaction object, passed through as-is."}},"credit_payments":{"type":"array","items":{"type":"object","description":"Billing-provider (Recurly) credit-payment object, passed through as-is."}},"shipping_address":{},"created_at":{"type":"string"},"updated_at":{"type":"string"},"due_at":{"type":"string"},"closed_at":{"type":"string"},"dunning_campaign_id":{},"dunning_events_sent":{"type":"integer"},"final_dunning_event":{"type":"boolean"}}},"description":"The list of returned items."}}},"Banner":{"type":"object","properties":{"pipelineId":{"type":"string","description":"Pipeline that generated the banner.","example":"dc-000005"},"level":{"type":"integer","description":"Severity level of the banner.","example":3},"title":{"type":"string","description":"Banner title.","example":"Data Connector Issue"},"description":{"type":"string","description":"Free-text description.","nullable":true,"example":"Ongoing issues with Syrinx Asset Master (dc-000005)"},"properties":{"type":"string","description":"Additional properties.","nullable":true,"example":null},"startDateUtc":{"type":"string","description":"UTC start of the display window.","format":"date-time","example":"2025-01-14T08:32:12.0000000+00:00"},"endDateUtc":{"type":"string","description":"UTC end of the display window.","format":"date-time","example":"2025-02-13T08:32:12.0000000+00:00"},"createdBy":{"type":"string","description":"User or system that created the record.","nullable":true,"example":null},"createdDate":{"type":"string","description":"UTC timestamp when the record was created.","format":"date-time","example":"2025-01-14T08:32:12.0000000+00:00"},"updatedBy":{"type":"string","description":"User or system that last modified the record.","nullable":true,"example":null},"ownedBy":{"type":"string","description":"Owner of the record.","nullable":true,"example":null},"updatedDate":{"type":"string","description":"UTC timestamp when the record was last modified.","format":"date-time","example":"2025-01-14T08:32:12.0000000+00:00"},"id":{"type":"string","description":"Unique identifier of this record.","example":"bn-dc-000005-e892ba21-9c15-4c94-974c-67b8c738d29d"},"type":{"type":"string","description":"Type / record-type discriminator.","example":"Notification"},"correlationId":{"type":"string","description":"Client-supplied correlation id, echoed back for request tracing.","example":"proc-000025-20250114-083212-581-33261"},"_ts":{"type":"integer","example":1736843533},"color":{"type":"string","description":"Display colour of the banner.","example":"#E53935"},"icon":{"type":"string","description":"Display icon of the banner.","example":"times-circle"}}},"Banners":{"type":"array","items":{"$ref":"#/components/schemas/Banner"}},"AppVersions":{"type":"object","properties":{"appVersions":{"type":"object","properties":{"android":{"type":"object","properties":{"version":{"type":"string"}}},"ios":{"type":"object","properties":{"version":{"type":"string"}}},"web":{"type":"object","properties":{"version":{"type":"string"}}}},"description":"Available Perspio app versions."},"id":{"type":"string","description":"Unique identifier of this record."},"type":{"type":"string","description":"Type / record-type discriminator."},"correlationId":{"type":"string","description":"Client-supplied correlation id, echoed back for request tracing."}}},"ImageMetadata":{"type":"object","properties":{"createdDate":{"type":"string","description":"UTC timestamp when the record was created.","format":"date-time","example":"2024-09-05T04:19:15.0000000+00:00"},"name":{"type":"string","description":"Name of the image.","example":"logo/im-1d10b409-30a1-496e-8698-b66ac49458fb"},"contentType":{"type":"string","description":"MIME content type of the image.","example":"image/png"},"imgType":{"type":"string","description":"Logo image type (e.g. light or dark).","nullable":true,"example":"bgSmall"},"isPreferred":{"type":"string","description":"Whether this is the preferred image.","example":"false"}}},"LogoImages":{"type":"array","items":{"$ref":"#/components/schemas/ImageMetadata"}},"EntityData":{"type":"object","properties":{"Id":{"type":"string","description":"Entity identifier"},"Timestamp":{"type":"string","description":"Last modified timestamp","format":"date-time"}},"description":"Base entity data structure. Actual properties depend on entity type."},"EntitySchema":{"type":"object","properties":{"EntityName":{"type":"string","description":"Name of the entity"},"Properties":{"type":"array","items":{"type":"object","properties":{"Name":{"type":"string","description":"Property name"},"Type":{"type":"string","description":"Property type"},"IsRequired":{"type":"boolean","description":"Whether the property is required"},"Description":{"type":"string","description":"Property description"}}},"description":"Additional properties."}}},"GeotabBranchEntity":{"allOf":[{"$ref":"#/components/schemas/EntityData"},{"type":"object","properties":{"Region":{"type":"string","description":"Branch region"},"Name":{"type":"string","description":"Branch name"},"StateShort":{"type":"string","description":"State abbreviation"},"StateLong":{"type":"string","description":"Full state name"},"Address":{"type":"string","description":"Branch address"},"FleetioGroupId":{"type":"string","description":"Fleetio group identifier"},"SCSiteId":{"type":"string","description":"SC site identifier"}}}]},"GeotabBranchEntityInput":{"allOf":[{"$ref":"#/components/schemas/EntityData"},{"required":["Name"],"type":"object","properties":{"Region":{"type":"string","description":"Branch region"},"Name":{"type":"string","description":"Branch name"},"StateShort":{"type":"string","description":"State abbreviation"},"StateLong":{"type":"string","description":"Full state name"},"Address":{"type":"string","description":"Branch address"},"FleetioGroupId":{"type":"string","description":"Fleetio group identifier"},"SCSiteId":{"type":"string","description":"SC site identifier"}}}]},"FleetManufacturerModelEntity":{"allOf":[{"$ref":"#/components/schemas/EntityData"},{"type":"object","properties":{"Id":{"type":"string","description":"Unique identifier"},"Make":{"type":"string","description":"Vehicle manufacturer"},"Model":{"type":"string","description":"Vehicle model"}}}]},"FleetManufacturerModelEntityInput":{"allOf":[{"$ref":"#/components/schemas/EntityData"},{"required":["Id","Make","Model"],"type":"object","properties":{"Id":{"type":"string","description":"Unique identifier"},"Make":{"type":"string","description":"Vehicle manufacturer"},"Model":{"type":"string","description":"Vehicle model"}}}]},"ServiceJobTypeEntity":{"allOf":[{"$ref":"#/components/schemas/EntityData"},{"type":"object","properties":{"Id":{"type":"string","description":"Unique identifier"},"Description":{"type":"string","description":"Job type description"}}}]},"ServiceJobTypeEntityInput":{"allOf":[{"$ref":"#/components/schemas/EntityData"},{"required":["Id","Description"],"type":"object","properties":{"Id":{"type":"string","description":"Unique identifier"},"Description":{"type":"string","description":"Job type description"}}}]},"FleetItemHireStatusEntity":{"allOf":[{"$ref":"#/components/schemas/EntityData"},{"type":"object","properties":{"Id":{"type":"string","description":"Unique identifier"},"Description":{"type":"string","description":"Hire status description"}}}]},"FleetItemHireStatusEntityInput":{"allOf":[{"$ref":"#/components/schemas/EntityData"},{"required":["Id","Description"],"type":"object","properties":{"Id":{"type":"string","description":"Unique identifier"},"Description":{"type":"string","description":"Hire status description"}}}]},"FleetCategoryEntity":{"allOf":[{"$ref":"#/components/schemas/EntityData"},{"type":"object","properties":{"Id":{"type":"string","description":"Unique identifier"},"Description":{"type":"string","description":"Category description"},"Code":{"type":"string","description":"Category code"}}}]},"FleetCategoryEntityInput":{"allOf":[{"$ref":"#/components/schemas/EntityData"},{"required":["Id","Description","Code"],"type":"object","properties":{"Id":{"type":"string","description":"Unique identifier"},"Description":{"type":"string","description":"Category description"},"Code":{"type":"string","description":"Category code"}}}]},"ServiceJobStatusEntity":{"allOf":[{"$ref":"#/components/schemas/EntityData"},{"type":"object","properties":{"Id":{"type":"string","description":"Unique identifier"},"Description":{"type":"string","description":"Job status description"}}}]},"ServiceJobStatusEntityInput":{"allOf":[{"$ref":"#/components/schemas/EntityData"},{"required":["Id","Description"],"type":"object","properties":{"Id":{"type":"string","description":"Unique identifier"},"Description":{"type":"string","description":"Job status description"}}}]},"GenericDataEntity":{"allOf":[{"$ref":"#/components/schemas/EntityData"},{"type":"object","properties":{"Column1":{"type":"string","description":"Generic data column 1"},"Column2":{"type":"string","description":"Generic data column 2"},"Column3":{"type":"string","description":"Generic data column 3"},"Column4":{"type":"string","description":"Generic data column 4"},"Column5":{"type":"string","description":"Generic data column 5"},"Column6":{"type":"string","description":"Generic data column 6"},"Column7":{"type":"string","description":"Generic data column 7"},"Column8":{"type":"string","description":"Generic data column 8"}}}]},"GenericDataEntityInput":{"allOf":[{"$ref":"#/components/schemas/EntityData"},{"type":"object","properties":{"Column1":{"type":"string","description":"Generic data column 1"},"Column2":{"type":"string","description":"Generic data column 2"},"Column3":{"type":"string","description":"Generic data column 3"},"Column4":{"type":"string","description":"Generic data column 4"},"Column5":{"type":"string","description":"Generic data column 5"},"Column6":{"type":"string","description":"Generic data column 6"},"Column7":{"type":"string","description":"Generic data column 7"},"Column8":{"type":"string","description":"Generic data column 8"}}}]},"PagedResult":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EntityData"},"description":"The list of returned items."},"continuationToken":{"type":"string","description":"Token for retrieving next page"},"hasMore":{"type":"boolean","description":"Whether more results are available"}}},"AppChangeLogRecord":{"type":"object","properties":{"id":{"type":"string","description":"Unique ID of the change log record"},"type":{"type":"string","description":"Record type (e.g., GlobalConfig)"},"correlationId":{"type":"string","description":"Correlation ID for the API request"},"_ts":{"type":"integer","description":"Timestamp of the record in Unix epoch"},"appChangeLog":{"type":"array","items":{"$ref":"#/components/schemas/ChangeLogItem"},"description":"List of changes in the app version"}}},"ChangeLogItem":{"type":"object","properties":{"id":{"type":"string","description":"Unique ID of the change item"},"type":{"type":"string","description":"Type of change (Added, Changed, Fixed, etc.)"},"description":{"type":"string","description":"Description of the change"}}}},"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":"Config","description":"Tenant configuration."},{"name":"Tenant","description":"Tenant inventory and system jobs."},{"name":"Banners","description":"In-app notification banners."},{"name":"Info","description":"Tenant information."},{"name":"Logo","description":"Tenant logos."},{"name":"Reference Data","description":"Tenant reference / entity data."},{"name":"App Information","description":"Perspio app versions and change logs."},{"name":"Billing & Consumption","description":"Invoices and consumption (platform, actions, AI)."}],"x-readme":{"oauth-options":{"useInsecureClientAuthentication":true}}}