tread.io Invoices API
The Invoices API from tread.io — 18 operation(s) for invoices.
The Invoices API from tread.io — 18 operation(s) for invoices.
openapi: 3.0.3
info:
title: Horizon API V1 AccountExternalTruckIdentifier Invoices API
version: '1.0'
contact:
name: Tread
url: https://tread.io
email: developers@tread.io
description: 'This is the Version 1 implementation.
When in doubt we default to the practices outlined [here](https://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api#advanced-queries)'
license:
name: Private
url: https://tread.io
servers:
- description: production
url: https://api.tread-horizon.com
security:
- bearerAuth: []
tags:
- name: Invoices
paths:
/v1/companies/{company-id}/invoices:
parameters:
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve Invoices that belong to a Company
tags:
- Invoices
responses:
'200':
description: OK
headers:
Link:
schema:
type: string
description: Contains prev and next links for pagination
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: array
x-stoplight:
id: a57zqne4bafxo
items:
$ref: '#/components/schemas/Invoice-Read'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
operationId: get-v1-companies-company-id-invoices
x-stoplight:
id: om8gtws0w98k5
description: Retrieve `Invoices` that visible to a `Company`
parameters:
- $ref: '#/components/parameters/filter-start_date'
- $ref: '#/components/parameters/filter-end_date'
- $ref: '#/components/parameters/filter-states'
- $ref: '#/components/parameters/page-limit'
- $ref: '#/components/parameters/page-before'
- $ref: '#/components/parameters/page-after'
- $ref: '#/components/parameters/filter-invoice_category'
- $ref: '#/components/parameters/filter-grouped'
- $ref: '#/components/parameters/filter-customer_account_ids'
- $ref: '#/components/parameters/filter-vendor_account_ids'
- $ref: '#/components/parameters/filter-pickup_site_ids'
- $ref: '#/components/parameters/filter-dropoff_site_ids'
- $ref: '#/components/parameters/filter-project_ids'
- $ref: '#/components/parameters/filter-rate_types'
- $ref: '#/components/parameters/filter-invoiceable_type'
- $ref: '#/components/parameters/filter-driver_ids'
- $ref: '#/components/parameters/filter-company_id'
- $ref: '#/components/parameters/search-datagrid'
/v1/companies/{company-id}/invoices/{id}:
parameters:
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- schema:
type: string
format: uuid
name: id
in: path
required: true
description: Invoice ID
- $ref: '#/components/parameters/Accept-Language'
patch:
summary: Update an Invoice for a Company
tags:
- Invoices
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Invoice-Read'
'400':
$ref: '#/components/responses/Error'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'403':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'415':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
operationId: patch-v1-companies-company-id-invoices-id
x-stoplight:
id: 2b1dd57r20hz1-company
x-internal: true
description: 'Update an `Invoice` by ID for a `Company`
This endpoint requires the `edit_invoice` permission'
requestBody:
content:
application/json:
schema:
type: object
$ref: '#/components/schemas/Invoice-Update'
/v1/companies/{company-id}/invoices/{invoice-id}/approve:
parameters:
- schema:
type: string
format: uuid
name: invoice-id
in: path
required: true
description: Invoice ID
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- $ref: '#/components/parameters/Accept-Language'
put:
summary: Approve an Invoice for a Company
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Invoice-Read'
'400':
$ref: '#/components/responses/Error'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'403':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'409':
$ref: '#/components/responses/StateError'
operationId: put-v1-companies-company-id-invoices-invoice-id-approve
x-stoplight:
id: f2s2vpepyhb23
description: Approve an `Invoice` for a `Company` by ID
tags:
- Invoices
x-internal: true
/v1/companies/{company-id}/invoices/{invoice-id}/customer_approve:
parameters:
- schema:
type: string
format: uuid
name: invoice-id
in: path
required: true
description: Invoice ID
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- $ref: '#/components/parameters/Accept-Language'
put:
summary: Approve the Invoice as the Customer for a Company
tags:
- Invoices
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Invoice-Read'
'400':
$ref: '#/components/responses/Error'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'403':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'409':
$ref: '#/components/responses/StateError'
'415':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
operationId: put-v1-companies-company-id-invoices-invoice-id-customer_approve
x-stoplight:
id: wr2d9e96wxxhp
x-internal: true
description: Approve the `Invoice` as the `Customer` for a `Company` by ID
requestBody:
content:
application/json:
schema:
type: object
properties: {}
/v1/companies/{company-id}/invoices/{invoice-id}/customer_pay:
parameters:
- schema:
type: string
format: uuid
name: invoice-id
in: path
required: true
description: Invoice ID
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- $ref: '#/components/parameters/Accept-Language'
put:
summary: Pay the Invoice as the Customer for a Company
tags:
- Invoices
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Invoice-Read'
'400':
$ref: '#/components/responses/Error'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'403':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'409':
$ref: '#/components/responses/StateError'
'415':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
operationId: put-v1-companies-company-id-invoices-invoice-id-customer_pay
x-internal: true
description: Pay the `Invoice` as the `Customer` for a `Company` by ID
requestBody:
content:
application/json:
schema:
type: object
properties: {}
/v1/companies/{company-id}/invoices/{invoice-id}/export:
parameters:
- schema:
type: string
format: uuid
name: invoice-id
in: path
required: true
description: Invoice ID
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- $ref: '#/components/parameters/Accept-Language'
put:
summary: Export an Invoice for a Company
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Invoice-Read'
'400':
$ref: '#/components/responses/Error'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'403':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'409':
$ref: '#/components/responses/StateError'
'415':
$ref: '#/components/responses/Error'
operationId: put-v1-companies-company-id-invoices-invoice-id-export
description: Export an `Invoice` for a `Company` by ID
tags:
- Invoices
x-internal: true
requestBody:
content:
application/json:
schema:
type: object
properties: {}
/v1/companies/{company-id}/invoices/{invoice-id}/invoice_line_items:
parameters:
- schema:
type: string
format: uuid
name: invoice-id
in: path
required: true
description: Invoice ID
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve all InvoiceLineItems that belongs to an Invoice for a Company
responses:
'200':
description: OK
headers:
Link:
schema:
type: string
description: Contains prev and next links for pagination
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/InvoiceLineItem-Read'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
operationId: get-v1-companies-company-id-invoices-invoice-id-invoice_line_items
description: Retrieve all `InvoiceLineItem` for an `Invoice` for a `Company`
parameters:
- $ref: '#/components/parameters/page-limit'
- $ref: '#/components/parameters/page-after'
- $ref: '#/components/parameters/page-before'
x-internal: true
tags:
- Invoices
patch:
summary: Batch update InvoiceLineItems for an Invoice for a Company
responses:
'200':
description: OK
headers:
Link:
schema:
type: string
description: Contains prev and next links for pagination
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: array
x-stoplight:
id: d9v9xort2c4gg-company
items:
$ref: '#/components/schemas/InvoiceLineItem-Read'
'400':
$ref: '#/components/responses/Error'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'403':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'415':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
operationId: patch-v1-companies-company-id-invoices-invoice-id-invoice_line_items
x-stoplight:
id: 0qb21d1yd9jv2-company
description: "Batch update `InvoiceLineItems` for an `Invoice` for a `Company`.\n\nThis endpoint allows updating, creating, deleting `InvoiceLineItems` all at once.\n\nIf updating existing records:\n- must provide the `id` for each record to be updated\n- only provide the fields to be updated\n- no need to provide the `rate_type` field\ne.g.\n```json\ninvoice_line_items: [\n {\n \"id\": \"some-uuid\"\n \"quantity\": 20.25,\n \"rate\": 15.75\n }\n]\n```\n\nIf deleting existing records:\n- must provide the `id` and the property `_destroy: 1`\n\ne.g. \n```json\ninvoice_line_items: [\n {\n \"id\": \"some-uuid\"\n \"_destroy\": 1\n }\n]\n```\n\n<hr>\n\n## This section is deprecated\n#### We are still accepting `rate_type` but it will have no effect. It will be removed in one of the next releases.\n\nIf creating new records (for cases where the `Invoice` `rate_type` grouping changes):\n- must provide the `rate_type`\n- must not provide the `id` for each record to be created\n- provide all the fields needed for the record\ne.g.\n```json\nrate_type: \"RatePerTon\",\ninvoice_line_items: [\n {\n \"quantity\": 20.25,\n \"rate\": 12.5\n },\n {\n \"quantity\": 22.50,\n \"rate\": 12.5\n }\n]\n```"
x-internal: true
requestBody:
content:
application/json:
schema:
type: object
properties:
rate_type:
$ref: '#/components/schemas/RateType'
invoice_line_items:
type: array
x-stoplight:
id: 8binxtypupuut-company
items:
$ref: '#/components/schemas/InvoiceLineItem-Update'
tags:
- Invoices
/v1/companies/{company-id}/invoices/{invoice-id}/invoice_line_items/generate:
parameters:
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- schema:
type: string
name: invoice-id
in: path
required: true
description: Invoice ID
- $ref: '#/components/parameters/Accept-Language'
post:
summary: Generate InvoiceLineItems for an Invoice for a Company
tags:
- Invoices
responses:
'200':
description: OK
headers: {}
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: array
x-stoplight:
id: pgnb7ip6q7u9m-company
items:
$ref: '#/components/schemas/InvoiceLineItem-Read-Generated'
'400':
$ref: '#/components/responses/Error'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'403':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'415':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
operationId: post-v1-companies-company-id-invoices-invoice-id-invoice_line_items-generate
x-stoplight:
id: ctto8orwcvh2s-company
description: 'Generate `InvoiceLineItems` for an `Invoice` for a `Company`
This endpoint only generates the `InvoiceLineItems` based on the inputs and does not store any data on the backend'
x-internal: true
requestBody:
content:
application/json:
schema:
type: object
required:
- rate_value
- rate_type
properties:
rate_value:
type: number
x-stoplight:
id: w5z08oggi7syq-company
rate_type:
$ref: '#/components/schemas/RateType'
/v1/companies/{company-id}/invoices/{invoice-id}/pay:
parameters:
- schema:
type: string
format: uuid
name: invoice-id
in: path
required: true
description: Invoice ID
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- $ref: '#/components/parameters/Accept-Language'
put:
summary: Pay an Invoice for a Company
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Invoice-Read'
'400':
$ref: '#/components/responses/Error'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'403':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'409':
$ref: '#/components/responses/StateError'
'415':
$ref: '#/components/responses/Error'
operationId: put-v1-companies-company-id-invoices-invoice-id-pay
description: Pay an `Invoice` for a `Company` by ID
tags:
- Invoices
x-internal: true
requestBody:
content:
application/json:
schema:
type: object
properties: {}
/v1/companies/{company-id}/invoices/{invoice-id}/send_invoice:
parameters:
- schema:
type: string
format: uuid
name: invoice-id
in: path
required: true
description: Invoice ID
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- $ref: '#/components/parameters/Accept-Language'
put:
summary: Send the Invoice for a Company
tags:
- Invoices
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Invoice-Read'
'400':
$ref: '#/components/responses/Error'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'403':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'409':
$ref: '#/components/responses/StateError'
'415':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
operationId: put-v1-companies-company-id-invoices-invoice-id-send_invoice
x-internal: true
description: Send the `Invoice` for a `Company` by ID
requestBody:
content:
application/json:
schema:
type: object
properties: {}
/v1/companies/{company-id}/invoices/{invoice-id}/unapprove:
parameters:
- schema:
type: string
format: uuid
name: invoice-id
in: path
required: true
description: Invoice ID
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- $ref: '#/components/parameters/Accept-Language'
put:
summary: Unapprove an Invoice as a Company
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Invoice-Read'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'403':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'409':
$ref: '#/components/responses/StateError'
operationId: put-v1-companies-company-id-invoices-invoice-id-unapprove
x-stoplight:
id: nyslvxh840krh
description: Unapprove an `Invoice` by ID as a `Company`
tags:
- Invoices
x-internal: true
/v1/companies/{company-id}/invoices/{invoice-id}/void:
parameters:
- schema:
type: string
format: uuid
name: invoice-id
in: path
required: true
description: Invoice ID
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- $ref: '#/components/parameters/Accept-Language'
put:
summary: Void an Invoice for a Company
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Invoice-Read'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'403':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'409':
$ref: '#/components/responses/StateError'
'415':
$ref: '#/components/responses/Error'
operationId: put-v1-companies-company-id-invoices-invoice-id-void
x-stoplight:
id: void-company-scoped-invoice
description: Void an `Invoice` for a `Company` by ID
tags:
- Invoices
x-internal: true
requestBody:
content:
application/json:
schema:
type: object
properties: {}
/v1/companies/{company-id}/jobs/{job-id}/payable:
parameters:
- schema:
type: string
format: uuid
name: job-id
in: path
required: true
description: Job ID
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve a Payable Invoice for a given Job
tags:
- Invoices
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Invoice-Read'
'400':
$ref: '#/components/responses/Error'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
operationId: get-v1-companies-company-id-jobs-job-id-payable
x-stoplight:
id: xax41h77exb35
x-internal: true
description: "Retrieve a `Payable Invoice` for a given `Job` for a `Company`. \n\nThis can be a `Payable` for a `Vendor` or a `Driver`. "
parameters: []
/v1/companies/{company-id}/jobs/{job-id}/receivable:
parameters:
- schema:
type: string
format: uuid
name: job-id
in: path
required: true
description: Job ID
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve a Receivable for a given Job
tags:
- Invoices
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Invoice-Read'
'400':
$ref: '#/components/responses/Error'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
operationId: get-v1-companies-company-id-jobs-job-id-receivable
x-stoplight:
id: 8y58pkoplhp7h
x-internal: true
description: Retrieve a `Receivable Invoice` for a given `Job` for a `Company`
parameters: []
/v1/companies/{company-id}/orders/{order-id}/invoices:
parameters:
- schema:
type: string
format: uuid
name: company-id
in: path
required: true
description: Company ID
- schema:
type: string
format: uuid
name: order-id
in: path
required: true
description: Order ID
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve Invoices that belong to Jobs on an Order for a Company
tags:
- Invoices
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: array
x-stoplight:
id: zcxlexqrcyizh
items:
$ref: '#/components/schemas/Invoice-Read'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/ModelError'
parameters:
- $ref: '#/components/parameters/filter-start_date'
- $ref: '#/components/parameters/filter-end_date'
- $ref: '#/components/parameters/filter-states'
- $ref: '#/components/parameters/page-limit'
- $ref: '#/components/parameters/page-before'
- $ref: '#/components/parameters/page-after'
- $ref: '#/components/parameters/filter-invoice_category'
- $ref: '#/components/parameters/filter-grouped'
- $ref: '#/components/parameters/filter-customer_account_ids'
- $ref: '#/components/parameters/filter-vendor_account_ids'
- $ref: '#/components/parameters/filter-pickup_site_ids'
- $ref: '#/components/parameters/filter-dropoff_site_ids'
- $ref: '#/components/parameters/filter-project_ids'
- $ref: '#/components/parameters/filter-rate_types'
- $ref: '#/components/parameters/filter-invoiceable_type'
- $ref: '#/components/parameters/filter-driver_ids'
- $ref: '#/components/parameters/search-datagrid'
operationId: get-v1-companies-company-id-orders-order-id-invoices
x-stoplight:
id: qw32rcod0crun
description: 'Retrieve `Invoices` that are on `Jobs` tied to an `Order` for a specific `Company`. '
/v1/driver_days/{driver-day-id}/payable:
parameters:
- schema:
type: string
format: uuid
name: driver-day-id
in: path
required: true
description: DriverDay ID
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve a Payable Invoice for a given DriverDay
tags:
- Invoices
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Invoice-Read'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
operationId: get-v1-driver_days-driver-day-id-payable
x-stoplight:
id: 5jis0xgcq54ht
x-internal: true
description: Retrieve a `Payable Invoice` for a given `DriverDay`.
/v1/jobs/{job-id}/payable:
parameters:
- schema:
type: string
format: uuid
name: job-id
in: path
required: true
description: Job ID
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve a Payable Invoice for a given Job
tags:
- Invoices
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Invoice-Read'
'400':
$ref: '#/components/responses/Error'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
operationId: get-v1-jobs-job-id-payable
x-stoplight:
id: wzx41h77exb35
x-internal: true
description: "Retrieve a `Payable Invoice` for a given `Job`. \n\nThis can be a `Payable` for a `Vendor` or a `Driver`. "
parameters: []
/v1/jobs/{job-id}/receivable:
parameters:
- schema:
type: string
format: uuid
name: job-id
in: path
required: true
description: Job ID
- $ref: '#/components/parameters/Accept-Language'
get:
summary: Retrieve a Receivable for a given Job
tags:
- Invoices
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Invoice-Read'
'400':
$ref: '#/components/responses/Error'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'404':
$ref: '#/components/responses/Error'
'406':
$ref: '#/components/responses/Error'
operationId: get-
# --- truncated at 32 KB (100 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/treadio/refs/heads/main/openapi/treadio-invoices-api-openapi.yml