openapi: 3.2.0 info: version: 0.48.24 termsOfService: https://www.decisiv.com/terms-of-use contact: name: Decisiv Support email: support@decisiv.com url: https://www.decisiv.com title: Service Management Service Group - Customer Assets API description: The **Decisiv SRM Gateway** `Service Management` module provides the API functionality for managing an asset's case lifecycle from a Service Providers perspective. license: name: Proprietary identifier: proprietary url: https://www.decisiv.com/terms-of-use/ servers: - url: https://srm-api.staging.decisivapps.com - url: https://srm-api.decisivapps.com security: - OAuth2AuthorizationCode: [] AccessToken: [] - OAuth2Password: [] AccessToken: [] tags: - name: Service Group - Customer Assets paths: /service_management/{srm_account_id}/v1/service_group/customer_assets: get: summary: List all Customer Assets from Service group tags: - Service Group - Customer Assets parameters: - name: srm_account_id in: path description: The account ID for SRM required: true schema: type: string - name: filter[vin] in: query required: false schema: type: string minLength: 17 maxLength: 17 description: List `customer_assets` matching the *exact* `vin` attribute. - name: filter[unit_number] in: query required: false schema: type: string description: Filter `customer_assets` matching the *exact* `unit_number` attribute. - name: filter[serial_number] in: query required: false schema: type: string minLength: 8 maxLength: 9 description: Filter `customer_assets` matching the *exact* `serial_number` attribute. - name: filter[chassis_id] in: query required: false schema: type: string maxLength: 50 description: Filter `customer_assets` matching the *exact* `chassis_id` attribute. - name: filter[customer.id] in: query required: false schema: type: string format: uuid description: Filter `customer_assets` matching the *exact* `customer.id` attribute. - name: filter[service_status] in: query required: false schema: type: string enum: - active - inactive - archived description: Filter `customer_assets` matching the *exact* `service_status` attribute. - name: filter[service_status:includes] in: query required: false schema: type: string description: List `customer_assets` whose `service_status` is in the supplied comma-separated list. Accepted values are `active`, `inactive`, `archived`. - name: filter[service_status:excludes] in: query required: false schema: type: string description: List `customer_assets` whose `service_status` is **NOT** in the supplied comma-separated list. Accepted values are `active`, `inactive`, `archived`. - name: page[number] in: query required: false schema: type: integer default: 1 minimum: 1 description: Sets the desired `page` when encountering larger result sets - name: page[size] in: query required: false schema: type: integer default: 25 minimum: 1 description: Sets the desired maximum number of results per page - name: include in: query required: false schema: type: array items: type: string enum: - customer - srm_verified_asset description: Return specified included relationships upon request responses: '200': description: Returns list of customer_assets / Returns list of Service Group Customer Asset content: application/vnd.api+json: schema: $ref: '#/components/schemas/customer_assets' examples: Returns list of customer_assets: value: data: - id: aa3e7935-bfe2-475e-9be2-80ccef5477c8 type: customer_assets attributes: vin: 3B7HF13Z11M269883 serial_number: HN991562 unit_number: NU2695 chassis_id: N-991562 make: Make model: CH613 year: 2017 service_status: active engine: make: Engine Make model: X15 displacement: 14.8L serial_number: '79412345' odometer_value: 125000 odometer_unit: mi vmrs: asset_type: code_key: '2' code: D links: source_application: https://{host}/vehicles/{id}/edit self: https://srm-api.decisivapps.com/api/service_management/{srm_account_id}/v1/customer_assets/aa3e7935-bfe2-475e-9be2-80ccef5477c8 relationships: customer: data: type: customers id: cd91f5cb-5c38-4f10-90cb-de2efad3ee82 srm_verified_asset: data: type: srm_verified_assets id: a6cfb121-5e78-4ec4-a7ea-223900c76607 Returns list of Service Group Customer Asset: value: data: - id: aa3e7935-bfe2-475e-9be2-80ccef5477c8 type: service_group_customer_assets attributes: vin: 3B7HF13Z11M269883 serial_number: HN991562 unit_number: NU2695 chassis_id: N-991562 make: Make model: CH613 year: 2017 service_status: active engine: make: Engine Make model: X15 displacement: 14.8L serial_number: '79412345' odometer_value: 125000 odometer_unit: mi vmrs: asset_type: code_key: '2' code: D links: source_application: https://{host}/vehicles/{id}/edit self: https://srm-api.decisivapps.com/api/service_management/{srm_account_id}/v1/customer_assets/aa3e7935-bfe2-475e-9be2-80ccef5477c8 relationships: customer: data: type: service_group_customers id: cd91f5cb-5c38-4f10-90cb-de2efad3ee82 srm_verified_asset: data: type: srm_verified_assets id: a6cfb121-5e78-4ec4-a7ea-223900c76607 - id: bd4f8a46-cf03-586f-acf3-91dde0cc88e0 type: service_group_customer_assets attributes: vin: 1FUJBBCK57LX12345 serial_number: HN991563 unit_number: NU2696 chassis_id: N-991563 make: Make model: CH613 year: 2018 service_status: archived engine: make: Engine Make model: X15 displacement: 14.8L serial_number: '79412345' odometer_value: 125000 odometer_unit: mi vmrs: asset_type: code_key: '2' code: D links: source_application: https://{host}/vehicles/{id}/edit self: https://srm-api.decisivapps.com/api/service_management/{srm_account_id}/v1/customer_assets/bd4f8a46-cf03-586f-acf3-91dde0cc88e0 relationships: customer: data: type: service_group_registered_customers id: de92a6dc-6d49-5021-a1dc-ef3fae4ef933 srm_verified_asset: data: type: srm_verified_assets id: b7d0c232-6f89-5fd5-b8fb-334a11d87718 '400': description: This response may occur when an invalid request has been provided to the server. The request may be corrected by the consumer and resubmitted. content: application/vnd.api+json: examples: Filter not allowed: value: errors: - title: Filter not allowed detail: '''{{filter_name}}'' is not allowed. Valid filters: {{filters_list}}' code: decisiv:filters:001 status: '400' source: parameter: filter[filter_name] Invalid filter value: value: errors: - title: Invalid filter value detail: '''{{invalid_value}}'' is not a valid value. Valid values: {{valid_values}}' code: decisiv:filters:002 status: '400' source: parameter: filter[service_status:includes] schema: $ref: '#/components/schemas/errors_response' /service_management/{srm_account_id}/v1/service_group/customer_assets/{id}: get: summary: List details on a specific Customer Asset from Service group tags: - Service Group - Customer Assets parameters: - name: srm_account_id in: path description: The account ID for SRM required: true schema: type: string - name: id in: path schema: type: string format: uuid description: The resource UUID required: true - name: include in: query required: false schema: type: array items: type: string enum: - customer - srm_verified_asset description: Return specified included relationships upon request responses: '200': description: Show details for requested Customer Asset / Show details for requested Service Group Customer Asset content: application/vnd.api+json: schema: $ref: '#/components/schemas/customer_asset_by_id' examples: Show details for requested Customer Asset: value: data: type: customer_assets id: aa3e7935-bfe2-475e-9be2-80ccef5477c8 attributes: vin: 3B7HF13Z11M269883 serial_number: HN991562 unit_number: NU2695 chassis_id: N-991562 make: Make model: CH613 year: 2017 service_status: active engine: make: Engine Make model: X15 displacement: 14.8L serial_number: '79412345' odometer_value: 125000 odometer_unit: mi vmrs: asset_type: code_key: '2' code: D relationships: customer: data: type: customers id: cd91f5cb-5c38-4f10-90cb-de2efad3ee82 srm_verified_asset: data: type: srm_verified_assets id: a6cfb121-5e78-4ec4-a7ea-223900c76607 Show details for requested Service Group Customer Asset: value: data: type: service_group_customer_assets id: aa3e7935-bfe2-475e-9be2-80ccef5477c8 attributes: vin: 3B7HF13Z11M269883 serial_number: HN991562 unit_number: NU2695 chassis_id: N-991562 make: Make model: CH613 year: 2017 service_status: active engine: make: Engine Make model: X15 displacement: 14.8L serial_number: '79412345' odometer_value: 125000 odometer_unit: mi vmrs: asset_type: code_key: '2' code: D relationships: customer: data: type: service_group_customers id: cd91f5cb-5c38-4f10-90cb-de2efad3ee82 srm_verified_asset: data: type: srm_verified_assets id: a6cfb121-5e78-4ec4-a7ea-223900c76607 '404': description: This response may occur when the requested resource is not found. content: application/vnd.api+json: example: errors: - title: Record not found detail: The requested record or one of its relationships could not be found code: '404' status: '404' schema: $ref: '#/components/schemas/errors_response' /service_management/{srm_account_id}/v1/service_group/customer_assets/{id}/create_case: post: summary: Create a case for the specific Customer Asset from Service Group tags: - Service Group - Customer Assets parameters: - name: srm_account_id in: path description: The account ID for SRM required: true schema: type: string - name: id in: path schema: type: string format: uuid description: The resource UUID required: true - name: X-DECISIV-IDEMPOTENCY-KEY in: header required: false description: 'Optional idempotency key. The first successful create_case for a given (account, key) pair is cached briefly; a repeat request with the same key replays that original response (with X-Decisiv-Idempotent-Replay: true) instead of creating a duplicate case. A concurrent request with the same in-flight key gets 409; a key longer than 128 characters gets 400.' schema: type: string maxLength: 128 responses: '201': description: Creates a Case for the specified Customer Asset headers: X-Decisiv-Idempotent-Replay: description: Present and set to 'true' when this response was replayed from a prior request with the same X-DECISIV-IDEMPOTENCY-KEY (no new case was created). schema: type: string enum: - 'true' content: application/vnd.api+json: example: data: id: 487136d2-c4d6-424c-b018-f1ed8a740c6a type: cases attributes: reference_number: 1234 created_at: null updated_at: null service_management_service_providers_id: null service_management_customer_assets_id: null service_management_customers_id: null complaint: CEL on po_number: V2479-128 auth_number: DV793957 ro_number: U2112550 cause: Diagnostic check required correction: Reset Diagnostics asset_information: null event_timestamps: followup_time: '2025-10-10T13:30:41Z' asset_uptime: '2025-04-10T13:00:41Z' asset_downtime: '2025-04-10T10:30:41Z' asset_arrived: '2025-04-10T11:30:41Z' asset_checked_in: '2025-04-10T12:30:41Z' estimated_time_to_repair: '2025-04-10T13:15:41Z' actual_time_to_repair: '2025-04-10T13:10:41Z' breakdown: location: Outside Seneca Lodge city: Watkins Glen state: NY country: US repair_status: null invoice: null vmrs: reason_for_repair: code_key: '14' code: '01' repair_priority: code_key: '16' code: '1' repair_site: code_key: '17' code: '1' tag_number: case_123 relationships: assignee: data: type: internal_users id: 6383dc89-05b6-4572-8979-a6257f3597ec driver: data: type: contacts id: 98bf9011-6dcd-4ea8-ac60-3dc6a66f77a2 primary_contact: data: type: contacts id: e3fe0737-d53c-49d1-ad35-0f5ee21c9c03 billing_contact: data: type: contacts id: bbf7dec7-83b9-413a-be5e-6bb7e74b9acf program_type: data: type: program_types id: fc8b1a9f-4705-4444-b3cc-fdaa06f5defe department: data: type: departments id: SERVICE shipping_customer: data: type: customers id: fab7f731-3191-425b-a3b7-076c9ab63f14 billing_customer: data: type: customers id: fab7f731-3312-67jn-a3b7-076c9ab63f14 customer: data: type: customers id: 9b1f3c52-7e44-4a8d-9c2f-1d6e0a2b4c8e schema: $ref: '#/components/schemas/service_group_customer_asset_create_case' '400': description: The X-DECISIV-IDEMPOTENCY-KEY header exceeds the maximum length. content: application/vnd.api+json: example: errors: - status: '400' code: decisiv:idempotency_key:002 title: Idempotency Key Length Exceeded detail: X-DECISIV-IDEMPOTENCY-KEY can not exceed 128 characters source: header: X-DECISIV-IDEMPOTENCY-KEY schema: $ref: '#/components/schemas/errors_response_with_header' '401': description: This response may occur when the access token provided within the Authorization token has expired. content: application/vnd.api+json: example: errors: - title: Access unauthorized detail: Access unauthorized code: decisiv::access_token:001 status: '401' schema: $ref: '#/components/schemas/errors_response_with_header' '403': description: This response may occur when the authenticated user embedded within the Authorization header does not have access to the requested resource. content: application/vnd.api+json: example: errors: - title: Forbidden detail: User does not have permission to perform this action on the requested resource(s) code: decisiv:access:001 status: '403' schema: $ref: '#/components/schemas/errors_response_with_header' '404': description: This response may occur when the requested resource is not found. content: application/vnd.api+json: example: errors: - status: '404' code: decisiv:resource:001 title: Resource Identifier - Not Found detail: The parent resource could not be found source: parameter: id schema: $ref: '#/components/schemas/errors_response_with_header' '409': description: A concurrent request with the same X-DECISIV-IDEMPOTENCY-KEY is already being processed. Retry to receive the original response. content: application/vnd.api+json: example: errors: - status: '409' code: decisiv:idempotency_key:001 title: Idempotency Key In Progress detail: A request with this idempotency key is already being processed. Retry to receive the original response. source: header: X-DECISIV-IDEMPOTENCY-KEY schema: $ref: '#/components/schemas/errors_response_with_header' '422': description: Unprocessable record / Attribute can't be used error / Relationship not found content: application/vnd.api+json: schema: $ref: '#/components/schemas/errors_response_with_header' examples: Unprocessable record: value: errors: - code: '422' detail: Validation Error status: '422' title: Validation Error Attribute can't be used error: value: errors: - status: '422' code: attribute-001 title: Can't be used detail: /data/attributes/attribute Department relationship not found (unknown code or feature disabled): value: errors: - status: '422' code: decisiv:request_attributes:003 title: Identifier not found detail: Identifier not found source: pointer: /data/relationships/department/data/id '429': description: This response will often be associated as a result of an over abundance of calls by a specific Application, Account, or IP Address resulting in a required cool off period. content: application/vnd.api+json: example: errors: - code: '429' detail: The maximum number of requests for this application has been far exceeded with the given credentials. status: '429' title: Too Many Requests schema: $ref: '#/components/schemas/errors_response_with_header' requestBody: content: application/vnd.api+json: schema: $ref: '#/components/schemas/service_group_customer_asset_create_case' examples: Case: value: data: type: cases attributes: complaint: CEL on po_number: V2479-128 auth_number: DV793957 ro_number: U2112550 cause: Diagnostic check required correction: Reset Diagnostics event_timestamps: followup_time: '2025-10-10T13:30:41Z' asset_uptime: '2025-04-10T13:00:41Z' asset_downtime: '2025-04-10T10:30:41Z' asset_arrived: '2025-04-10T11:30:41Z' asset_checked_in: '2025-04-10T12:30:41Z' estimated_time_to_repair: '2025-04-10T13:15:41Z' actual_time_to_repair: '2025-04-10T13:10:41Z' breakdown: location: Outside Seneca Lodge city: Watkins Glen state: NY country: US tag_number: case_123 repair_status: appointment metadata: - key: case_metadata value: Metadata for case - key: case_other_value value: '2.30' - key: case_other_integer value: '80000' - key: case_other_date value: '2025-04-10T13:28:31Z' invoice: total: 3758.5 number: TR-91324 date: '2025-04-10' vmrs: reason_for_repair: code_key: '14' code: '01' repair_priority: code_key: '16' code: '1' repair_site: code_key: '17' code: '1' relationships: assignee: data: type: internal_users id: 6383dc89-05b6-4572-8979-a6257f3597ec driver: data: type: contacts id: 98bf9011-6dcd-4ea8-ac60-3dc6a66f77a2 primary_contact: data: type: contacts id: e3fe0737-d53c-49d1-ad35-0f5ee21c9c03 billing_contact: data: type: contacts id: bbf7dec7-83b9-413a-be5e-6bb7e74b9acf program_type: data: type: program_types id: fc8b1a9f-4705-4444-b3cc-fdaa06f5defe department: data: type: departments id: SERVICE shipping_customer: data: type: customers id: fab7f731-3191-425b-a3b7-076c9ab63f14 billing_customer: data: type: customers id: fab7f731-3312-67jn-a3b7-076c9ab63f14 /service_management/{srm_account_id}/v1/service_group/customer_assets/{id}/service_history: get: summary: List Service History for the specific Customer Asset from Service Group tags: - Service Group - Customer Assets parameters: - name: srm_account_id in: path description: The account ID for SRM required: true schema: type: string - name: id in: path schema: type: string format: uuid description: The resource UUID required: true - name: filter[service_provider.id] in: query required: false schema: type: string format: uuid description: List `service histories` matching the *exact* `service_prodiver.id` attribute. - name: filter[reference_number] in: query required: false schema: type: integer description: List `service histories` matching the *exact* `reference_number` attribute. - name: filter[event_timestamps.closed_at:blank] in: query required: false schema: type: boolean description: List `service histories` matching if `closed_at` attribute is blank. - name: filter[event_timestamps.started_at:lt] in: query required: false schema: type: string format: date-time description: Timebased filter to list service histories started _less than_ a specified `ISO 8601` timestamp. - name: filter[event_timestamps.started_at:lte] in: query required: false schema: type: string format: date-time description: Timebased filter to list service histories started _less than or equal to_ a specified `ISO 8601` timestamp. - name: filter[event_timestamps.started_at:gt] in: query required: false schema: type: string format: date-time description: Timebased filter to list service histories started _greater than_ a specified `ISO 8601` timestamp. - name: filter[event_timestamps.started_at:gte] in: query required: false schema: type: string format: date-time description: Timebased filter to list service histories started _greater than or equal to_ a specified `ISO 8601` timestamp. - name: filter[event_timestamps.closed_at:lt] in: query required: false schema: type: string format: date-time description: Timebased filter to list service histories closed _less than_ a specified `ISO 8601` timestamp. - name: filter[event_timestamps.closed_at:lte] in: query required: false schema: type: string format: date-time description: Timebased filter to list service histories closed _less than or equal to_ a specified `ISO 8601` timestamp. - name: filter[event_timestamps.closed_at:gt] in: query required: false schema: type: string format: date-time description: Timebased filter to list service histories closed _greater than_ a specified `ISO 8601` timestamp. - name: filter[event_timestamps.closed_at:gte] in: query required: false schema: type: string format: date-time description: Timebased filter to list service histories closed _greater than or equal to_ a specified `ISO 8601` timestamp. - name: include in: query required: false schema: type: array items: type: string enum: - service_provider description: The relationships to be included. - name: page[number] in: query required: false schema: type: integer default: 1 minimum: 1 description: Sets the desired `page` when encountering larger result sets - name: page[size] in: query required: false schema: type: integer default: 25 minimum: 1 description: Sets the desired maximum number of results per page responses: '200': description: Show the list of Service History for requested Customer Asset from Service Group content: application/vnd.api+json: example: data: - id: 487136d2-c4d6-424c-b018-f1ed8a740c6a type: in_network_cases attributes: cause: This is the cause complaint: This is the complaint correction: This is the correction event_timestamps: closed_at: '2025-04-10T13:30:41Z' started_at: '2025-04-08T13:30:41Z' reference_number: 321098 repair_status: parts_ordered relationships: service_provider: data: type: service_providers id: 65b8d7f1-77aa-4b62-9a62-7207da98bb94 schema: $ref: '#/components/schemas/service_histories' '401': description: This response may occur when the access token provided within the Authorization token has expired. content: application/vnd.api+json: example: errors: - title: Access unauthorized detail: Access unauthorized code: decisiv::access_token:001 status: '401' schema: $ref: '#/components/schemas/errors_response' '403': description: This response may occur when the authenticated user embedded within the Authorization header does not have access to the requested resource. content: application/vnd.api+json: example: errors: - title: Forbidden detail: User does not have permission to perform this action on the requested resource(s) code: decisiv:access:001 status: '403' schema: $ref: '#/components/schemas/errors_response' '404': description: This response may occur when the requested resource is not found. content: application/vnd.api+json: example: errors: - status: '404' code: decisiv:resource:001 title: Resource Identifier - Not Found detail: The parent resource could not be found source: parameter: id schema: $ref: '#/components/schemas/errors_response' '422': description: Unprocessable record / This response may occur when the shared vehicle history is not enable to the account content: application/vnd.api+json: schema: $ref: '#/components/schemas/errors_response' examples: Unprocessable record: value: errors: - code: '422' detail: Validation Error status: '422' title: Validation Error This response may occur when the shared vehicle history is not enable to the account: value: errors: - status: '422' code: '422' title: Unprocessable record detail: Shared vehicle history is not enabled for this dealer. components: schemas: service_group_customer_asset_create_case: type: object properties: data: type: object properties: type: type: string enum: - cases attributes: type: object properties: auth_number: type: string description: The Authorization number maxLength: 40 po_number: type: string description: The Purchase Order number maxLength: 40 ro_number: type: string description: The Repair Order number maxLength: 40 complaint: type: string description: Initially reported information from driver or other customer entity maxLength: 6000 cause: type: string description: Documentation of the technical failure assessed by the Service Location maxLength: 6000 correction: type: string description: Summary of the actual work accomplished to address the reported issue maxLength: 6000 repair_status: type: string description: ID of the repair status from `GET /service_management/{srm_account_id}/v1/repair_statuses.` example: asset_ready metadata: type: array description: Metadata about the case minItems: 1 maxItems: 50 items: type: object properties: key: type: string description: Metadata key has to start and end with a letter or number, be lower snake case minLength: 1 maxLength: 50 pattern: ^[a-z0-9]+(_{1}[a-z0-9]+)*$ example: some_key value: type: string description: The metadata value must be a string with 500 characters or less minLength: 1 maxLength: 500 example: The value goes here invoice: type: object description: Invoice details properties: total: type: number description: Total amount for the invoice example: 432.5 maximum: 999999.99 number: type: string description: Number of the invoice example: TR3847 maxLength: 255 date: type: string format: date description: Date of the invoice in `ISO 8601` format example: '2025-06-19' tag_number: type: string description: 'Tag #, sometimes called Repair Tag, or Key Tag, is a tag that is attached to the truck keys when a truck is dropped off, so shop personnel can easily find the keys on a tag board and know which case/RO that set of keys/truck belonged to.' maxLength: 40 event_timestamps: type: object description: Timestamp attributes relfecting key events surround the case properties: followup_time: type: string format: date-time description: '`ISO 8601` timestamp indicating the next check-in point between Customer / Provider' example: '2025-10-10T13:30:41Z' asset_uptime: type: string format: date-time description: '`ISO 8601` timestamp indicating when the Asset became operational, once again' example: '2025-04-10T13:00:41Z' asset_downtime: type: string format: date-time description: '`ISO 8601` timestamp indicating when the Asset was considered no longer operational' example: '2025-04-10T10:30:41Z' asset_arrived: type: string format: date-time description: '`ISO 8601` timestamp indicating when the Asset arrived' example: '2025-04-10T11:30:41Z' asset_checked_in: type: string format: date-time description: '`ISO 8601` timestamp indicating when the check-in was performed' example: '2025-04-10T12:30:41Z' estimated_time_to_repair: type: string format: date-time description: '`ISO 8601` timestamp indicating the time estimated to repair the asset' example: '2025-04-10T13:15:41Z' actual_time_to_repair: type: string format: date-time description: '`ISO 8601` timestamp indicating the time spent to repair the asset' example: '2025-04-10T13:10:41Z' breakdown: type: object description: Information about the location of the Service Provider properties: location: type: string description: Location field accepts City and/or State (eg. Newark or Newark, NJ to be unambiguous) or GPS coordinates (eg. 37.50, -77.33). maxLength: 255 city: type: string description: Breakdown City name maxLength: 255 state: type: string description: Second part of the `ISO 3166-2` code indicating the breakdown State minLength: 1 maxLength: 3 example: NJ country: type: string description: '`ISO 3166-1` alpha-2 code indicating the breakdown Country' minLength: 2 maxLength: 2 example: US vmrs: type: object description: Case-level VMRS codes. Each code is provided as a `{ code_key, code }` object, consistent with `vmrs.asset_type`. properties: reason_for_repair: type: object description: VMRS Code Key 14 — identifies what caused the asset to come in for repair properties: code_key: type: string description: The VMRS code key identifier example: '14' code: type: string description: A valid VMRS Code Key 14 value example: '01' repair_priority: type: object description: VMRS Code Key 16 — priority assigned to the repair properties: code_key: type: string description: The VMRS code key identifier example: '16' code: type: string description: A valid VMRS Code Key 16 value example: '1' repair_site: type: object description: VMRS Code Key 17 — relative location where the repair takes place properties: code_key: type: string description: The VMRS code key identifier example: '17' code: type: string description: A valid VMRS Code Key 17 value example: '1' relationships: type: object properties: assignee: $ref: '#/components/schemas/relationship_object' driver: $ref: '#/components/schemas/relationship_object' primary_contact: $ref: '#/components/schemas/relationship_object' billing_contact: $ref: '#/components/schemas/relationship_object' program_type: $ref: '#/components/schemas/relationship_object' department: allOf: - $ref: '#/components/schemas/relationship_object' - description: 'Optional. Note: `department.data.id` is a dealer-scoped string code (e.g. "SERVICE"), not a UUID. The code must belong to the account and the `Departments` feature must be enabled for the account; otherwise the request fails with a 422 `Identifier not found` error.' shipping_customer: $ref: '#/components/schemas/relationship_object' billing_customer: $ref: '#/components/schemas/relationship_object' customer: type: object readOnly: true description: The case's primary customer (response only; derived from the asset, not settable on create). `data.type` is `customers` / `registered_customers`, or the `service_group_`-prefixed variant in a service group context. required: - data properties: data: type: - object - 'null' required: - id - type properties: id: type: string type: type: string enum: - customers - registered_customers - service_group_customers - service_group_registered_customers required: - type - attributes required: - data customer_asset_by_id: example: data: type: customer_assets id: aa3e7935-bfe2-475e-9be2-80ccef5477c8 attributes: vin: 3B7HF13Z11M269883 serial_number: HN991562 unit_number: NU2695 chassis_id: N-991562 make: Make model: CH613 year: 2017 service_status: active engine: make: Engine Make vmrs: asset_type: code_key: '2' code: D relationships: customer: data: type: customers id: cd91f5cb-5c38-4f10-90cb-de2efad3ee82 srm_verified_asset: data: type: srm_verified_assets id: a6cfb121-5e78-4ec4-a7ea-223900c76607 type: object properties: data: type: object properties: id: type: string format: uuid type: type: string enum: - customer_assets - service_group_customer_assets attributes: type: object properties: vin: type: string description: 17 digit vehicle identification number minLength: 17 maxLength: 17 serial_number: type: string description: Production number of the asset minLength: 8 maxLength: 9 chassis_id: type: string description: Unique identifier consisting of a letter (chassis series) and six digits (chassis number) maxLength: 50 unit_number: type: string description: Identification number commonly used on assets residing within a fleet make: type: string description: Brand of the asset maxLength: 100 model: type: string description: Name of the asset product from the manufacturer maxLength: 100 year: type: integer description: 'Calendar year the asset model was released, minimum: 1970, maximum: two years from now' service_status: type: string description: "Current service eligibility for this customer asset.\n\n- `active` — service relationship is currently in force between\n the Service Provider account and the customer on the asset.\n- `inactive` — no longer the current association; superseded by\n a newer record for the same asset, but remains serviceable.\n Creating a case against it flips the asset back to `active`.\n- `archived` — the underlying registered asset has been\n deactivated by its Registered Asset Management account holder;\n the asset is reference-only and cannot be used to create new\n cases.\n" enum: - active - inactive - archived engine: type: object properties: make: type: - string - 'null' vmrs: type: object description: VMRS classification of the asset properties: asset_type: type: object description: VMRS Code Key 2 (Equipment Category) properties: code_key: type: string description: The VMRS code key identifier example: '2' code: type: string description: The VMRS code value for the equipment category (e.g. 'D', '1', 'R') required: - service_status relationships: type: object properties: customer: type: object required: - data properties: data: type: - object - 'null' required: - id - type properties: id: type: string type: type: string enum: - customers - registered_customers - service_group_customers - service_group_registered_customers srm_verified_asset: description: When present, indicates this asset's identity has been verified against a manufacturer-sourced canonical record. The associated YMMI (Year, Make, Model, and Identifier) values are OEM-authoritative and supersede any locally stored asset attributes. $ref: '#/components/schemas/relationship_object' required: - customer links: type: object properties: self: type: string source_application: type: string required: - attributes - relationships - type - id required: - data error_response: type: object properties: status: type: string title: type: string detail: type: - string - 'null' code: type: - string - 'null' source: type: object properties: parameter: type: - string - 'null' pointer: type: - string - 'null' links: type: object description: Links related to this error (e.g. documentation reference). additionalProperties: type: string format: uri required: - status - title customer_asset_properties-data: type: object properties: id: type: string format: uuid type: type: string enum: - customer_assets - service_group_customer_assets attributes: type: object properties: vin: type: string description: 17 digit vehicle identification number minLength: 17 maxLength: 17 serial_number: type: string description: Production number of the asset minLength: 8 maxLength: 9 chassis_id: type: string description: Unique identifier consisting of a letter (chassis series) and six digits (chassis number) maxLength: 50 example: N-991562 unit_number: type: string description: Identification number commonly used on assets residing within a fleet make: type: string description: Brand of the asset maxLength: 100 model: type: string description: Name of the asset product from the manufacturer maxLength: 100 year: type: integer description: 'Calendar year the asset model was released, minimum: 1970, maximum: two years from now' service_status: type: string description: "Current service eligibility for this customer asset.\n\n- `active` — service relationship is currently in force between\n the Service Provider account and the customer on the asset.\n- `inactive` — no longer the current association; superseded by\n a newer record for the same asset, but remains serviceable.\n Creating a case against it flips the asset back to `active`.\n- `archived` — the underlying registered asset has been\n deactivated by its Registered Asset Management account holder;\n the asset is reference-only and cannot be used to create new\n cases.\n" enum: - active - inactive - archived engine: type: object description: Engine data properties: make: type: - string - 'null' maxLength: 255 description: The make of the engine example: Cummins model: type: - string - 'null' maxLength: 100 description: The model of the engine example: X15 displacement: type: - string - 'null' maxLength: 100 description: The engine size related in liters or cubic inches example: 14.8L serial_number: type: - string - 'null' maxLength: 40 description: The engine serial number example: '79412345' odometer_value: type: - number - 'null' description: Integer representation about the asset odometer example: 125000 odometer_unit: type: - string - 'null' description: ' The unit of measure for odometer value represented in standard or metric (mi = Miles or km = Kilometers)' enum: - mi - km example: mi vmrs: type: object description: VMRS classification of the asset. properties: asset_type: type: object description: VMRS Code Key 2 (Equipment Category). properties: code_key: type: string description: The VMRS code key identifier. Must be `"2"` when supplied on write. example: '2' code: type: string description: The VMRS Code Key 2 code (e.g. `"D"`, `"1"`, `"R"`). Must match an active value from `GET /vmrs/asset_types`. required: - service_status relationships: type: object properties: customer: type: object required: - data properties: data: type: - object - 'null' required: - id - type properties: id: type: string type: type: string enum: - customers - registered_customers - service_group_customers - service_group_registered_customers srm_verified_asset: $ref: '#/components/schemas/relationship_object' required: - customer links: type: object properties: self: type: string source_application: type: string required: - attributes - relationships - type - id service_provider: type: object required: - data properties: data: type: object properties: id: type: string format: uuid type: type: string enum: - service_providers attributes: type: object properties: name: type: string address1: type: string address2: type: string city: type: string state: type: string postal_code: type: string country: type: string email: type: string format: email phone: type: string fax: type: string location: type: object properties: latitude: type: number longitude: type: number distance_from_geolocation: type: number description: Present only when filtering by `geolocation.point`. relationships: type: object properties: service_networks: $ref: '#/components/schemas/relationship_objects' required: - attributes - type - id errors_response_with_header: type: object properties: errors: type: array items: $ref: '#/components/schemas/error_response_with_header' required: - errors customer_assets: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/customer_asset_properties-data' meta: type: object error_response_with_header: type: object properties: status: type: string title: type: string detail: type: - string - 'null' code: type: - string - 'null' source: type: object properties: parameter: type: - string - 'null' pointer: type: - string - 'null' header: type: - string - 'null' description: The request header the error refers to (e.g. X-DECISIV-IDEMPOTENCY-KEY). links: type: object description: Links related to this error (e.g. documentation reference). additionalProperties: type: string format: uri required: - status - title relationship_objects: type: object properties: data: type: array items: type: - object - 'null' properties: id: type: string type: type: string required: - id - type required: - data service_history: type: object required: - data properties: data: type: object properties: id: type: string format: uuid type: type: string enum: - in_network_cases attributes: type: object properties: reference_number: type: integer description: Integer representation of the Case ID inside of the User Interface complaint: type: string description: Initially reported information from driver or other customer entity maxLength: 6000 cause: type: string description: Documentation of the technical failure assessed by the Service Location correction: type: string description: Summary of the actual work accomplished to address the reported issue repair_status: type: string description: Name of the repair status event_timestamps: type: object description: Timestamp attributes relfecting key events surround the case properties: closed_at: type: string format: date-time description: '`ISO 8601` timestamp indicating when the Case was marked as completed and closed' example: '2025-06-19T12:41:31Z' started_at: type: string format: date-time description: '`ISO 8601` timestamp indicating when the Case was first opened' example: '2025-06-19T11:11:31Z' relationships: type: object properties: service_provider: $ref: '#/components/schemas/relationship_object' required: - attributes - type - id relationship_object: type: object properties: data: type: - object - 'null' properties: id: type: string type: type: string required: - id - type required: - data errors_response: type: object properties: errors: type: array items: $ref: '#/components/schemas/error_response' required: - errors service_histories: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/service_history' meta: type: object included: type: array items: anyOf: - $ref: '#/components/schemas/service_provider' securitySchemes: AccessToken: type: http scheme: bearer bearerFormat: JWT OAuth2AuthorizationCode: type: oauth2 description: OAuth 2.0 Authorization Code flow. This is the required flow for new integrations. See https://api-docs.decisiv.net/docs/api/oauth/ flows: authorizationCode: authorizationUrl: https://login.decisiv.net/auth/api_gateway tokenUrl: https://login.decisiv.net/oauth/token refreshUrl: https://login.decisiv.net/oauth/token scopes: {} OAuth2Password: type: oauth2 description: '**Deprecated.** OAuth 2.0 Password flow. New integrations must use the Authorization Code flow (`OAuth2AuthorizationCode`); this flow remains available only during the migration window and will be removed in a future release. See https://api-docs.decisiv.net/docs/api/oauth/' flows: password: tokenUrl: https://login.decisiv.net/oauth/token scopes: {}