tread.io Rates API

The Rates API from tread.io — 5 operation(s) for rates.

Operations 8

GET /v1/companies/{company-id}/rates Retrieve Rates that belong to a Company #
GET /v1/companies/{company-id}/rates/typeahead Typeahead search on Rates for a Company #
POST /v1/rates Create a Rate #
GET /v1/rates Retrieve Rates that belong to the current Company #
GET /v1/rates/{id} Retrieve a single Rate #
PATCH /v1/rates/{id} Update a Rate #
DELETE /v1/rates/{id} Delete a Rate #
POST /v1/rates/{rate-id}/copy Copy a Rate #

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-rates-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-rates-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Horizon API V1 AccountExternalTruckIdentifier Rates 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: Rates
paths:
  /v1/companies/{company-id}/rates:
    parameters:
    - schema:
        type: string
        format: uuid
      name: company-id
      in: path
      required: true
      description: Company ID
    - $ref: '#/components/parameters/Accept-Language'
    get:
      summary: Retrieve Rates that belong to a Company
      tags:
      - Rates
      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:
                    x-stoplight:
                      id: oyn7gw9dm9f4c
                    type: array
                    items:
                      x-stoplight:
                        id: 4e5upzw9tdyu6
                      anyOf:
                      - $ref: '#/components/schemas/RateTime-Read'
                      - $ref: '#/components/schemas/RatePerUnit-Read'
                      - $ref: '#/components/schemas/RateCommission-Read'
                      - $ref: '#/components/schemas/RateFlatCommission-Read'
                      - $ref: '#/components/schemas/RateFlatRate-Read'
        '401':
          $ref: '#/components/responses/UnauthenticatedError'
        '406':
          $ref: '#/components/responses/Error'
        '422':
          $ref: '#/components/responses/ModelError'
      operationId: get-v1-companies-company-id-rates
      x-stoplight:
        id: ggaymn5bemkfh
      description: Retrieve `Rates` that belong to a `Company`
      parameters:
      - $ref: '#/components/parameters/page-limit'
      - $ref: '#/components/parameters/page-after'
      - $ref: '#/components/parameters/page-before'
      - $ref: '#/components/parameters/filter-account_id'
      - $ref: '#/components/parameters/filter-account_type'
      - $ref: '#/components/parameters/filter-driver_id'
      - $ref: '#/components/parameters/filter-equipment_id'
      - $ref: '#/components/parameters/filter-include_default'
      - $ref: '#/components/parameters/filter-owner_type'
      - $ref: '#/components/parameters/filter-project_id'
      - $ref: '#/components/parameters/filter-service_id'
      - $ref: '#/components/parameters/filter-service_class_id'
      - $ref: '#/components/parameters/filter-equipment_type_id'
  /v1/companies/{company-id}/rates/typeahead:
    parameters:
    - schema:
        type: string
        format: uuid
      name: company-id
      in: path
      required: true
      description: Company ID
    - $ref: '#/components/parameters/Accept-Language'
    get:
      summary: Typeahead search on Rates for a Company
      tags:
      - Rates
      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: onhkwzg06mag3
                    items:
                      x-stoplight:
                        id: rquoa7vw94df3
                      anyOf:
                      - $ref: '#/components/schemas/RateTime-Read'
                      - $ref: '#/components/schemas/RatePerUnit-Read'
                      - $ref: '#/components/schemas/RateCommission-Read'
                      - $ref: '#/components/schemas/RateFlatCommission-Read'
                      - $ref: '#/components/schemas/RateFlatRate-Read'
        '401':
          $ref: '#/components/responses/UnauthenticatedError'
        '406':
          $ref: '#/components/responses/Error'
        '422':
          $ref: '#/components/responses/ModelError'
      operationId: get-v1-companies-company-id-rates-typeahead
      x-stoplight:
        id: tw8oczepyv61y
      x-internal: true
      description: Typeahead search on `Rates` for a `Company`
      parameters:
      - $ref: '#/components/parameters/page-limit'
      - $ref: '#/components/parameters/page-after'
      - $ref: '#/components/parameters/page-before'
      - $ref: '#/components/parameters/filter-account_id'
      - $ref: '#/components/parameters/filter-driver_id'
      - $ref: '#/components/parameters/filter-equipment_id'
      - $ref: '#/components/parameters/filter-include_default'
      - $ref: '#/components/parameters/filter-owner_type'
      - $ref: '#/components/parameters/filter-project_id'
      - $ref: '#/components/parameters/filter-service_id'
      - $ref: '#/components/parameters/search-query'
      - $ref: '#/components/parameters/filter-service_class_id'
      - $ref: '#/components/parameters/filter-equipment_type_id'
  /v1/rates:
    parameters:
    - $ref: '#/components/parameters/Accept-Language'
    post:
      summary: Create a Rate
      operationId: post-v1-rates
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    x-stoplight:
                      id: q7qw7tfl4h563
                    anyOf:
                    - $ref: '#/components/schemas/RateTime-Read'
                    - $ref: '#/components/schemas/RatePerUnit-Read'
                    - $ref: '#/components/schemas/RateCommission-Read'
                    - $ref: '#/components/schemas/RateFlatCommission-Read'
                    - $ref: '#/components/schemas/RateFlatRate-Read'
        '400':
          $ref: '#/components/responses/Error'
        '401':
          $ref: '#/components/responses/UnauthenticatedError'
        '403':
          $ref: '#/components/responses/Error'
        '406':
          $ref: '#/components/responses/Error'
        '415':
          $ref: '#/components/responses/Error'
        '422':
          $ref: '#/components/responses/ModelError'
      x-stoplight:
        id: zowfqe8wwlc7y
      tags:
      - Rates
      description: 'Create a `Rate`


        This endpoint requires the `create_rate` permission

        '
      requestBody:
        content:
          application/json:
            schema:
              anyOf:
              - $ref: '#/components/schemas/RateTime-Create'
              - $ref: '#/components/schemas/RatePerUnit-Create'
              - $ref: '#/components/schemas/RateCommission-Create'
              - $ref: '#/components/schemas/RateFlatCommission-Create'
              - $ref: '#/components/schemas/RateFlatRate-Create'
    get:
      summary: Retrieve Rates that belong to the current Company
      operationId: get-v1-rates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    type: array
                    x-stoplight:
                      id: u3h3dqoukazsu
                    items:
                      x-stoplight:
                        id: rky6961dxy8r9
                      anyOf:
                      - $ref: '#/components/schemas/RateTime-Read'
                      - $ref: '#/components/schemas/RatePerUnit-Read'
                      - $ref: '#/components/schemas/RateCommission-Read'
                      - $ref: '#/components/schemas/RateFlatCommission-Read'
                      - $ref: '#/components/schemas/RateFlatRate-Read'
          headers:
            Link:
              schema:
                type: string
              description: Contains prev and next links for pagination
        '401':
          $ref: '#/components/responses/UnauthenticatedError'
        '406':
          $ref: '#/components/responses/Error'
        '422':
          $ref: '#/components/responses/ModelError'
      x-stoplight:
        id: g6jyfmnr2ofv8
      tags:
      - Rates
      description: Retrieve `Rates` for a `Company`
      parameters:
      - $ref: '#/components/parameters/page-limit'
      - $ref: '#/components/parameters/page-after'
      - $ref: '#/components/parameters/page-before'
      - schema:
          type: string
        in: query
        name: filter[account_id]
        description: Account ID filter
        allowEmptyValue: false
      - schema:
          type: string
        in: query
        name: filter[project_id]
        description: Project ID filter
        allowEmptyValue: false
      - schema:
          type: string
        in: query
        name: filter[service_id]
        description: Service ID filter
        allowEmptyValue: false
      - schema:
          type: string
        in: query
        name: filter[equipment_id]
        description: Equipment ID filter
        allowEmptyValue: false
      - schema:
          type: string
        in: query
        name: filter[account_type]
        description: Account type filter (deprecated, will only work if owner_type is not provided)
      - schema:
          type: boolean
        in: query
        name: filter[include_default]
        description: Includes default rates when set to true
      - schema:
          type: string
        in: query
        name: filter[owner_type]
        description: RateOwnerType filter (should be used instead of account_type, this takes precedence over account_type)
      - schema:
          type: string
        in: query
        name: filter[driver_id]
        description: Driver ID filter
      - $ref: '#/components/parameters/filter-service_class_id'
      - $ref: '#/components/parameters/filter-equipment_type_id'
  /v1/rates/{id}:
    parameters:
    - schema:
        type: string
      name: id
      in: path
      required: true
      description: Rate ID
    - $ref: '#/components/parameters/Accept-Language'
    get:
      summary: Retrieve a single Rate
      operationId: get-v1-rates-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    x-stoplight:
                      id: j65mnit68ekrb
                    anyOf:
                    - $ref: '#/components/schemas/RateTime-Read'
                    - $ref: '#/components/schemas/RatePerUnit-Read'
                    - $ref: '#/components/schemas/RateCommission-Read'
                    - $ref: '#/components/schemas/RateFlatCommission-Read'
                    - $ref: '#/components/schemas/RateFlatRate-Read'
        '401':
          $ref: '#/components/responses/UnauthenticatedError'
        '404':
          $ref: '#/components/responses/Error'
        '406':
          $ref: '#/components/responses/Error'
      x-stoplight:
        id: j8j0yisgzv2vi
      tags:
      - Rates
      description: Retrieve `Rate` by ID
    patch:
      summary: Update a Rate
      operationId: patch-v1-rates-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    x-stoplight:
                      id: p9bxmqkmcn02c
                    anyOf:
                    - $ref: '#/components/schemas/RateTime-Read'
                    - $ref: '#/components/schemas/RatePerUnit-Read'
                    - $ref: '#/components/schemas/RateCommission-Read'
                    - $ref: '#/components/schemas/RateFlatCommission-Read'
                    - $ref: '#/components/schemas/RateFlatRate-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'
      x-stoplight:
        id: oxa3pcdlps8n2
      description: 'Update a `Rate` by ID


        This endpoint requires the `edit_rate` permission'
      tags:
      - Rates
      requestBody:
        content:
          application/json:
            schema:
              anyOf:
              - $ref: '#/components/schemas/RateTime-Update'
              - $ref: '#/components/schemas/RatePerUnit-Update'
              - $ref: '#/components/schemas/RateCommission-Update'
              - $ref: '#/components/schemas/RateFlatRate-Update'
    delete:
      summary: Delete a Rate
      operationId: delete-v1-rates-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: 0l4m3cafk36vr
      description: 'Delete a `Rate` by ID


        This endpoint requires the `delete_rate` permission'
      tags:
      - Rates
  /v1/rates/{rate-id}/copy:
    parameters:
    - schema:
        type: string
      name: rate-id
      in: path
      required: true
      description: Rate ID
    - $ref: '#/components/parameters/Accept-Language'
    post:
      summary: Copy a Rate
      operationId: post-v1-rates-rate-id-copy
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    x-stoplight:
                      id: ca94i2rfpejku
                    anyOf:
                    - $ref: '#/components/schemas/RateTime-Read'
                    - $ref: '#/components/schemas/RatePerUnit-Read'
                    - $ref: '#/components/schemas/RateCommission-Read'
                    - $ref: '#/components/schemas/RateFlatRate-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'
      x-stoplight:
        id: chtletqj7jm14
      tags:
      - Rates
      description: 'Copy a `Rate` to another `Account` or `Driver`


        This endpoint requires the `create_rate` permission


        Usage:

        - provide either `account_id` or `driver_id`'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Rate-Copy'
