Trimble Appointments API

The Appointments API allows e-commerce partners to select a delivery appointment for orders not yet created in TruckMate. The list of available appointment windows can be constrained to be not earlier than the Earliest Delivery Date provided by TruckMate's Transit Time API, to ensure that delivery appointments are feasible according to service standards.

GitHub OpenAPI

Operations 4

GET /appointments Retrieve existing appointments #
POST /appointments Create a new appointment #
GET /appointments/{appointmentId} Retrieve an appointment #
PUT /appointments/{appointmentId} Update an appointment #

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/trimble:trimble-appointments-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

trimble-appointments-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: TruckMate REST Appointments API
  description: 'The TruckMate REST APIs are a comprehensive set of RESTful services, allowing you to seamlessly integrate with major TruckMate product areas. The TruckMate REST APIs allow developers to integrate the TruckMate product with custom or 3rd party applications, automate tasks, and much more.


    Business use cases of the TruckMate REST APIs include:


    - Internal systems: Use the APIs to share data and streamline internal business processes.

    - External data sharing: In addition to internal networking, the APIs allow sharing TruckMate data with third party systems to connect and share information.

    - App integrations: Access TruckMate data in real time.

    - Embedded content: Request data from the TruckMate REST APIs to embed pieces of content onto your corporate site.


    The endpoints and methods available are dependent on the license keys and authorization methods used. Use the following documentation to determine how to interact with the various available components.


    Download latest released OpenAPI


    This documentation is based on the most currently released version of TruckMate. Documentation for previous versions can be accessed by navigating to the openapi.json endpoint for any given API (the service must be set up and running). For example: http://DOMAIN/openapi.json


    ---


    © 2026, Trimble Inc. All rights reserved. Unauthorized copying prohibited. Software functions, including our APIs and their specification, are subject to change without notice. Information contained herein is Trimble Confidential Information, used under license.


    ---'
  version: '1'
  x-tm-release: 26.3.125.0
tags:
- name: Appointments
  description: The Appointments API allows e-commerce partners to select a delivery appointment for orders not yet created in TruckMate. The list of available appointment windows can be constrained to be not earlier than the Earliest Delivery Date provided by TruckMate's Transit Time API, to ensure that delivery appointments are feasible according to service standards.
