tread.io Tickets API

The Tickets API from tread.io — 14 operation(s) for tickets.

Operations 18

GET /v1/companies/{company-id}/orders/{order-id}/tickets Retrieve Tickets for an Order for a Company #
GET /v1/companies/{company-id}/orders/{order-id}/tickets/rollup_summary Retrieve Ticket Rollup Summary for an Order for a Company #
GET /v1/companies/{company-id}/settlements/{settlement-id}/tickets Retrieve Tickets for a Settlement for a Company #
GET /v1/companies/{company-id}/tickets Retrieve Tickets that belong to a Company #
POST /v1/direct_uploads Create a DirectUpload #
GET /v1/jobs/{job-id}/tickets Retrieve Tickets for a Job #
GET /v1/orders/{order-id}/tickets Retrieve Tickets for an Order #
GET /v1/orders/{order-id}/tickets/rollup_summary Retrieve Ticket Rollup Summary for an Order #
POST /v1/tickets Create a Ticket #
GET /v1/tickets Retrieve Tickets that belong to the current Company #
GET /v1/tickets/{id} Retrieve a single Ticket #
PATCH /v1/tickets/{id} Update a Ticket #
DELETE /v1/tickets/{id} Delete a Ticket #
GET /v1/tickets/{ticket-id}/ai_metadata Retrieve a single Ticket's AI metadata #
PUT /v1/tickets/{ticket-id}/approve Approve a Ticket #
POST /v1/tickets/{ticket-id}/image Update the Image that belongs to a Ticket #
DELETE /v1/tickets/{ticket-id}/image Delete the Image that belongs to a Ticket #
PUT /v1/tickets/{ticket-id}/void Void a Ticket #

Work with this as data

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/treadio-tickets-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 Specification