components:
  schemas:
    CompanyDayDriverStat-Read:
      title: CompanyDayDriverStat-Read
      x-stoplight:
        id: 3grxlvq5qo470
      allOf:
      - $ref: '#/components/schemas/Identifier'
      - $ref: '#/components/schemas/Timestamps'
      - type: object
        x-stoplight:
          id: e0k1y5lyccj7x
        properties:
          day:
            type: string
            x-stoplight:
              id: tq2kbgspesbyq
            format: date
          jobs_count:
            type: integer
            x-stoplight:
              id: lq3o1iorx79vx
      description: CompanyDayDriverStat
    Project-Read-Nested:
      title: Project-Read-Nested
      x-stoplight:
        id: 9ene929zmvaog
      allOf:
      - $ref: '#/components/schemas/Project-Read-Typeahead'
      - type: object
        x-stoplight:
          id: 8t1ly6sefwmit
        required:
        - po_job_number
        - internal_notes
        - job_notes
        - notes
        - order_notes
        properties:
          po_job_number:
            type:
            - string
            - 'null'
            x-stoplight:
              id: w5ajmms5o1rjq
          internal_notes:
            type:
            - string
            - 'null'
            x-stoplight:
              id: 3hbaltdu1u159
          job_notes:
            type:
            - string
            - 'null'
            x-stoplight:
              id: fupx5op0cmel2
          notes:
            type:
            - string
            - 'null'
            x-stoplight:
              id: 96qr64lmtj36s
          order_notes:
            type:
            - string
            - 'null'
            x-stoplight:
              id: o38gpshallijh
    Project-Read-Typeahead:
      title: Project-Read-Typeahead
      x-stoplight:
        id: 3wdg6ghyvsknb
      allOf:
      - $ref: '#/components/schemas/Identifier'
      - type: object
        required:
        - name
        - external_id
        properties:
          name:
            type: string
            description: Project name
          external_id:
            type:
            - string
            - 'null'
            x-stoplight:
              id: 7kipqxvhrgvk0
    Address-Read:
      title: Address-Read
      x-stoplight:
        id: v1mcd2qgns2tf
      type: object
      required:
      - thoroughfare
      - premise
      - locality
      - administrative_area
      - postal_code
      - country
      - lat
      - lon
      - place_id
      properties:
        thoroughfare:
          type: string
          x-stoplight:
            id: 8wrr7qkc9ilqn
        premise:
          type:
          - string
          - 'null'
          x-stoplight:
            id: z4jth408out1q
        locality:
          type: string
          x-stoplight:
            id: kfby6wqpgvxbz
        administrative_area:
          type: string
          x-stoplight:
            id: c9bkrloxf4t8d
        postal_code:
          type: string
          x-stoplight:
            id: 7zq51k1mof3o3
        country:
          type: string
          x-stoplight:
            id: iydw9q619ya01
          pattern: ^[A-Z]{2}
          example: US
          minLength: 2
          maxLength: 2
        lat:
          type:
          - string
          - 'null'
          x-stoplight:
            id: kqu1qtf9rivh1
          description: "latitude of the `Address`. \n\nMust be a stringified number between -90 and 90 inclusive.\n\nRequired if `lon` is present."
        lon:
          type:
          - string
          - 'null'
          x-stoplight:
            id: oly2yabkzpk9g
          description: "longitude of the `Address`. \n\nMust be a stringified number between -180 and 180 inclusive.\n\nRequired if `lat` is present."
        place_id:
          type:
          - string
          - 'null'
          x-stoplight:
            id: im1fdq7qqxdij
          description: NextBillion placeID
      additionalProperties: false
    TreadId:
      title: TreadId
      x-stoplight:
        id: 43k4t5tl359m4
      type: object
      required:
      - tread_id
      properties:
        tread_id:
          type: string
          x-stoplight:
            id: zi3ld7djflw6f
          pattern: ^[0-9A-F]{6}$
          minLength: 6
          maxLength: 6
          example: ABC123
          description: Tread ID
      additionalProperties: false
    RateCommission-Create:
      title: RateCommission-Create
      x-stoplight:
        id: r7b823x0dbrya
      allOf:
      - $ref: '#/components/schemas/Rate-Create'
      - type: object
        properties:
          commission_percentage:
            type: integer
            x-stoplight:
              id: jtg6f9bp4j1p5
            minimum: 0
            maximum: 100
        required:
        - commission_percentage
    CompanyType:
      title: CompanyType
      x-stoplight:
        id: dkzo7gjbtb1b3
      enum:
      - broker
      - contractor
      - hauler
      - owner_operator
      - producer
      - super
      example: hauler
      description: Company Type
    GpsStatusable:
      title: GpsStatusable
      x-stoplight:
        id: o6oprcupw6ep7
      type: object
      required:
      - gps_status
      properties:
        gps_status:
          $ref: '#/components/schemas/GpsStatus'
      additionalProperties: false
    EquipmentType-Read-Nested:
      title: EquipmentType-Read-Nested
      x-stoplight:
        id: em46i5kysysdh
      type: object
      required:
      - id
      - name
      - system
      - external_id
      - accounting_id
      properties:
        id:
          type: string
          x-stoplight:
            id: 835oy22o6h24z
          format: uuid
        name:
          type: string
          x-stoplight:
            id: tnszefd7lypln
        system:
          type: boolean
          x-stoplight:
            id: vimoqz5e8x6gx
        external_id:
          type:
          - string
          - 'null'
          x-stoplight:
            id: ttaijg77qmbgk
        accounting_id:
          type:
          - string
          - 'null'
          x-stoplight:
            id: s4rscgptv68x3
      additionalProperties: false
    RateTime-Create:
      title: RateTime-Create
      x-stoplight:
        id: g82io4nxe4j1d
      allOf:
      - $ref: '#/components/schemas/Rate-Create'
      - type: object
        properties:
          time_rate:
            type: number
            x-stoplight:
              id: iabt3nn8mvvyn
            minimum: 0
          time_minimum_minutes:
            type: integer
            x-stoplight:
              id: 23j071n4sh53k
            minimum: 0
          time_increment_minutes:
            type: integer
            x-stoplight:
              id: ddop6jlcd75w9
            minimum: 0
        required:
        - time_rate
        - time_minimum_minutes
        - time_increment_minutes
    RateTime-Read:
      title: RateTime-Read
      x-stoplight:
        id: gsz4jl8ws70ac
      allOf:
      - $ref: '#/components/schemas/Rate-Read'
      - type: object
        properties:
          time_rate:
            type: number
            x-stoplight:
              id: 77ouycjgsbisl
            minimum: 0
          time_minimum_minutes:
            type: integer
            x-stoplight:
              id: dknkfroav5bqj
            minimum: 0
          time_increment_minutes:
            type: integer
            x-stoplight:
              id: ds1s0ub4319lh
            minimum: 0
        required:
        - time_rate
        - time_minimum_minutes
        - time_increment_minutes
    RateFlatCommission-Create:
      title: RateFlatCommission-Create
      x-stoplight:
        id: r0dzxtipe2bod
      allOf:
      - $ref: '#/components/schemas/Rate-Create'
      - type: object
        required:
        - commission_amount
        properties:
          commission_amount:
            type: number
            x-stoplight:
              id: 705il528fb4tl
    Error:
      title: Error
      x-stoplight:
        id: 3g57kkik3l464
      type: object
      description: An Error.
      required:
      - code
      properties:
        code:
          type: string
          x-stoplight:
            id: 7o9x1t8v0bgfo
      additionalProperties: false
    Equipment-Read-Typeahead:
      title: Equipment-Read-Typeahead
      x-stoplight:
        id: sv94osohm5xhg
      allOf:
      - $ref: '#/components/schemas/Identifier'
      - type: object
        required:
        - name
        - equipment_type
        - external_id
        - equipment_id
        properties:
          name:
            type: string
            description: Equipment name
          equipment_type:
            $ref: '#/components/schemas/EquipmentType-Read-Nested'
          external_id:
            type:
            - string
            - 'null'
            x-stoplight:
              id: jrkz95htilck3
          company_share:
            $ref: '#/components/schemas/CompanyShare-Read-Nested'
          equipment_id:
            type: string
            x-stoplight:
              id: fkr9fkdtl996f
    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
    Equipment-Read-Default-Nested:
      title: Equipment-Read-Default-Nested
      x-stoplight:
        id: kojte9y4g6t9v
      allOf:
      - $ref: '#/components/schemas/Identifier'
      - type: object
        required:
        - name
        - external_id
        - equipment_type
        - equipment_id
        properties:
          name:
            type: string
            description: Equipment name
          external_id:
            type:
            - string
            - 'null'
          equipment_type:
            $ref: '#/components/schemas/EquipmentType-Read-Nested'
          company_share:
            $ref: '#/components/schemas/CompanyShare-Read-Nested'
          equipment_id:
            type: string
            x-stoplight:
              id: v25n5jka8apv0
    AddOn-Read-Nested:
      title: AddOn-Read-Nested
      x-stoplight:
        id: v8dl5yn30kkc1
      allOf:
      - $ref: '#/components/schemas/Identifier'
      - type: object
        required:
        - name
        - quantity
        - rate
        - percentage
        - add_on_rate_type
        properties:
          name:
            type: string
            x-stoplight:
              id: 050zd8kz0vgbs
          quantity:
            type: string
            x-stoplight:
              id: c3va13nna81jo
          rate:
            type: string
            x-stoplight:
              id: 9j3huo3cmv9hx
          percentage:
            type: string
            x-stoplight:
              id: qrfrr46gebj4h
          add_on_rate_type:
            $ref: '#/components/schemas/AddOnRateType'
            deprecated: true
            description: Deprecated in favor of `revenue_cost_rate_type`.
          fuel_surcharge_schedule:
            $ref: '#/components/schemas/FuelSurchargeSchedule-Read-Nested'
    Contact-Read-Nested:
      title: Contact-Read-Nested
      x-stoplight:
        id: 3u6d8qhsz5ehn
      allOf:
      - $ref: '#/components/schemas/Identifier'
      - type: object
        required:
        - name
        - email
        - phone
        properties:
          name:
            type:
            - string
            - 'null'
            x-stoplight:
              id: sd80y9pbgvkok
          email:
            type:
            - string
            - 'null'
            x-stoplight:
              id: 883fmt34pdeaj
          phone:
            type:
            - string
            - 'null'
            x-stoplight:
              id: wdtqyju4t4u06
            example: '+18885551234'
      description: ''
    RateFlatRate-Read:
      title: RateFlatRate-Read
      x-stoplight:
        id: cchfdcn2nogj4
      allOf:
      - $ref: '#/components/schemas/Rate-Read'
      - type: object
        x-stoplight:
          id: k6s97jfyyal9x
        required:
        - flat_amount
        properties:
          flat_amount:
            type: number
            x-stoplight:
              id: lbps3g0gciclk
    Address-Read-Nested:
      title: Address-Read-Nested
      x-stoplight:
        id: cvym2dzuo375q
      allOf:
      - $ref: '#/components/schemas/Identifier'
      - $ref: '#/components/schemas/Address-Read'
    Account-Read-Nested:
      title: Account-Read-Nested
      x-stoplight:
        id: zo8r3gsz1tm5h
      allOf:
      - $ref: '#/components/schemas/Identifier'
      - $ref: '#/components/schemas/Discardable'
      - type: object
        x-stoplight:
          id: gl7hua7pv8xka
        required:
        - name
        - account_types
        - external_id
        - accounting_id
        - company
        - schedule_on
        properties:
          name:
            type: string
            x-stoplight:
              id: a7g065w5byfcf
          account_types:
            type: array
            x-stoplight:
              id: a0e9c3lpr1wad
            items:
              $ref: '#/components/schemas/AccountType'
          external_id:
            type:
            - string
            - 'null'
            x-stoplight:
              id: yfrec4y0a90cb
          accounting_id:
            type:
            - string
            - 'null'
            x-stoplight:
              id: yfsec5y0a91cb
          company:
            type: object
            x-stoplight:
              id: 9loqtu14mvlnq
            required:
            - id
            properties:
              id:
                type: string
                x-stoplight:
                  id: udjkdjrz08pzr
                format: uuid
          billing_address:
            $ref: '#/components/schemas/Address-Read-Nested'
          schedule_on:
            type: boolean
            x-stoplight:
              id: 0g9kx77zym4ok
          connected_company:
            $ref: '#/components/schemas/Company-Read-Nested'
          billing_contact:
            $ref: '#/components/schemas/Contact-Read-Nested'
    RateCommission-Read:
      title: RateCommission-Read
      x-stoplight:
        id: ugvgjhdxqi406
      allOf:
      - $ref: '#/components/schemas/Rate-Read'
      - type: object
        properties:
          commission_percentage:
            type: number
            x-stoplight:
              id: ugu95q3secjrp
        required:
        - commission_percentage
    UnauthenticatedError:
      title: UnauthenticatedError
      x-stoplight:
        id: 202o69l0fs40h
      allOf:
      - $ref: '#/components/schemas/Error'
      - type: object
        x-stoplight:
          id: tg10dt7s0l6bw
        properties:
          error_type:
            type: string
            x-stoplight:
              id: wvq8c0qsym4hz
        required:
        - error_type
    RatePerUnit-Read:
      title: RatePerUnit-Read
      x-stoplight:
        id: h49e4lb1d9qjn
      allOf:
      - $ref: '#/components/schemas/Rate-Read'
      - type: object
        properties:
          unit_rate:
            type: number
            x-stoplight:
              id: jhif8pzx75v63
            minimum: 0
          unit_minimum:
            type: number
            x-stoplight:
              id: ecwq9vr2oiz49
            minimum: 0
          unit_increment:
            type: number
            x-stoplight:
              id: 9d7hhgo8jh9io
            minimum: 0
        required:
        - unit_rate
        - unit_minimum
        - unit_increment
    RateFlatRate-Create:
      title: RateFlatRate-Create
      x-stoplight:
        id: bi41h0yvhqwml
      allOf:
      - $ref: '#/components/schemas/Rate-Create'
      - type: object
        x-stoplight:
          id: d0tgmqzt7nmak
        required:
        - flat_amount
        properties:
          flat_amount:
            type: number
            x-stoplight:
              id: ztu2zj17kq7g4
    Identifier:
      title: Identifier
      x-stoplight:
        id: gnd39lue5v7ol
      type: object
      required:
      - id
      properties:
        id:
          type: string
          x-stoplight:
            id: 2e38hjk4zd58m
          format: uuid
      additionalProperties: false
    Driver-Read-Typeahead:
      allOf:
      - $ref: '#/

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