paths:
  /appointments:
    get:
      summary: Retrieve existing appointments
      description: Retrieves an array of pre-booked appointments providing visibility to appointments made. The filter query parameter allows searching for specific appointments (e.g., by customer and/or external identifier). Use the optional limit and offset query parameters to page through the resulting sets of data.
      operationId: GetAppointments
      security:
      - truckmateApiKeyAuth: []
      - tidJwtAuth: []
      tags:
      - Appointments
      parameters:
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/offset'
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/orderBy'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAppointments200'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ARTErrors'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ARTErrors'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ARTErrors'
    post:
      summary: Create a new appointment
      description: Creates a single new pre-booked appointment. Use the external identifier and source fields to uniquely identify the external system that is maintaining this appointment. A valid TruckMate customer who is placing this appointment is required. The appointment type, either pickup or delivery, is also required.
      operationId: PostAppointment
      security:
      - truckmateApiKeyAuth: []
      - tidJwtAuth: []
      tags:
      - Appointments
      requestBody:
        description: A single JSON object containing the properties of the new appointment to be created.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PreappointmentPostRequest'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/appointment'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ARTErrors'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ARTErrors'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ARTErrors'
  /appointments/{appointmentId}:
    get:
      summary: Retrieve an appointment
      description: Retrieves a pre-booked appointment as specified by the appointment identifier in the target path parameter.
      operationId: GetAppointment
      security:
      - truckmateApiKeyAuth: []
      - tidJwtAuth: []
      tags:
      - Appointments
      parameters:
      - name: appointmentId
        in: path
        description: appointment identifier
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/appointment'
                - type: object
                  properties:
                    href:
                      type: string
                      readOnly: true
                      description: Self-referencing URL for this resource
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ARTErrors'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ARTErrors'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ARTErrors'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ARTErrors'
    put:
      summary: Update an appointment
      description: Updates a pre-booked appointment as specified by the appointment identifier in the target path parameter. Can be used for partial updates as only the properties sent in the request will be updated. Will return a 409 Conflict response if the appointment has already been matched to an order.
      operationId: PutAppointment
      security:
      - truckmateApiKeyAuth: []
      - tidJwtAuth: []
      tags:
      - Appointments
      requestBody:
        description: A single JSON object containing the properties to be updated. All fields are optional, but at least one field must be sent.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PreappointmentPutRequest'
      parameters:
      - name: appointmentId
        in: path
        description: appointment identifier
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/appointment'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ARTErrors'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ARTErrors'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ARTErrors'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ARTErrors'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ARTErrors'
components:
  parameters:
    orderBy:
      name: $orderBy
      in: query
      description: Field(s) to order returned resource by, with optional direction. E.g., "fieldName desc, fieldName2"
      required: false
      style: form
      explode: true
      schema:
        type: string
    offset:
      name: offset
      in: query
      description: Specifies the number of items to skip before beginning to select the records to return.
      required: false
      style: form
      explode: true
      schema:
        type: integer
        default: 0
    limit:
      name: limit
      in: query
      description: Specifies the maximum number of items to include in the response results.
      required: false
      style: form
      explode: true
      schema:
        type: integer
        default: 20
    filter:
      name: $filter
      in: query
      description: Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter). Note, not all features of oData filter syntax are supported.
      required: false
      style: form
      explode: true
      schema:
        type: string
  schemas:
    PreappointmentPutRequest:
      type: object
      properties:
        externalId:
          type: string
          description: 'An identifier that uniquely identifies this booking in an external system identified by externalSource. If specified, must be accompanied by externalSource. '
          maxLength: 40
        externalSource:
          type: string
          description: 'An identifier that uniquely identifies the external system that is maintaining this appointment. Required if externalId is specified. '
          maxLength: 255
        customer:
          type: string
          description: 'TruckMate client ID. Identifies the customer placing this appointment. Required if customerOrderReference is specified. '
          maxLength: 10
        customerType:
          type: string
          description: Identifies the role of the party specified in customer. Required if customerOrderReference is specified. Valid values are caller, shipper, consignee, bill-to, other.
          enum:
          - caller
          - shipper
          - consignee
          - bill-to
          - other
        customerOrderReference:
          type: string
          description: Identifies this shipment uniquely from other shipments to which customer is a party. This value should be included later in an electronic shipment tender for matching up to the appointment. If specified, must be accompanied by customer and customerType.
          maxLength: 100
        appointmentType:
          type: string
          description: 'Valid values: pickup, delivery. A single value for customerOrderReference may have a separate appointment for each value of appointmentType.'
          enum:
          - pickup
          - delivery
        terminalZone:
          type: string
          description: TruckMate zone code. Identifies the zone corresponding to the terminal that will be responsible for managing this appointment.
          maxLength: 10
        earliestDateTime:
          type: string
          description: If specified, must be accompanied by latestDateTime. The beginning of the appointment window during which the freight may be delivered.
          pattern: ^\d{4}-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12]\d)((T| )([01]\d|2[0-3]):([0-5]\d):([0-5]\d))?$
        latestDateTime:
          type: string
          description: If specified, must be accompanied by earliestDateTime. The end of the appointment window during which the freight may be delivered.
          pattern: ^\d{4}-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12]\d)((T| )([01]\d|2[0-3]):([0-5]\d):([0-5]\d))?$
        status:
          type: string
          description: Allows the external system to cancel an appointment request. Valid values for this property include PENDING, MATCHED, or CANCELLED, but only CANCELLED will be accepted in a PUT request. (Changing to PENDING or MATCHED is reserved behaviour.)
          maxLength: 15
    appointment:
      type: object
      properties:
        appointmentId:
          type: integer
          description: Unique resource identifier for the appointment.
        externalId:
          type: string
          maxLength: 40
          description: An identifier that uniquely identifies this booking in an external system identified by externalSource.
        externalSource:
          type: string
          maxLength: 255
          description: An identifier that uniquely identifies the external system that is maintaining this appointment.
        customer:
          type: string
          maxLength: 10
          description: TruckMate client ID. Identifies the customer placing this appointment.
        customerType:
          type: string
          description: Identifies the role of the party specified in customer. Valid values are caller, shipper, consignee, bill-to, other.
          enum:
          - caller
          - shipper
          - consignee
          - bill-to
          - other
          - ''
        customerOrderReference:
          type: string
          maxLength: 100
          description: Identifies this shipment uniquely from other shipments to which customer is a party. This value should be included later in an electronic shipment tender for matching up to the appointment. If specified, must be accompanied by customer and customerType.
        appointmentType:
          type: string
          description: 'Valid values: pickup, delivery. A single value for customerOrderReference may have a separate appointment for each value of appointmentType.'
          enum:
          - pickup
          - delivery
          - ''
        terminalZone:
          type: string
          maxLength: 10
          description: TruckMate zone code. Identifies the zone corresponding to the terminal that will be responsible for managing this appointment.
        earliestDateTime:
          type:
          - string
          - 'null'
          description: ISO 8601-1:2019 date. The beginning of the appointment window during which the freight may be delivered.
          oneOf:
          - enum:
            - ''
          - pattern: ^\d{4}-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12]\d)((T| )([01]\d|2[0-3]):([0-5]\d):([0-5]\d))?$
        latestDateTime:
          type:
          - string
          - 'null'
          description: ISO 8601-1:2019 date. The end of the appointment window during which the freight may be delivered.
          oneOf:
          - enum:
            - ''
          - pattern: ^\d{4}-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12]\d)((T| )([01]\d|2[0-3]):([0-5]\d):([0-5]\d))?$
        status:
          type: string
          maxLength: 15
          description: Current status of the appointment pre-booking. Valid values are PENDING (not yet matched to an order), MATCHED (matched to an order by the system), and CANCELLED.
        billNumber:
          type: string
          maxLength: 20
          description: Bill number of the order to which the appointment has been matched, if applicable.
        detailLineId:
          type:
          - integer
          - 'null'
          description: Unique order identifier for the order to which the appointment has been matched, if applicable.
    ARTError:
      type: object
      properties:
        type:
          type: string
        title:
          type: string
        code:
          type: string
          description: Error code (optional, deprecated; omitted in Mobile Comm)
          deprecated: true
        description:
          type: string
          description: Human-readable description (optional, deprecated; omitted in Mobile Comm)
          deprecated: true
    ARTErrors:
      type: object
      properties:
        type:
          type: string
        title:
          type: string
        status:
          type: integer
          enum:
          - 400
          - 401
          - 403
          - 404
          - 405
          - 409
          - 429
          - 500
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ARTError'
    GetAppointments200:
      type: object
      properties:
        href:
          type: string
          readOnly: true
          description: Self-referencing URL for this resource
        offset:
          type: integer
        limit:
          type: integer
        filter:
          type: string
        sort:
          type: string
        appointments:
          type: array
          items:
            $ref: '#/components/schemas/appointment'
    PreappointmentPostRequest:
      type: object
      properties:
        externalId:
          type: string
          description: 'An identifier that uniquely identifies this booking in an external system identified by externalSource. If specified, must be accompanied by externalSource. '
          maxLength: 40
        externalSource:
          type: string
          description: An identifier that uniquely identifies the external system that is maintaining this appointment. Required if externalId is specified.
          maxLength: 255
        customer:
          type: string
          description: TruckMate client ID. Identifies the customer placing this appointment.
          maxLength: 10
        customerType:
          type: string
          description: Identifies the role of the party specified in customer. Valid values are caller, shipper, consignee, bill-to, other.
          enum:
          - caller
          - shipper
          - consignee
          - bill-to
          - other
        customerOrderReference:
          type: string
          description: Identifies this shipment uniquely from other shipments to which customer is a party. This value should be included later in an electronic shipment tender for matching up to the appointment.
          maxLength: 100
        appointmentType:
          type: string
          description: 'Valid values: pickup, delivery. A single value for customerOrderReference may have a separate appointment for each value of appointmentType.'
          enum:
          - pickup
          - delivery
        terminalZone:
          type: string
          description: TruckMate zone code. Identifies the zone corresponding to the terminal that will be responsible for managing this appointment.
          maxLength: 10
        earliestDateTime:
          type: string
          description: The beginning of the appointment window during which the freight may be delivered.
          pattern: ^\d{4}-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12]\d)((T| )([01]\d|2[0-3]):([0-5]\d):([0-5]\d))?$
        latestDateTime:
          type: string
          description: The end of the appointment window during which the freight may be delivered.
          pattern: ^\d{4}-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12]\d)((T| )([01]\d|2[0-3]):([0-5]\d):([0-5]\d))?$
      required:
      - customer
      - customerType
      - customerOrderReference
      - appointmentType
      - terminalZone
      - earliestDateTime
      - latestDateTime
  securitySchemes:
    tidJwtAuth:
      type: http
      description: A time-limited JSON Web Token generated via separate POST request using TID
      scheme: bearer
    webuserJwtAuth:
      type: http
      description: A fresh JSON Web Token expires in four hours. It can be renewed by making a GET request to /login endpoint, or generated by making a POST request to /login endpoint
      scheme: bearer
    clientApiKeyAuth:
      type: http
      description: Client API Key
      scheme: bearer
    truckmateApiKeyAuth:
      type: http
      description: TruckMate API Key
      scheme: bearer
    vendorApiKeyAuth:
      type: http
      description: Vendor API Key
      scheme: bearer
externalDocs:
  url: https://learn.transportation.trimble.com/