treadio-tickets-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Horizon API V1 AccountExternalTruckIdentifier Tickets 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: Tickets
paths:
  /v1/companies/{company-id}/orders/{order-id}/tickets:
    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 Tickets for an Order for a Company
      tags:
      - Tickets
      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/Ticket-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-orders-order-id-id-tickets
      description: 'Retrive `Tickets` for an `Order`.

        Filter usage:

        * to filter a from date: `filter[from_date]`

        * to filter a to date: `filter[to_date]`

        '
      parameters:
      - $ref: '#/components/parameters/page-limit'
      - $ref: '#/components/parameters/page-after'
      - $ref: '#/components/parameters/page-before'
      - schema:
          type: string
        in: query
        name: filter[from_date]
        description: Start range of ticket.created_at
      - schema:
          type: string
        in: query
        name: filter[to_date]
        description: End range of ticket.created_at
      - schema:
          type: boolean
        in: query
        name: filter[flagged]
        description: Filter to only flagged or un-flagged Tickets
      - $ref: '#/components/parameters/filter-sources'
      x-stoplight:
        id: sxk44khjpj9h8
  /v1/companies/{company-id}/orders/{order-id}/tickets/rollup_summary:
    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 Ticket Rollup Summary for an Order for a Company
      tags:
      - Tickets
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/TicketRollupSummary-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-orders-order-id-id-tickets-rollup-summary
      description: 'Retrive `TicketRollupSummary` for an `Order`.

        Filter usage:

        * filter on ticket source: `filter[sources]`

        '
      parameters:
      - $ref: '#/components/parameters/filter-sources'
      x-stoplight:
        id: lrtsaqw83ugg6
  /v1/companies/{company-id}/settlements/{settlement-id}/tickets:
    parameters:
    - schema:
        type: string
        format: uuid
      name: company-id
      in: path
      required: true
      description: Company ID
    - schema:
        type: string
        format: uuid
      name: settlement-id
      in: path
      required: true
      description: Settlement ID
    - $ref: '#/components/parameters/Accept-Language'
    get:
      summary: Retrieve Tickets for a Settlement for a Company
      tags:
      - Tickets
      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/Ticket-Read'
        '401':
          $ref: '#/components/responses/UnauthenticatedError'
        '404':
          $ref: '#/components/responses/Error'
        '406':
          $ref: '#/components/responses/Error'
      operationId: get-v1-companies-company-id-settlements-settlement-id-tickets
      x-stoplight:
        id: m7n8o9p0q1r2s
      x-internal: true
      description: Retrieve `Tickets` for a `Settlement`.
      parameters:
      - $ref: '#/components/parameters/page-limit'
      - $ref: '#/components/parameters/page-after'
      - $ref: '#/components/parameters/page-before'
  /v1/companies/{company-id}/tickets:
    parameters:
    - schema:
        type: string
        format: uuid
      name: company-id
      in: path
      required: true
      description: Company ID
    - $ref: '#/components/parameters/Accept-Language'
    get:
      summary: Retrieve Tickets that belong to a Company
      tags:
      - Tickets
      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: pyvvst6d54d5t
                    items:
                      $ref: '#/components/schemas/Ticket-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-tickets
      x-stoplight:
        id: zdk5o9cvbnl7t
      description: 'Retrieve `Tickets` that belong to a `Company` by `ID`


        Filter usage:

        * to filter a from date: `filter[from_date]`

        * to filter a to date: `filter[to_date]`'
      parameters:
      - $ref: '#/components/parameters/page-limit'
      - $ref: '#/components/parameters/page-after'
      - $ref: '#/components/parameters/page-before'
      - schema:
          type: string
          format: date-time
        in: query
        name: filter[from_date]
        description: Start range of ticket.created_at
      - schema:
          type: string
          format: date-time
        in: query
        name: filter[to_date]
        description: End range of ticket.created_at
      - schema:
          type: boolean
        in: query
        name: filter[flagged]
        description: Filter to only flagged or un-flagged Tickets
      - $ref: '#/components/parameters/filter-sources'
  /v1/direct_uploads:
    parameters:
    - $ref: '#/components/parameters/Accept-Language'
    post:
      summary: Create a DirectUpload
      tags:
      - Tickets
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    $ref: '#/components/schemas/DirectUpload-Read'
        '401':
          $ref: '#/components/responses/UnauthenticatedError'
        '406':
          $ref: '#/components/responses/Error'
        '415':
          $ref: '#/components/responses/Error'
        '422':
          $ref: '#/components/responses/ModelError'
      operationId: post-v1-direct_uploads
      x-stoplight:
        id: tgme583womicv
      description: 'Create a `DirectUpload`.


        The `checksum` _must_ be calculated exactly the way `rails` expects it ([javascript example](https://github.com/rails/rails/blob/main/activestorage/app/javascript/activestorage/file_checksum.js)).


        You should upload the file to `direct_upload.url` using any provided headers from `direct_upload.headers`.


        Once this is done you can use `signed_id` in place of a file in any endpoint that accepts file uploads.'
      x-internal: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DirectUpload-Create'
  /v1/jobs/{job-id}/tickets:
    parameters:
    - schema:
        type: string
      name: job-id
      in: path
      required: true
      description: Job ID
    - $ref: '#/components/parameters/Accept-Language'
    get:
      summary: Retrieve Tickets for a Job
      tags:
      - Tickets
      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/Ticket-Read'
        '401':
          $ref: '#/components/responses/UnauthenticatedError'
        '404':
          $ref: '#/components/responses/Error'
        '406':
          $ref: '#/components/responses/Error'
        '422':
          $ref: '#/components/responses/ModelError'
      operationId: get-v1-jobs-job-id-tickets
      x-stoplight:
        id: mvwxdiz0x5hf8
      description: 'Retrive `Tickets` for a `Job`.

        Filter usage:

        * to filter a from date: `filter[from_date]`

        * to filter a to date: `filter[to_date]`

        '
      parameters:
      - $ref: '#/components/parameters/page-limit'
      - $ref: '#/components/parameters/page-after'
      - $ref: '#/components/parameters/page-before'
      - schema:
          type: string
        in: query
        name: filter[from_date]
        description: Start range of ticket.created_at
      - schema:
          type: string
        in: query
        name: filter[to_date]
        description: End range of ticket.created_at
      - schema:
          type: boolean
        in: query
        name: filter[flagged]
        description: Filter to only flagged or un-flagged Tickets
      - $ref: '#/components/parameters/filter-sources'
  /v1/orders/{order-id}/tickets:
    parameters:
    - schema:
        type: string
      name: order-id
      in: path
      required: true
      description: Order ID
    - $ref: '#/components/parameters/Accept-Language'
    get:
      summary: Retrieve Tickets for an Order
      tags:
      - Tickets
      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/Ticket-Read'
        '401':
          $ref: '#/components/responses/UnauthenticatedError'
        '404':
          $ref: '#/components/responses/Error'
        '406':
          $ref: '#/components/responses/Error'
        '422':
          $ref: '#/components/responses/ModelError'
      operationId: get-v1-orders-order-id-id-tickets
      description: 'Retrive `Tickets` for an `Order`.

        Filter usage:

        * to filter a from date: `filter[from_date]`

        * to filter a to date: `filter[to_date]`

        '
      parameters:
      - $ref: '#/components/parameters/page-limit'
      - $ref: '#/components/parameters/page-after'
      - $ref: '#/components/parameters/page-before'
      - schema:
          type: string
        in: query
        name: filter[from_date]
        description: Start range of ticket.created_at
      - schema:
          type: string
        in: query
        name: filter[to_date]
        description: End range of ticket.created_at
      - schema:
          type: boolean
        in: query
        name: filter[flagged]
        description: Filter to only flagged or un-flagged Tickets
      - $ref: '#/components/parameters/filter-sources'
      x-stoplight:
        id: ncxsngghpi7ea
      deprecated: true
  /v1/orders/{order-id}/tickets/rollup_summary:
    parameters:
    - schema:
        type: string
      name: order-id
      in: path
      required: true
      description: Order ID
    - $ref: '#/components/parameters/Accept-Language'
    get:
      summary: Retrieve Ticket Rollup Summary for an Order
      tags:
      - Tickets
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/TicketRollupSummary-Read'
        '401':
          $ref: '#/components/responses/UnauthenticatedError'
        '404':
          $ref: '#/components/responses/Error'
        '406':
          $ref: '#/components/responses/Error'
        '422':
          $ref: '#/components/responses/ModelError'
      operationId: get-v1-orders-order-id-id-tickets-rollup-summary
      description: 'Retrive `TicketRollupSummary` for an `Order`.

        Filter usage:

        * filter on ticket source: `filter[sources]`

        '
      parameters:
      - $ref: '#/components/parameters/filter-sources'
      x-stoplight:
        id: gflnfaum35oba
      deprecated: true
  /v1/tickets:
    parameters:
    - $ref: '#/components/parameters/Accept-Language'
    post:
      summary: Create a Ticket
      operationId: post-v1-tickets
      responses:
        '201':
          description: Created
          headers: {}
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Ticket-Read'
                required:
                - data
        '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'
      x-stoplight:
        id: grug3kaa54qpn
      tags:
      - Tickets
      description: 'Create a `Ticket`


        This endpoint requires the `create_ticket` permission'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Ticket-Create'
    get:
      summary: Retrieve Tickets that belong to the current Company
      tags:
      - Tickets
      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: tria7go8pqqi9
                    items:
                      $ref: '#/components/schemas/Ticket-Read'
        '401':
          $ref: '#/components/responses/UnauthenticatedError'
        '406':
          $ref: '#/components/responses/Error'
        '422':
          $ref: '#/components/responses/ModelError'
      operationId: get-v1-tickets
      x-stoplight:
        id: ip4clt2871jqj
      description: 'Retrieve `Tickets` for a `Company`


        Filter usage:

        * to filter a from date: `filter[from_date]`

        * to filter a to date: `filter[to_date]`'
      parameters:
      - $ref: '#/components/parameters/page-limit'
      - $ref: '#/components/parameters/page-after'
      - $ref: '#/components/parameters/page-before'
      - schema:
          type: string
        in: query
        name: filter[from_date]
        description: Start range of ticket.created_at
      - schema:
          type: string
        in: query
        name: filter[to_date]
        description: End range of ticket.created_at
      - schema:
          type: boolean
        in: query
        name: filter[flagged]
        description: Filter to only flagged or un-flagged Tickets
      x-internal: true
  /v1/tickets/{id}:
    parameters:
    - schema:
        type: string
      name: id
      in: path
      required: true
      description: Ticket ID
    - $ref: '#/components/parameters/Accept-Language'
    get:
      summary: Retrieve a single Ticket
      tags:
      - Tickets
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Ticket-Read'
                required:
                - data
        '401':
          $ref: '#/components/responses/UnauthenticatedError'
        '404':
          $ref: '#/components/responses/Error'
        '406':
          $ref: '#/components/responses/Error'
      operationId: get-v1-tickets-id
      x-stoplight:
        id: l4iqzqn7t4xzj
      description: Retrieve `Ticket` by ID
    patch:
      summary: Update a Ticket
      operationId: patch-v1-tickets-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Ticket-Read'
                required:
                - data
        '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'
      x-stoplight:
        id: ukwpwcy5dis0t
      tags:
      - Tickets
      description: 'Update a `Ticket` by ID


        This endpoint requires the `edit_ticket` permission'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Ticket-Update'
    delete:
      summary: Delete a Ticket
      operationId: delete-v1-tickets-id
      responses:
        '204':
          description: No Content
        '401':
          $ref: '#/components/responses/UnauthenticatedError'
        '403':
          $ref: '#/components/responses/Error'
        '404':
          $ref: '#/components/responses/Error'
        '406':
          $ref: '#/components/responses/Error'
        '422':
          $ref: '#/components/responses/ModelError'
      x-stoplight:
        id: yraim58bdmx84
      tags:
      - Tickets
      description: 'Delete a `Ticket` by ID


        This endpoint requires the `delete_ticket` permission'
  /v1/tickets/{ticket-id}/ai_metadata:
    parameters:
    - schema:
        type: string
      name: ticket-id
      in: path
      required: true
      description: Ticket ID
    - $ref: '#/components/parameters/Accept-Language'
    get:
      summary: Retrieve a single Ticket's AI metadata
      tags:
      - Tickets
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Ticket-Metadata-Read'
                required:
                - data
        '401':
          $ref: '#/components/responses/UnauthenticatedError'
        '404':
          $ref: '#/components/responses/Error'
        '406':
          $ref: '#/components/responses/Error'
      operationId: get-v1-tickets-ticket-id-ai-metadata
      x-stoplight:
        id: aaaqzqn7t4xzj
      description: Retrieve `Ticket`'s AI metadata by ID
  /v1/tickets/{ticket-id}/approve:
    parameters:
    - schema:
        type: string
      name: ticket-id
      in: path
      required: true
      description: Ticket ID
    - $ref: '#/components/parameters/Accept-Language'
    put:
      summary: Approve a Ticket
      operationId: put-v1-tickets-ticket-id-approve
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    $ref: '#/components/schemas/Ticket-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'
      description: 'Approve a `Ticket` by ID


        This endpoint requires the `edit_ticket` permission.'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties: {}
      x-stoplight:
        id: p7hd8j339m33d
      tags:
      - Tickets
  /v1/tickets/{ticket-id}/image:
    parameters:
    - schema:
        type: string
      name: ticket-id
      in: path
      required: true
      description: Ticket ID
    - $ref: '#/components/parameters/Accept-Language'
    post:
      summary: Update the Image that belongs to a Ticket
      operationId: post-v1-tickets-ticket-id-image
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Ticket-Read'
                required:
                - data
        '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'
      x-stoplight:
        id: j9qfptfyqfedu
      tags:
      - Tickets
      description: "Add or replace the `image` for a `Ticket`. \n\nThis endpoint requires the `edit_ticket` `IamPermission`\n\nThe following restrictions apply:\n * `image` must be one of the following image types:`jpeg`, `jpg`.\n\n* If you're using a `DirectUpload` then you must use the `application/json` mime-type and `image` must be the `DirectUpload`'s `signed_id`\n* If you're using a file then you must use the `multipart/form-data` mime-type and `image` must be a file."
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Ticket-Image-Create'
          application/json:
            schema:
              $ref: '#/components/schemas/Ticket-Image-Create'
    delete:
      summary: Delete the Image that belongs to a Ticket
      operationId: delete-v1-tickets-ticket-id-image
      responses:
        '204':
          description: No Content
        '401':
          $ref: '#/components/responses/UnauthenticatedError'
        '403':
          $ref: '#/components/responses/Error'
        '404':
          $ref: '#/components/responses/Error'
        '406':
          $ref: '#/components/responses/Error'
      x-stoplight:
        id: 0jji2xykebe3z
      tags:
      - Tickets
      description: "Delete the `image` for a `Ticket`. \n\nThis endpoint requires the `delete_ticket` `IamPermission`"
  /v1/tickets/{ticket-id}/void:
    parameters:
    - schema:
        type: string
      name: ticket-id
      in: path
      required: true
      description: Ticket ID
    - $ref: '#/components/parameters/Accept-Language'
    put:
      summary: Void a Ticket
      operationId: put-v1-tickets-ticket-id-void
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    $ref: '#/components/schemas/Ticket-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'
      description: 'Void a `Ticket` by ID.


        This endpoint requires the `edit_ticket` permission.'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties: {}
      x-stoplight:
        id: 9hs3hplf1xkrm
      tags:
      - Tickets
components:
  schemas:
    StateError:
      title: StateError
      x-stoplight:
        id: zgcsl4t8bsn3c
      allOf:
      - $ref: '#/components/schemas/Error'
      - type: object
        x-stoplight:
          id: ntvt2atfotcge
        required:
        - errors
        properties:
          errors:
            type: array
            x-stoplight:
              id: noi1jg6o8psl7
            items:
              $ref: '#/components/schemas/StateError-Item'
    TicketSource:
      title: TicketSource
      x-stoplight:
        id: z52hto616mgx1
      enum:
      - driver_app
      - web
      - api_integration
      - agent
      example: driver_app
      default: driver_app
      readOnly: true
    Material-Read-Nested:
      title: Material-Read-Nested
      x-stoplight:
        id: 5hvekq1lnr9ku
      type: object
      required:
      - id
      - name
      - external_id
      properties:
        id:
          type: string
          x-stoplight:
            id: c6nool5iljv3l
          format: uuid
        name:
          type: string
          x-stoplight:
            id: bsd3m2c74jis8
        external_id:
          type:
          - string
          - 'null'
          description: Material external_id
          x-stoplight:
            id: ab0l0yvuz5u6d
      additionalProperties: false
    TicketRollupSummary-Read:
      title: TicketRollupSummary-Read
      x-stoplight:
        id: 8hl2dv5xu3hc6
      type: object
      required:
      - external_vendor_name
      - external_truck_id
      - total_tickets_count
      - total_tickets_missing_job_count
      - total_tickets_quantity
      - total_tickets_missing_job_quantity
      properties:
        external_vendor_name:
          type: string
          x-stoplight:
            id: nym1xtyupjjk0
        external_truck_id:
          type: string
          x-stoplight:
            id: ywebg5780jiy3
        total_tickets_count:
          type: integer
          x-stoplight:
            id: gqtwnjam89ci4
        total_tickets_missing_job_count:
          type: integer
          x-stoplight:
            id: qw71s1luaetyn
        total_tickets_quantity:
          type: number
          x-stoplight:
            id: 8slo9pd137h0m
        total_tickets_missing_job_quantity:
          type: number
          x-stoplight:
            id: xxy6yaadsn4ty
        unit_of_measure:
          $ref: '#/components/schemas/OrderUnitOfMeasure'
      additionalProperties: false
    TicketState:
      title: TicketState
      x-stoplight:
        id: q01ztz4xuvcc5
      enum:
      - new
      - pending
      - approved
      - voided
      readOnly: true
    ModelError-Item:
      title: ModelError-Item
      x-stoplight:
        id: b93chwval2t8d
      type: object
      required:
      - model
      - field
      - message
      properties:
        model:
          type: string
          x-stoplight:
            id: 30myfyjkno8ao
          description: The Model associated with this Error
        field:
          type: string
          x-stoplight:
            id: 8gl4ed3uxhdws
          description: The field associated with this Error
        message:
          type: string
          x-stoplight:
            id: bmgbrtmw17qsj
          description: The Error message
      additionalProperties: false
    Error:
      title: Error
      x-stoplight:
        id: 3g57kkik3l464
      type: object
      description: An Error.
      required:
      - code
      properties:
        code:
          type: string
          x-stoplight:
            id: 7o9x1t8v0bgfo
      additionalProperties: false
    OrderUnitOfMeasure:
      title: OrderUnitOfMeasure
      x-stoplight:
        id: kahcgn7w8swdv
      enum:
      - Load
      - Tonne
      - Ton
      - Yard
      - Meter
      - Foot
      - Liter
      - Hour
      - Bushel
      - Gallon
      - CubicMeter
      - Mile
      - Kilometer
      - Barrel
      - Bag
      - Pallet
      example: Load
    Ticket-Read-Nested:
      title: Ticket-Read-Nested
      x-stoplight:
        id: sxhhxkcgkj6ep
      allOf:
      - $ref: '#/components/schemas/Identifier'
      - type: object
        x-stoplight:
          id: u7esfoogq8q49
        required:
        - ticket_number
        - preview_url
        properties:
          ticket_number:
            type:
            - string
            - 'null'
            x-stoplight:
              id: kzx5yw8vvwbra
          preview_url:
            type:
            - string
            - 'null'
            x-stoplight:
              id: h1do11irp24bw
            format: uri
    Ticket-Create:
      title: Ticket-Create
      x-stoplight:
        id: 131qvudbt31h8
      type: object
      required:
      - unit_of_measure
      properties:
        quantity:
          type:
          - number
          - 'null'
          x-stoplight:
            id: 68w2mgm2lle6k
        ticket_number:
          type:
          - string
          - 'null'
          x-stoplight:
            id: p67knkzoxujnd
        unit_of_measure:
          $ref: '#/components/schemas/OrderUnitOfMeasure'
        job_id:
          type:
      

# --- truncated at 32 KB (50 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/treadio/refs/heads/main/openapi/treadio-tickets-api-openapi.yml