Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/decisiv-line-items-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
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 Line Items 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: Line Items
paths:
/service_management/{srm_account_id}/v1/line_items:
get:
summary: List line items across the account
operationId: listLineItems
description: 'Returns line items for the authenticated account, sourced directly from EstimateItem rather than a single case. Soft-deleted items are excluded.
This collection can be large, so it is always paginated and the response does not compute a total `record-count` (the `meta.record-count` value is `null`); use `page[number]`/`page[size]` to traverse results.
'
tags:
- Line Items
parameters:
- name: srm_account_id
in: path
description: The account ID for SRM
required: true
schema:
type: string
- name: filter[case.id]
in: query
required: false
schema:
type: string
format: uuid
description: 'Restrict to a single case (estimate) UUID. Returns the same set as the nested `GET /cases/{case_id}/line_items` endpoint for that case.
'
- name: filter[assignee.id]
in: query
required: false
schema:
type: string
description: 'Restrict to line items assigned to the given internal user id(s). Accepts a comma-separated list. Equivalent to `filter[assignee.id:includes]`.
'
- name: filter[assignee.id:includes]
in: query
required: false
schema:
type: string
description: Comma-separated internal user id(s); returns items assigned to any of them.
- name: filter[assignee.id:excludes]
in: query
required: false
schema:
type: string
description: 'Comma-separated internal user id(s); returns items NOT assigned to any of them. Unassigned items are excluded (SQL `NOT IN` semantics, mirroring the case-level assignee filter).
'
- name: include
in: query
required: false
schema:
type: array
items:
type: string
enum:
- parts
- technician_stories
- assignee
- case
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: Returns the account's line items
content:
application/vnd.api+json:
example:
data:
- id: ba889598-5f26-4481-90f7-2c172d42ca5f
type: line_items
attributes:
complaint: CEL on
cause: Diagnostic check required
correction: Reset Diagnostics
opcode: T3789-0-04
price_code: SR37TYP
name: Air Dryer Cartridge, Replacement
description: All Engines All Years All Models All Makes for Air Dryer Cartridge, Replacement, Description
labor:
time: 2
skill_level: A
pricing:
estimated_total: '300.00'
fixed_total: null
labor:
estimated_total: '140.00'
fixed_total: null
parts:
estimated_total: '140.00'
core_price:
estimated_total: '20.00'
additional_charges:
estimated_total: '450.0'
paint:
time: 1.5
rate: 95
total: 142.5
skill_level: P1
billing_classification: warranty
under_warranty: true
approval_group_tag: GROUP-A
work_status:
code: start
reason: awaiting_parts
timestamp: '2026-06-22T14:30:00Z'
set_by_user:
id: 6383dc89-05b6-4572-8979-a6257f3597ec
name: Jordan Tech
approval_status:
name: approved
reason: labor_cost
reason_description: Approved after review
reviewed_by:
id: 6383dc89-05b6-4572-8979-a6257f3597ec
name: Pat Reviewer
reviewed_at: '2026-06-22T15:00:00Z'
internal_label: approved
relationships:
parts:
data:
- type: line_item_parts
id: 167f089e-339d-4d05-b175-9b10206c3cbf
technician_stories:
data:
- type: technician_stories
id: b2610b45-a2e1-4abf-ad21-7f820bca4923
assignee:
data:
type: internal_users
id: 6383dc89-05b6-4572-8979-a6257f3597ec
case:
data:
type: cases
id: 9f0e9d3a-3b2a-4f6c-9c7e-2b1a0e5d6c7f
meta:
record-count: null
schema:
$ref: '#/components/schemas/line_items'
'400':
description: Invalid request (e.g. unknown filter).
content:
application/vnd.api+json:
example:
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]
schema:
$ref: '#/components/schemas/errors_response'
'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'
'422':
description: A filter value failed validation (e.g. malformed `case.id`).
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/errors_response'
examples:
Invalid case id:
value:
errors:
- status: '422'
code: decisiv:request_attributes:010
title: Invalid Attribute Value
detail: Invalid uuid value provided
source:
parameter: filter[case.id]
'504':
description: This response may occur when there is an unexpected system timeout.
content:
application/vnd.api+json:
example:
errors:
- code: '504'
detail: Gateway timeout error
status: '504'
title: Gateway timeout error
schema:
$ref: '#/components/schemas/errors_response'
/service_management/{srm_account_id}/v1/line_items/{id}:
get:
summary: Retrieve a single line item by id
operationId: getLineItem
description: 'Retrieve a single line item scoped to the authenticated account, without needing to know its case.
'
tags:
- Line Items
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 line item UUID
required: true
- name: include
in: query
required: false
schema:
type: array
items:
type: string
enum:
- parts
- technician_stories
- assignee
- case
description: The relationships to be included.
responses:
'200':
description: Show details for the requested line item
content:
application/vnd.api+json:
example:
data:
id: ba889598-5f26-4481-90f7-2c172d42ca5f
type: line_items
attributes:
complaint: CEL on
cause: Diagnostic check required
correction: Reset Diagnostics
opcode: T3789-0-04
price_code: SR37TYP
name: Air Dryer Cartridge, Replacement
description: All Engines All Years All Models All Makes for Air Dryer Cartridge, Replacement, Description
labor:
time: 2
skill_level: A
billing_classification: warranty
under_warranty: true
approval_group_tag: GROUP-A
internal_label: approved
relationships:
parts:
data:
- type: line_item_parts
id: 167f089e-339d-4d05-b175-9b10206c3cbf
case:
data:
type: cases
id: 9f0e9d3a-3b2a-4f6c-9c7e-2b1a0e5d6c7f
schema:
$ref: '#/components/schemas/line_item'
'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 (or belongs to another account).
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'
'504':
description: This response may occur when there is an unexpected system timeout.
content:
application/vnd.api+json:
example:
errors:
- code: '504'
detail: Gateway timeout error
status: '504'
title: Gateway timeout error
schema:
$ref: '#/components/schemas/errors_response'
components:
schemas:
line_items:
type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/line_item_properties-data'
meta:
type: object
properties:
record-count:
type:
- integer
- 'null'
description: Total count across all pages. An integer on the case-nested collection; null on the account-wide `GET /line_items` collection, which omits the count for performance.
line_item:
type: object
required:
- data
properties:
data:
type: object
description: 'A line_item represents a single operation (complaint/cause/correction) on the case.
'
properties:
id:
type: string
format: uuid
type:
type: string
enum:
- line_items
attributes:
type: object
properties:
complaint:
type:
- string
- 'null'
description: Customer-reported issue that originated the operation.
maxLength: 6000
cause:
type:
- string
- 'null'
description: Diagnosed cause of the issue.
maxLength: 6000
correction:
type:
- string
- 'null'
description: Repair action performed (or to be performed) to address the cause.
maxLength: 6000
internal_label:
type:
- string
- 'null'
description: Workflow status of the line item. Values are configurable per account — see `GET /line_item_internal_labels` for the accepted values. `none` is always accepted and represents "no label".
maxLength: 255
example: approved
description:
type:
- string
- 'null'
description: Free-form notes on the operation, distinct from `complaint` / `cause` / `correction`.
maxLength: 6000
price_code:
type:
- string
- 'null'
description: Dealer-defined identifier of a pricing tier used to look up custom labor and parts rates for the line item.
maxLength: 255
approval_group_tag:
type:
- string
- 'null'
description: Free-form tag used to group line items together for approval workflows.
maxLength: 255
example: GROUP-A
billing_classification:
type:
- string
- 'null'
description: How the operation is billed, derived from the operation type. `billable` is the default (no special operation type); the remaining values indicate the operation is not directly billed to the customer.
enum:
- billable
- warranty
- policy
- campaign
- recall
example: billable
under_warranty:
type: boolean
description: Whether the operation is classified as warranty work (a convenience flag derived from `billing_classification` / the operation type).
example: false
labor:
type: object
description: Labor inputs for the operation — estimated hours (`time`) and the technician tier (`skill_level`) whose rate drives the calculated labor price in `pricing.labor`.
properties:
time:
type:
- number
- 'null'
description: Labor hours required for the operation.
example: 2
skill_level:
type:
- string
- 'null'
description: Labor skill level applied to the operation. Values are configurable per account — see `GET /skill_levels` for the accepted values.
example: C
paint:
type: object
description: Paint inputs for the operation — estimated hours (`time`), hourly `rate`, calculated `total`, and the technician tier (`skill_level`).
properties:
time:
type:
- number
- 'null'
description: Paint hours required for the operation.
example: 1.5
rate:
type:
- number
- 'null'
description: Hourly paint labor rate applied to the operation.
example: 95
total:
type:
- number
- 'null'
description: Calculated paint total (time × rate).
example: 142.5
skill_level:
type:
- string
- 'null'
description: Paint skill level applied to the operation.
example: P1
name:
type:
- string
- 'null'
description: Human-readable name of the operation performed (e.g. `Air Dryer Cartridge, Replacement`), distinct from `opcode` which is the short identifier.
maxLength: 510
example: Air Dryer Cartridge, Replacement
opcode:
type: string
description: Short identifier for the operation (e.g. `T3789-0-04`), drawn from the operation catalog or set on a custom operation. The serializer falls back through DMS-mapped opcode, source-system opcode, then the catalog opcode.
maxLength: 255
example: T3789-0-04
work_status:
type:
- object
- 'null'
description: The current work-status transition for the line item (its most recent status history record). Null when the operation has no work status yet.
properties:
code:
type: string
description: The work-status transition code.
enum:
- start
- stop
- complete
- reopen
example: start
reason:
type:
- string
- 'null'
description: Standardized reason for the transition (primarily for `stop`). Null when the transition has no reason.
enum:
- break
- meal
- shift_change
- reassigned
- sick
- injured
- awaiting_approval
- awaiting_parts
- awaiting_tools
- awaiting_tech_support
- user_defined_1
- user_defined_2
- user_defined_3
- user_defined_4
- null
example: awaiting_parts
timestamp:
type:
- string
- 'null'
format: date-time
description: When the transition occurred (ISO 8601).
set_by_user:
type:
- object
- 'null'
description: The user the work status is attributed to.
properties:
id:
type:
- string
- 'null'
description: The user's identifier.
name:
type:
- string
- 'null'
description: The user's full name.
approval_status:
type:
- object
- 'null'
description: The metadata-backed approval status for the line item. Null when no approval has been recorded.
properties:
name:
type: string
description: The approval status.
enum:
- requested
- approved
- declined
- deferred
example: approved
reason:
type:
- string
- 'null'
description: Reason associated with the approval decision.
reason_description:
type:
- string
- 'null'
description: Free-form description of the approval reason.
reviewed_by:
type:
- object
- 'null'
description: The user who set the approval status.
properties:
id:
type:
- string
- 'null'
description: The reviewing user's identifier.
name:
type:
- string
- 'null'
description: The reviewing user's full name.
reviewed_at:
type:
- string
- 'null'
format: date-time
description: When the approval status was last updated (ISO 8601).
pricing:
type: object
description: Server-computed pricing breakdown — top-level totals plus per-category sub-totals for `labor`, `parts`, `core_price`, and `additional_charges`. The top-level object and `labor` expose `fixed_total` for flat-rate operations; the other sub-totals expose `estimated_total` only.
properties:
estimated_total:
type:
- string
- 'null'
format: decimal
description: Estimated total for the line item, dynamically calculated from labor time, parts, and additional charges. Null when the line item is fixed-price.
example: '330.00'
fixed_total:
type:
- string
- 'null'
format: decimal
description: Fixed total for the line item — a flat-rate price tied to a fixed-price opcode, not dynamically calculated. Null when the line item is estimated.
example: '425.00'
labor:
type: object
properties:
estimated_total:
type:
- string
- 'null'
format: decimal
description: Estimated labor price, calculated from labor time. Null when labor is fixed-price.
example: '140.00'
fixed_total:
type:
- string
- 'null'
format: decimal
description: Fixed labor price for fixed-price labor, not dynamically calculated. Null when labor is estimated.
example: '180.00'
parts:
type: object
properties:
estimated_total:
type: string
format: decimal
description: Estimated total for parts, calculated from the parts list.
example: '140.00'
additional_charges:
type: object
properties:
estimated_total:
type: string
format: decimal
description: Sum of additional charges on the line item.
example: '50.00'
core_price:
type: object
properties:
estimated_total:
type: string
format: decimal
description: Estimated total for core charges on the parts list.
vmrs:
type: object
description: 'Vehicle Maintenance Reporting Standards (VMRS) coding for the line item, exposing six VMRS code categories: reason for repair (CK14), operator report (CK82), component code (CK33), position (CK79), technician failure (CK18), and work accomplished (CK15). Each section is null when no code of that category is assigned.'
properties:
reason_for_repair:
type:
- object
- 'null'
description: Identifies what caused an asset to come in for repair
properties:
code_key:
type: string
description: VMRS code key — the category bucket within the ATA Vehicle Maintenance Reporting Standards (e.g. `14` Reason for Repair, `33` Component, `15` Work Accomplished).
example: '14'
code:
type: string
description: The VMRS code value selected within the parent `code_key`; meaning is scoped to that category.
example: '01'
operator_report:
type:
- array
- 'null'
description: Identifies what the operator reports as being the issue
items:
type: object
properties:
code_key:
type: string
description: VMRS code key — the category bucket within the ATA Vehicle Maintenance Reporting Standards (e.g. `14` Reason for Repair, `33` Component, `15` Work Accomplished).
example: '82'
code:
type: string
description: The VMRS code value selected within the parent `code_key`; meaning is scoped to that category.
example: '001'
component:
type:
- object
- 'null'
description: Provides universal identifiers or generic terms for parts
properties:
code_key:
type: string
description: VMRS code key — the category bucket within the ATA Vehicle Maintenance Reporting Standards (e.g. `14` Reason for Repair, `33` Component, `15` Work Accomplished).
example: '33'
code:
type: string
description: The VMRS code value selected within the parent `code_key`; meaning is scoped to that category.
example: 023-000-000
position:
type:
- object
- 'null'
description: Identifies position based on industry-accepted conventions
properties:
code_key:
type: string
description: VMRS code key — the category bucket within the ATA Vehicle Maintenance Reporting Standards (e.g. `14` Reason for Repair, `33` Component, `15` Work Accomplished).
example: '79'
code:
type: string
description: The VMRS code value selected within the parent `code_key`; meaning is scoped to that category.
example: '03'
technician_failure:
type:
- object
- 'null'
description: Identifies the technical failure diagnosed by the technician
properties:
code_key:
type: string
description: VMRS code key — the category bucket within the ATA Vehicle Maintenance Reporting Standards (e.g. `14` Reason for Repair, `33` Component, `15` Work Accomplished).
example: '18'
code:
type: string
description: The VMRS code value selected within the parent `code_key`; meaning is scoped to that category.
example: B1
work_accomplished:
type:
- object
- 'null'
description: Identifies the repair action the technician performed
properties:
code_key:
type: string
description: VMRS code key — the category bucket within the ATA Vehicle Maintenance Reporting Standards (e.g. `14` Reason for Repair, `33` Component, `15` Work Accomplished).
example: '15'
code:
# --- truncated at 32 KB (53 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/decisiv/refs/heads/main/openapi/decisiv-line-items-api-openapi.yml