openapi: 3.1.0
info:
  title: CheapCargo XML API
  x-logo:
    url: https://www.cheapcargo.com/t/CheapCargo4/logo-nl.png
    altText: CheapCargo Logo
    href: https://www.cheapcargo.com
  description: |
    _Download the OpenAPI specification as [JSON](cheapcargo.json) or [YAML](cheapcargo.yaml)._
    # 🚚 CheapCargo Shipping API

    Welcome to the CheapCargo API documentation. This comprehensive guide will help you integrate our shipping services into your application for seamless logistics management.

    ## 🚀 Quick Start Guide

    1. **Get API Access**: Contact us to receive your API key
    2. **Review Authentication**: Understand our security requirements below
    3. **Test with Rate Request**: Start with a simple rate inquiry
    4. **Create Your First Shipment**: Book your first shipment
    5. **Track & Manage**: Monitor and manage your shipments

    ## 📋 What You Can Do

    - **💰 Rate Requests**: Get competitive shipping rates for your packages
    - **📦 Create Shipments**: Book shipments with trusted carriers
    - **📍 Track Shipments**: Real-time monitoring and status updates
    - **🏷️ Manage Labels**: Download and print shipping labels
    - **⚙️ Cancel Shipments**: Modify or cancel bookings when needed

    ## 🔐 Authentication

    To access our API, each request must include an authentication token and user credentials. The authentication process ensures that only authorized users can interact with the API. Ensure that the hashes in `authentication` and `password` are correctly generated and match the expected format to successfully authenticate with the API.

    ### Authentication Format

    The authentication information will look as follows in the request body:

    ```xml
    <authentication>317ad2da332f65569b172c77b9565bda</authentication>
    <user>
      <email>user@example.com</email>
      <password>51f740668efd21ab9ec1d0d382d9746e</password>
    </user>
    ```

    ### Authentication Components

    - **Authentication token** (`authentication`):
      - The authentication token is generated by creating an MD5 hash of the user's API key followed by the current date and hour in the format `YYYYMMDDHH`.
      - The time part `HH` is based on a 24-hour format with a 2-hour margin. For example, if the request is made between 13:00 and 17:59 on 15 December 2023, the time portion would be `15`, resulting in a date and time format of `2023121515`. So if the user's API key is `Vlp3RxUvRF9xDzoX`, then `Vlp3RxUvRF9xDzoX2023121515` would hash to `317ad2da332f65569b172c77b9565bda`.

    - **User email address** (`email`):
      - This is the email address associated with the user's account, used for logging in.

    - **Password hash** (`password`):
      - The password should be hashed using the MD5 algorithm. `CheapCargo` would hash to `51f740668efd21ab9ec1d0d382d9746e`.

    ## 📊 API Versioning

    To ensure optimal compatibility with our API, each request should include the version number your system is using. This versioning helps prevent issues when we make changes to the message structure or functionality of the API. By specifying the version number, your system can continue to function correctly even if updates are made on our end.

    The version number is applied on a per-method basis, meaning different methods in your system may use different version numbers.

    If no version number is provided, the API will assume you are using the latest version. However, if CheapCargo introduces changes and a new version becomes available that differs from the previous one, this could lead to errors. Therefore, we strongly recommend always including the version number in your requests to ensure consistent operation.

    ### 🔄 Latest API Versions

    | Endpoint | Current Version | Status |
    |----------|----------------|--------|
    | createShipment | `2.1` | ✅ Stable |
    | rateRequest | `2.0` | ✅ Stable |
    | getStatus | `1.9` | ✅ Stable |
    | getLabel | `1.6` | ✅ Stable |
    | cancelShipment | `2.1` | ✅ Stable |

    ## 📞 Support & Resources

    Need help? Our support team is here to assist you:

    - **📧 Email**: info@cheapcargo.com
    - **🌐 Website**: https://www.cheapcargo.com
    - **💬 Support Portal**: https://support.cheapcargo.com

    ## ⚡ Rate Limits & Best Practices

    - **Rate Limit**: 100 requests per minute per API key
    - **Timeout**: 30 seconds per request
    - **Retry Logic**: Implement exponential backoff for failed requests
  termsOfService: https://www.cheapcargo.com/Information/AlgemeneVoorwaarden
  contact:
    name: CheapCargo Support Team
    url: https://support.cheapcargo.com
    email: info@cheapcargo.com
  license:
    name: CheapCargo Terms of Service
    url: https://www.cheapcargo.com/Information/AlgemeneVoorwaarden
  version: '2.1'
servers:
  - url: https://www.cheapcargo.com/api
    description: 🌐 Production (Netherlands) - Live environment
  - url: https://www.cheapcargo.be/api
    description: 🌐 Production (Belgium) - Live environment
  - url: https://www.cheapcargo-demo.nl/api
    description: 🧪 Demo Environment (Netherlands) - Safe testing
  - url: https://www.cheapcargo-demo.be/api
    description: 🧪 Demo Environment (Belgium) - Safe testing
security:
  - ApiKeyAuth: []
tags:
  - name: Rates
    description: Get competitive shipping rates and quotes from multiple carriers
    x-displayName: 💰 Rate Requests
  - name: Shipping
    description: Create and manage shipments with trusted logistics partners
    x-displayName: 📦 Shipping Operations
  - name: Tracking
    description: Monitor shipment status and track packages in real-time
    x-displayName: 📍 Tracking & Status
  - name: Labels
    description: Download and manage shipping labels and documentation
    x-displayName: 🏷️ Labels & Documents
  - name: Management
    description: Cancel, modify, and manage your shipments
    x-displayName: ⚙️ Shipment Management
paths:
  /createShipment:
    post:
      summary: Create shipment with the given addresses and parcels
      description: |
        Creates one or more new shipments with the given pickup and delivery addresses and the given parcels.

        **Key Features:**
        - Support for multiple shipments in one request
        - Carrier selection based on rate request result
        - Automatic carrier selection based on your account preferences
        - Optional immediate payment and label generation
        - Commercial invoice support for international shipments
        - HS codes for customs declarations

        **Use Cases:**
        - Single domestic shipment
        - International shipping with customs
        - Express shipments with immediate labels
      operationId: createShipment
      tags:
        - Shipping
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/CreateShipmentRequest'
            examples:
              quickstart_shipment:
                $ref: '#/components/examples/QuickStartExample'
              basic_shipment:
                $ref: '#/components/examples/CreateShipmentRequestExample'
              international_shipment:
                $ref: '#/components/examples/InternationalShipmentExample'
      responses:
        '200':
          description: Successful response
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/CreateShipmentResponse'
              examples:
                success_response:
                  $ref: '#/components/examples/CreateShipmentResponseExample'
        default:
          description: Error response
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                error_response:
                  $ref: '#/components/examples/ErrorResponseExample'
  /rateRequest:
    post:
      summary: Request rates for the given addresses and parcels
      description: |
        Get competitive shipping rates from multiple carriers for your shipments.

        **Features:**
        - Compare rates from different carriers
        - Multiple sorting options (price, delivery time, etc.)
        - Support for various package types
        - Bulk rate requests
        - Real-time pricing

        **Perfect for:**
        - E-commerce checkout integration
        - Shipping cost estimation
        - Carrier comparison
        - Logistics planning
      operationId: rateRequest
      tags:
        - Rates
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/RateRequestRequest'
            examples:
              rate_request:
                $ref: '#/components/examples/RateRequestRequestExample'
      responses:
        '200':
          description: Successful response
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/RateRequestResponse'
              examples:
                rate_response:
                  $ref: '#/components/examples/RateRequestResponseExample'
        default:
          description: Error response
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                error_response:
                  $ref: '#/components/examples/ErrorResponseExample'
  /getStatus:
    post:
      summary: Get status information of a shipment
      description: |
        Retrieve comprehensive status information and tracking details for your shipments.

        **Information Provided:**
        - Current shipment status
        - Tracking numbers (AWB)
        - Pickup and delivery dates
        - Carrier information
        - Track & trace history
        - Problem notifications

        **Status Types:**
        - `new` - Added to cart, not paid
        - `paid` - Paid but not booked
        - `booked` - Paid, booked, and labeled
        - `cancel` - Canceled shipment
      operationId: getStatus
      tags:
        - Tracking
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/GetStatusRequest'
            examples:
              status_request:
                $ref: '#/components/examples/GetStatusRequestExample'
      responses:
        '200':
          description: Successful response
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/GetStatusResponse'
              examples:
                status_response:
                  $ref: '#/components/examples/GetStatusResponseExample'
        default:
          description: Error response
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                error_response:
                  $ref: '#/components/examples/ErrorResponseExample'
  /getLabel:
    post:
      summary: Get label URL of a shipment
      description: |
        Download shipping labels for your booked shipments.

        **Label Options:**
        - `pdf` - Standard label format
        - `pdfa4` - A4 format for easy printing

        **Features:**
        - High-quality PDF labels
        - Multiple labels per request
        - Direct download URLs
        - Print-ready formats

        **Requirements:**
        - Shipment must be in `booked` status
        - Valid order number required
      operationId: getLabel
      tags:
        - Labels
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/GetLabelRequest'
            examples:
              label_request:
                $ref: '#/components/examples/GetLabelRequestExample'
      responses:
        '200':
          description: Successful response
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/GetLabelResponse'
              examples:
                label_response:
                  $ref: '#/components/examples/GetLabelResponseExample'
        default:
          description: Error response
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                error_response:
                  $ref: '#/components/examples/ErrorResponseExample'
  /cancelShipment:
    post:
      summary: Cancel a shipment
      description: |
        Cancel one or more shipments using their order numbers.

        **Cancellation Rules:**
        - Only shipments in `new`, `paid`, or `booked` status can be canceled
        - Cancellation may incur fees depending on carrier and timing
        - Refunds processed according to our terms of service

        **What Happens:**
        - Shipment status changes to `cancel`
        - Carrier booking is canceled (if applicable)
        - Refund process initiated (if eligible)

        **Best Practices:**
        - Cancel as early as possible to avoid fees
        - Check cancellation policies per carrier
      operationId: cancelShipment
      tags:
        - Management
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/CancelShipmentRequest'
            examples:
              cancel_request:
                $ref: '#/components/examples/CancelShipmentRequestExample'
      responses:
        '200':
          description: Successful response
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/CancelShipmentResponse'
              examples:
                cancel_response:
                  $ref: '#/components/examples/CancelShipmentResponseExample'
        default:
          description: Error response
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                error_response:
                  $ref: '#/components/examples/ErrorResponseExample'
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: |
        API key authentication for CheapCargo API.

        **How to get your API key:**
        1. Contact CheapCargo support at info@cheapcargo.com
        2. Provide your business details and use case
        3. Receive your unique API key

        **How to use:**
        - Include your API key in the `X-API-Key` header
        - Generate authentication token using MD5 hash as described in the documentation

        **Note:** The actual authentication uses a combination of API key, timestamp, and user credentials as described in the Authentication section.
  schemas:
    CreateShipmentRequest:
      type: object
      properties:
        authentication:
          type: string
          format: password
          pattern: ^[a-f\d]{32}$
          description: Authentication token for verifying the request
          example: 317ad2da332f65569b172c77b9565bda
        version:
          type: string
          description: API version being used
          example: 2.1
        user:
          $ref: '#/components/schemas/User'
          description: Information about the user making the request
        shipment:
          type: array
          minItems: 1
          description: List of shipments to be processed
          items:
            type: object
            properties:
              pay:
                type: boolean
                description: _xml attribute_<br/> Whether you want to pay for the shipment immediately
                example: false
                xml:
                  attribute: true
              waitForLabel:
                type: boolean
                description: _xml attribute_<br/> Whether the server should wait for the label of this shipment to become available before responding to this request. This field only works when the field `pay` is `true`. The server waits a few seconds, but does not wait indefinitely.
                example: false
                xml:
                  attribute: true
              id:
                type: string
                description: _xml attribute_<br/> An identifier for this specific shipment, useful for distinguishing multiple shipments, as it is included again in the shipment in the response
                example: E-1887
                xml:
                  attribute: true
              orderBy:
                type: string
                description: _xml attribute_<br/> Order criterion for the rate results
                example: price
                enum:
                  - price
                  - delivery
                  - pickup
                  - carrier
                  - modality
                xml:
                  attribute: true
              sender:
                $ref: '#/components/schemas/ShipmentAddress'
                description: Information about the sender of the shipment
              receiver:
                $ref: '#/components/schemas/ShipmentAddress'
                description: Information about the receiver of the shipment
              content:
                type: object
                description: Content details of the shipment
                properties:
                  colli:
                    type: array
                    minItems: 1
                    description: List of parcels included in the shipment
                    items:
                      $ref: '#/components/schemas/Colli'
              reference:
                type: string
                description: The order reference that appears on the label and the invoice
                example: RC-2023-X
              incoterm:
                type: string
                description: International commercial terms defining the responsibilities of the buyer and seller
                example: DAP
                enum:
                  - DAP
                  - DDP
              commercialInvoiceFile:
                type: string
                format: byte
                description: Base64 encoded PDF file of the commercial invoice
                example: JVBERi0xLjAKJUVYQU1QTEUgT0YgQSBDT01NRVJDSUFMIElOVk9JQ0UgUERGIEZJTEUKJUVPRg==
              commercialInvoice:
                type: object
                properties:
                  signatoryName:
                    type: string
                    description: Name of the person signing the commercial invoice
                    example: Alex Visser
                  signatoryJobTitle:
                    type: string
                    description: Job title of the signatory
                    example: CEO
                  exportReason:
                    type: string
                    description: Reason for export
                    example: sale
                    enum:
                      - sale
                      - gift
                      - sample
                  customerInvoiceNumber:
                    type: string
                    description: Invoice number provided to the customer
                    example: 123
                  customerPurchaseOrderNumber:
                    type: string
                    description: Purchase order number from the customer
                    example: 123
                required:
                  - signatoryName
                  - signatoryJobTitle
                  - exportReason
              carrierSelect:
                type: object
                description: This element should be provided if you want to select a carrier based on results from the rate request endpoint
                properties:
                  id:
                    type: string
                    pattern: ^[a-f\d]{32}$
                    description: _xml attribute_<br/> Unique identifier for the rate
                    example: 2b6d503497d9df6ff3c1a355f855e7b2
                    xml:
                      attribute: true
                  carrierCode:
                    type: string
                    pattern: ^[A-Z][A-Z\d]{2}$
                    description: Code of the carrier
                    example: DPS
                  price:
                    type: number
                    minimum: 0.01
                    multipleOf: 0.01
                    description: Price of the rate in euros
                    example: 984.77
                  insurance:
                    type: number
                    minimum: 0.01
                    multipleOf: 0.01
                    description: Price of the insurance in euros, if insurance is desired
                    example: 42.97
                  pickup:
                    type: string
                    format: date
                    description: Pickup date for the shipment
                    example: '2024-03-15'
                  delivery:
                    type: string
                    format: date
                    description: Delivery date for the shipment
                    example: '2024-03-18'
                required:
                  - id
                  - carrierCode
                  - price
                  - pickup
                  - delivery
            required:
              - sender
              - receiver
              - content
      required:
        - authentication
        - version
        - user
        - shipment
      xml:
        name: shipments
    CreateShipmentResponse:
      type: object
      properties:
        status:
          type: string
          description: Status of the shipment request
          example: ok
        order:
          type: object
          description: Detailed information about the shipment
          properties:
            id:
              type: string
              description: An identifier for this specific shipment, useful for distinguishing multiple shipments, as it can be included in the shipment in the request
              example: E-1887
              xml:
                attribute: true
            number:
              type: string
              pattern: ^B?\d{9}$
              description: Order number of the shipment
              example: 240004885
            paid:
              type: boolean
              description: Whether the shipment is paid, booked and a label is available. This field is `true` when `status` is equal to `booked`, otherwise it is `false`.
              example: true
            details:
              type: object
              description: Status details
              properties:
                datePickup:
                  type: string
                  format: date
                  description: Pickup date of the shipment
                  example: '2023-12-15'
                dateDelivery:
                  type: string
                  format: date
                  description: Delivery date of the shipment
                  example: '2023-12-20'
                carrierCode:
                  type: string
                  pattern: ^[A-Z][A-Z\d]{2}$
                  description: Code of the carrier handling the shipment
                  example: DPS
                carrierName:
                  type: string
                  description: Name of the carrier handling the shipment
                  example: DPD Parcelshop
                status:
                  type: string
                  description: Current status of the shipment. `new` indicates that the order has been added to the shopping cart, but has not yet been paid. `paid` indicates that the order has been paid, but not yet booked and does not have a label. `booked` indicates that the order has been paid, booked and has a label. `cancel` indicates that the order has been canceled.
                  example: booked
                  enum:
                    - new
                    - paid
                    - booked
                    - cancel
                awb:
                  type: string
                  pattern: ^[A-Z\d-]+$
                  description: Tracking number, also known as an air waybill number, of the shipment. May be available if the server waited because of the field `waitForLabel`.
                  example: 5112060086107
                trackAndTrace:
                  type: string
                  format: uri
                  description: URL for tracking the shipment
                  example: https://www.cheapcargo.com/Data/TrackAndTrace?id=c3412900-ac53-423f-86dd-10eb8de25542&amp;ajax=true
                commercialInvoiceUrl:
                  type: string
                  format: uri
                  description: URL for downloading the commercial invoice as a PDF file
                  example: https://www.cheapcargo.com/Order/CommercialInvoice?orderId=c3412900-ac53-423f-86dd-10eb8de25542
                problems:
                  type: array
                  description: Detailed information about any problems encountered
                  items:
                    $ref: '#/components/schemas/Problem'
        environment:
          type: string
          description: Environment in which the request was processed, omitted in production
          example: test
      required:
        - status
        - order
      xml:
        name: shipment
    RateRequestRequest:
      type: object
      properties:
        authentication:
          type: string
          format: password
          pattern: ^[a-f\d]{32}$
          description: Authentication token for verifying the request
          example: 317ad2da332f65569b172c77b9565bda
        version:
          type: string
          description: API version being used
          example: 2
        user:
          $ref: '#/components/schemas/User'
          description: Information about the user making the request
        shipment:
          type: array
          minItems: 1
          description: List of shipments to get rates for
          items:
            type: object
            properties:
              orderBy:
                type: string
                description: Order criterion for the rate results
                example: price
                enum:
                  - price
                  - delivery
                  - pickup
                  - carrier
                  - modality
                xml:
                  attribute: true
              sender:
                $ref: '#/components/schemas/RateAddress'
                description: Information about the sender of the shipment
              receiver:
                $ref: '#/components/schemas/RateAddress'
                description: Information about the receiver of the shipment
              content:
                type: object
                description: Content details of the shipment
                properties:
                  colli:
                    type: array
                    minItems: 1
                    description: List of parcels included in the shipment
                    items:
                      $ref: '#/components/schemas/Colli'
              incoterm:
                type: string
                description: International commercial terms defining the responsibilities of the buyer and seller
                example: DAP
                enum:
                  - DAP
                  - DDP
            required:
              - sender
              - receiver
              - content
      required:
        - authentication
        - version
        - user
        - shipment
      xml:
        name: shipments
    RateRequestResponse:
      type: object
      properties:
        rates:
          type: object
          description: Rates information for the shipments
          properties:
            status:
              type: string
              description: Status of the rate request
              example: ok
            shipment:
              type: object
              description: Detailed rate information for a shipment
              properties:
                rate:
                  type: object
                  properties:
                    id:
                      type: string
                      pattern: ^[a-f\d]{32}$
                      description: Unique identifier for the rate
                      example: 2b6d503497d9df6ff3c1a355f855e7b2
                    carrierCode:
                      type: string
                      pattern: ^[A-Z][A-Z\d]{2}$
                      description: Code of the carrier providing the rate
                      example: UPF
                    carrierName:
                      type: string
                      description: Name of the carrier providing the rate
                      example: UPS Freight
                    serviceLevelUid:
                      type: string
                      format: uuid
                      description: Unique identifier for the service level
                      example: f8246332-5b82-ad1e-1465-436137530c19
                    serviceLevel:
                      type: string
                      description: Name of the service level
                      example: Express FREIGHT
                    serviceCode:
                      type: integer
                      description: Code of the service level
                      example: 96
                    serviceTime:
                      type: string
                      description: Time of the service in HH:mm format
                      example: '00:00'
                    price:
                      type: number
                      minimum: 0.01
                      multipleOf: 0.01
                      description: Price of the rate in euros
                      example: 984.77
                    weight:
                      type: number
                      description: Weight of the shipment in kilograms
                      example: 120
                    modality:
                      type: string
                      description: Type of shipping modality
                      example: express
                    info:
                      type: string
                      description: Additional information about the rate
                      example: UPS Freight - Express FREIGHT
                    shop:
                      type: boolean
                      description: Whether this shipment should be taken to a parcelshop. This means that the package will not be picked up at the pickup address.
                      example: false
                    dailyPickup:
                      type: boolean
                      description: Whether you have scheduled a daily pickup with the carrier, so no pickup request is sent to the carrier
                      example: false
                    pickup:
                      type: string
                      format: date
                      description: Pickup date for the shipment
                      example: '2024-03-15'
                    delivery:
                      type: string
                      format: date
                      description: Delivery date for the shipment
                      example: '2024-03-18'
                    surcharges:
                      type: array
                      description: List of surcharges applied to the rate
                      items:
                        type: object
                        properties:
                          name:
                            type: string
                            description: Name of the surcharge
                            example: Ophaalkosten
                          percentage:
                            type: number
                            description: Percentage of the surcharge
                            example: 33.5
                          price:
                            type: number
                            minimum: 0.01
                            multipleOf: 0.01
                            description: Price of the surcharge in euros
                            example: 137.59
                  required:
                    - id
                    - carrierCode
                    - carrierName
                    - price
                    - weight
          required:
            - status
            - shipment
        environment:
          type: string
          description: Environment in which the request was processed, omitted in production
          example: test
      required:
        - rates
      xml:
        name: rates
    GetStatusRequest:
      type: object
      properties:
        authentication:
          type: string
          format: password
          pattern: ^[a-f\d]{32}$
          description: Authentication token for verifying the request
          example: 317ad2da332f65569b172c77b9565bda
        version:
          type: string
          description: API version being used
          example: 1.9
        user:
          $ref: '#/components/schemas/User'
          description: Information about the user making the request
        status:
          type: array
          minItems: 1
          description: List of status requests
          items:
            type: object
            properties:
              orderNumber:
                type: string
                pattern: ^B?\d{9}$
                description: Order number of the shipment
                example: 240004885
      required:
        - authentication
        - version
        - user
        - status
      xml:
        name: shipments
    GetStatusResponse:
      type: object
      properties:
        status:
          type: string
          description: Status of the request
          example: ok
        label:
          type: object
          description: Information about the shipment label
          properties:
            orderNumber:
              type: string
              pattern: ^B?\d{9}$
              description: Order number of the shipment
              example: 240004885
            paid:
              type: boolean
              description: Whether the shipment is paid, booked and a label is available. This field is `true` when `status` is equal to `booked`, otherwise it is `false`.
              example: true
            details:
              type: object
              description: Status details
              properties:
                datePickup:
                  type: string
                  format: date
                  description: Pickup date of the shipment
                  example: '2024-05-15'
                dateDelivery:
                  type: string
                  format: date
                  description: Delivery date of the shipment
                  example: '2024-05-17'
                carrierCode:
                  type: string
                  pattern: ^[A-Z][A-Z\d]{2}$
                  description: Code of the carrier handling the shipment
                  example: DPS
                carrierName:
                  type: string
                  description: Name of the carrier handling the shipment
                  example: DPD Parcelshop
                totalNet:
                  type: number
                  minimum: 0.01
                  multipleOf: 0.01
                  description: Total net price of the shipment in euros
                  example: 9.8
                insurance:
                  type: number
                  minimum: 0.01
                  multipleOf: 0.01
                  description: Insurance value for the shipment in euros
                  example: 0.01
                weight:
                  type: number
                  description: Weight of the shipment in kilograms
                  example: 2
                status:
                  type: string
                  description: Current status of the shipment. `new` indicates that the order has been added to the shopping cart, but has not yet been paid. `paid` indicates that the order has been paid, but not yet booked and does not have a label. `booked` indicates that the order has been paid, booked and has a label. `cancel` indicates that the order has been canceled.
                  example: booked
                  enum:
                    - new
                    - paid
                    - booked
                    - cancel
                awb:
                  type: string
                  pattern: ^[A-Z\d-]+$
                  description: Tracking number, also known as an air waybill number, of the shipment
                  example: 5112060086107
                pickup:
                  type: object
                  description: Pickup details
                  properties:
                    plannedDate:
                      type: string
                      format: date
                      description: Date of the most recently planned pickup
                      example: '2024-05-15'
                    code:
                      type: string
                      description: Code of the most recently planned pickup
                      example: CFX-97
                  required:
                    - plannedDate
                trackAndTrace:
                  type: object
                  description: Track and trace information for the shipment
                  properties:
                    url:
                      type: string
                      format: uri
                      description: URL for tracking the shipment
                      example: https://www.cheapcargo.com/Data/TrackAndTrace?id=45cf567a-d29c-c362-4d29-90c3ca3f6a82&amp;ajax=true
                    statuses:
                      type: array
                      description: List of statuses in the track and trace history
                      items:
                        type: object
                        properties:
                          status:
                            type: string
                            description: Status of the shipment at a particular point
                            example: inTransit
                            enum:
                              - infoReceived
                              - inTransit
                              - outForDelivery
                              - attemptFail
                              - delivered
                              - availableForPickup
                              - exception
                              - expired
                              - pending
                          message:
                            type: string
                            description: Message corresponding to the status
                            example: Departed from Facility
                          occurred:
                            type: string
                            pattern: ^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$
                            description: Timestamp when the status occurred
                            example: '2023-12-15 13:37:00'
                problems:
                  type: array
                  description: Detailed information about any problems encountered
                  items:
                    $ref: '#/components/schemas/Problem'
              required:
                - datePickup
                - dateDelivery
                - carrierCode
                - carrierName
                - totalNet
                - weight
                - status
                - awb
                - pickup
                - trackAndTrace
        environment:
          type: string
          description: Environment in which the request was processed, omitted in production
          example: test
      required:
        - status
        - label
      xml:
        name: status
    GetLabelRequest:
      type: object
      properties:
        authentication:
          type: string
          format: password
          pattern: ^[a-f\d]{32}$
          description: Authentication token for verifying the request
          example: 317ad2da332f65569b172c77b9565bda
        version:
          type: string
          description: API version being used
          example: 1.6
        user:
          $ref: '#/components/schemas/User'
          description: Information about the user making the request
        labels:
          type: array
          minItems: 1
          description: List of labels to be requested
          items:
            type: object
            properties:
              orderNumber:
                type: string
                pattern: ^B?\d{9}$
                description: Order number of the shipment
                example: 240004885
              type:
                type: string
                description: Type of label to be requested
                enum:
                  - pdf
                  - pdfa4
      required:
        - authentication
        - version
        - user
        - labels
      xml:
        name: labels
    GetLabelResponse:
      type: object
      properties:
        status:
          type: string
          description: Status of the label creation request
          example: ok
        label:
          type: object
          description: Information about the created label
          properties:
            number:
              type: string
              pattern: ^B?\d{9}$
              description: Order number of the shipment
              example: 240004885
            type:
              type: string
              description: Type of the created label
              enum:
                - pdf
                - pdfa4
            url:
              type: string
              format: uri
              description: URL where the label can be downloaded
              example: https://labels.cheapcargo.com/2024/05/14/45cf567a-d29c-c362-4d29-90c3ca3f6a82/label10x21.pdf
        environment:
          type: string
          description: Environment in which the request was processed, omitted in production
          example: test
      required:
        - status
        - label
      xml:
        name: labels
    CancelShipmentRequest:
      type: object
      properties:
        authentication:
          type: string
          format: password
          pattern: ^[a-f\d]{32}$
          description: Authentication token for verifying the request
          example: 317ad2da332f65569b172c77b9565bda
        version:
          type: string
          description: API version being used
          example: 2.1
        user:
          $ref: '#/components/schemas/User'
          description: Information about the user making the request
        order:
          type: array
          minItems: 1
          description: List of cancel requests
          items:
            type: object
            properties:
              id:
                type: string
                description: _xml attribute_<br/> An identifier for this specific shipment, useful for distinguishing multiple shipments, as it is included again in the shipment in the response
                example: E-1887
                xml:
                  attribute: true
              orderNumber:
                type: string
                pattern: ^B?\d{9}$
                description: Order number of the shipment that should be canceled
                example: 240004885
            required:
              - orderNumber
      required:
        - authentication
        - version
        - user
        - order
      xml:
        name: shipments
    CancelShipmentResponse:
      type: object
      properties:
        status:
          type: string
          description: Status of the shipment request
          example: ok
        order:
          type: object
          description: Information about the canceled shipment
          properties:
            id:
              type: string
              description: _xml attribute_<br/> An identifier for this specific shipment, useful for distinguishing multiple shipments, as it can be included in the shipment in the request
              example: E-1887
              xml:
                attribute: true
            number:
              type: string
              pattern: ^B?\d{9}$
              description: Order number of the canceled shipment
              example: 240004885
          required:
            - number
        environment:
          type: string
          description: Environment in which the request was processed, omitted in production
          example: test
      required:
        - status
        - order
      xml:
        name: shipment
    User:
      type: object
      properties:
        email:
          type: string
          format: email
          description: Email address of the user
          example: user@example.com
        password:
          type: string
          format: password
          pattern: ^[a-f\d]{32}$
          description: MD5 hash of the password of the user's account
          example: 51f740668efd21ab9ec1d0d382d9746e
      required:
        - email
        - password
    ShipmentAddress:
      type: object
      properties:
        companyName:
          type: string
          description: Name of the company represented by the address
          example: Example Inc.
        contactPerson:
          type: string
          description: Name of the contact person of the address
          example: Alex Visser
        street:
          type: string
          description: Street name of the address
          example: Kerkstraat
        number:
          type: string
          description: Street number and an optional suffix of the address
          example: 4B
        extra:
          type: string
          description: Extra address line of the address
          example: Unit 42
        zipcode:
          type: string
          description: Postal code of the address
          example: 1511AN
        city:
          type: string
          description: City of the address
          example: Nijmegen
        country:
          type: string
          pattern: ^[A-Z]{2}$
          description: Country code of the address, according to ISO 3166-1 alpha-2
          example: NL
        state:
          type: string
          pattern: ^[A-Z]{2}$
          description: Subdivision code for the state (United States) or province or territory (Canada) of the address, empty for all other countries, according to ISO 3166-2
          example: null
        phone:
          type: string
          description: Telephone number of the address, preferable in international format according to E.164
          example: '+31600000000'
        email:
          type: string
          format: email
          description: Email address of the contact person
          example: user@example.com
        vat:
          type: string
          description: VAT number of the company
          example: NL123456789B01
        type:
          type: string
          description: Type of contact (e.g., business or consumer)
          example: business
          enum:
            - business
            - consumer
        eori:
          type: string
          pattern: ^[A-Z]{2}[A-Z\d]{1,15}$
          description: EORI number of the company
          example: NL123456789B01
      required:
        - contactPerson
        - street
        - zipcode
        - city
        - country
        - phone
        - type
    RateAddress:
      type: object
      properties:
        zipcode:
          type: string
          description: Postal code of the address
          example: 1511AN
        city:
          type: string
          description: City of the address
          example: Nijmegen
        country:
          type: string
          pattern: ^[A-Z]{2}$
          description: Country code of the address, according to ISO 3166-1 alpha-2
          example: NL
        state:
          type: string
          pattern: ^[A-Z]{2}$
          description: Subdivision code for the state (United States) or province or territory (Canada) of the address, empty for all other countries, according to ISO 3166-2
          example: null
        type:
          type: string
          description: Type of contact (e.g., business or consumer)
          example: business
          enum:
            - business
            - consumer
      required:
        - zipcode
        - city
        - country
        - type
    Colli:
      type: object
      properties:
        description:
          type: string
          description: Description of the parcel
          example: Test
        weight:
          type: number
          minimum: 0.01
          description: Weight of the parcel in kilograms
          example: 5
        length:
          type: number
          minimum: 0.01
          description: Length of the parcel in centimeters
          example: 120
        width:
          type: number
          minimum: 0.01
          description: Width of the parcel in centimeters
          example: 100
        height:
          type: number
          minimum: 0.01
          description: Height of the parcel in centimeters
          example: 50
        value:
          type: number
          minimum: 0.01
          multipleOf: 0.01
          description: Monetary value of the parcel in euros
          example: 100
        reference:
          type: string
          description: Reference identifier for the parcel
          example: testzending
        stackable:
          type: boolean
          description: Indicates if the pallet is stackable
          example: true
        package:
          type: string
          description: Type of package
          example: PACKAGE
          enum:
            - PACKAGE
            - PALLET
            - DOCUMENT
        quantity:
          type: integer
          description: Quantity of parcels
          example: 1
        hsCodes:
          type: array
          minItems: 0
          description: List of HS codes associated with the parcel
          items:
            type: object
            properties:
              hsCode:
                type: object
                properties:
                  hsCode:
                    type: string
                    pattern: ^(?!00)\d+$
                    description: HS code for the item in the parcel
                    example: '0207529000'
                  originCountry:
                    type: string
                    pattern: ^[A-Z]{2}$
                    description: Code of the country of origin of the item, according to ISO 3166-1 alpha-2
                    example: NL
                  description:
                    type: string
                    description: Description of the item related to the HS code
                    example: test
                  weight:
                    type: number
                    minimum: 0.01
                    description: Weight of a single item in this parcel in kilograms
                    example: 5
                  value:
                    type: number
                    minimum: 0.01
                    multipleOf: 0.01
                    description: Monetary value of a single item in this parcel in euros
                    example: 5
                  quantity:
                    type: integer
                    minimum: 1
                    description: Quantity of items under this HS code
                    example: 1
      required:
        - length
        - width
        - height
        - weight
        - package
    ErrorResponse:
      type: object
      properties:
        status:
          type: string
          description: Status of the error
          example: error
        error:
          type: object
          description: Error details
          properties:
            line:
              type: integer
              minimum: 0
              description: _xml attribute_<br/> Index of the error, starting at zero
              example: 0
              xml:
                attribute: true
            id:
              type: string
              description: _xml attribute_<br/> An identifier for the specific shipment to which this error belongs, useful for distinguishing multiple shipments
              example: E-1887
              xml:
                attribute: true
            message:
              type: string
              description: Error message
              example: The given version is unknown.
            code:
              type: integer
              maximum: -10000
              description: Error code
              example: -50102
          required:
            - line
            - message
            - code
      required:
        - status
        - error
      xml:
        name: shipment
    Problem:
      type: object
      properties:
        problem:
          type: object
          description: Information about the problem
          properties:
            code:
              type: string
              description: Code of the problem
              example: Unprocessable Entity
            message:
              type: string
              description: Description of the problem
              example: The reference should not be empty.
          required:
            - code
            - message
  examples:
    QuickStartExample:
      summary: 🚀 Quick Start - Simple Domestic Shipment
      description: A basic example to get you started with a simple domestic shipment within the Netherlands
      value: |
        <?xml version="1.0" encoding="UTF-8"?>
        <shipments>
          <authentication>317ad2da332f65569b172c77b9565bda</authentication>
          <version>2.1</version>
          <user>
            <email>user@example.com</email>
            <password>51f740668efd21ab9ec1d0d382d9746e</password>
          </user>
          <shipment pay="false" waitForLabel="false" id="E-1887" orderBy="price">
            <sender>
              <companyName>My Company</companyName>
              <contactPerson>John Sender</contactPerson>
              <street>Hoofdstraat</street>
              <number>123</number>
              <zipcode>1000AA</zipcode>
              <city>Amsterdam</city>
              <country>NL</country>
              <phone>+31612345678</phone>
              <email>sender@example.com</email>
              <type>business</type>
            </sender>
            <receiver>
              <companyName>Customer Corp</companyName>
              <contactPerson>Jane Receiver</contactPerson>
              <street>Kerkstraat</street>
              <number>456</number>
              <zipcode>2000BB</zipcode>
              <city>Rotterdam</city>
              <country>NL</country>
              <phone>+31687654321</phone>
              <email>receiver@example.com</email>
              <type>business</type>
            </receiver>
            <content>
              <colli>
                <description>Electronics package</description>
                <weight>2.5</weight>
                <length>30</length>
                <width>20</width>
                <height>15</height>
                <value>150.00</value>
                <package>PACKAGE</package>
                <quantity>1</quantity>
              </colli>
            </content>
            <reference>ORDER-2024-001</reference>
          </shipment>
        </shipments>
    CreateShipmentRequestExample:
      summary: 📦 Complete Shipment Request
      description: Comprehensive example showing all available options for creating a shipment
      value: |
        <?xml version="1.0" encoding="UTF-8"?>
        <shipments>
          <authentication>317ad2da332f65569b172c77b9565bda</authentication>
          <version>2.1</version>
          <user>
            <email>user@example.com</email>
            <password>51f740668efd21ab9ec1d0d382d9746e</password>
          </user>
          <shipment pay="false" waitForLabel="false" id="E-1887" orderBy="price">
            <sender>
              <companyName>Example Inc.</companyName>
              <contactPerson>Alex Visser</contactPerson>
              <street>Kerkstraat</street>
              <number>4B</number>
              <extra>Unit 42</extra>
              <zipcode>1511AN</zipcode>
              <city>Nijmegen</city>
              <country>NL</country>
              <phone>+31600000000</phone>
              <email>user@example.com</email>
              <vat>NL123456789B01</vat>
              <type>business</type>
              <eori>NL123456789B01</eori>
            </sender>
            <receiver>
              <companyName>Receiver Corp</companyName>
              <contactPerson>John Doe</contactPerson>
              <street>Main Street</street>
              <number>123</number>
              <zipcode>12345</zipcode>
              <city>Amsterdam</city>
              <country>NL</country>
              <phone>+31700000000</phone>
              <email>receiver@example.com</email>
              <type>business</type>
            </receiver>
            <content>
              <colli>
                <description>Test package</description>
                <weight>5</weight>
                <length>120</length>
                <width>100</width>
                <height>50</height>
                <value>100.00</value>
                <reference>testzending</reference>
                <stackable>true</stackable>
                <package>PACKAGE</package>
                <quantity>1</quantity>
              </colli>
            </content>
            <reference>RC-2023-X</reference>
            <incoterm>DAP</incoterm>
          </shipment>
        </shipments>
    CreateShipmentResponseExample:
      summary: ✅ Successful Shipment Creation
      description: Example response when a shipment is successfully created and booked
      value: |
        <?xml version="1.0" encoding="UTF-8"?>
        <shipment>
          <status>ok</status>
          <order id="E-1887">
            <number>240004885</number>
            <paid>true</paid>
            <details>
              <datePickup>2023-12-15</datePickup>
              <dateDelivery>2023-12-20</dateDelivery>
              <carrierCode>DPS</carrierCode>
              <carrierName>DPD Parcelshop</carrierName>
              <status>booked</status>
              <awb>5112060086107</awb>
              <trackAndTrace>https://www.cheapcargo.com/Data/TrackAndTrace?id=c3412900-ac53-423f-86dd-10eb8de25542&amp;ajax=true</trackAndTrace>
              <commercialInvoiceUrl>https://www.cheapcargo.com/Order/CommercialInvoice?orderId=c3412900-ac53-423f-86dd-10eb8de25542</commercialInvoiceUrl>
            </details>
          </order>
          <environment>test</environment>
        </shipment>
    InternationalShipmentExample:
      summary: 🌍 International Shipment with Customs
      description: Complete example for international shipping including customs information and HS codes
      value: |
        <?xml version="1.0" encoding="UTF-8"?>
        <shipments>
          <authentication>317ad2da332f65569b172c77b9565bda</authentication>
          <version>2.1</version>
          <user>
            <email>user@example.com</email>
            <password>51f740668efd21ab9ec1d0d382d9746e</password>
          </user>
          <shipment pay="true" waitForLabel="true" orderBy="delivery">
            <sender>
              <companyName>Dutch Exports B.V.</companyName>
              <contactPerson>Export Manager</contactPerson>
              <street>Exportlaan</street>
              <number>100</number>
              <zipcode>1234AB</zipcode>
              <city>Amsterdam</city>
              <country>NL</country>
              <phone>+31201234567</phone>
              <email>export@example.nl</email>
              <vat>NL123456789B01</vat>
              <eori>NL123456789B01</eori>
              <type>business</type>
            </sender>
            <receiver>
              <companyName>US Imports Inc.</companyName>
              <contactPerson>Import Specialist</contactPerson>
              <street>Main Street</street>
              <number>500</number>
              <zipcode>10001</zipcode>
              <city>New York</city>
              <country>US</country>
              <state>NY</state>
              <phone>+12125551234</phone>
              <email>imports@example.com</email>
              <type>business</type>
            </receiver>
            <content>
              <colli>
                <description>Electronic components</description>
                <weight>5.0</weight>
                <length>40</length>
                <width>30</width>
                <height>20</height>
                <value>500.00</value>
                <package>PACKAGE</package>
                <quantity>1</quantity>
                <hsCodes>
                  <hsCode>
                    <hsCode>8542310000</hsCode>
                    <originCountry>NL</originCountry>
                    <description>Electronic integrated circuits</description>
                    <weight>5.0</weight>
                    <value>500.00</value>
                    <quantity>1</quantity>
                  </hsCode>
                </hsCodes>
              </colli>
            </content>
            <reference>EXPORT-2024-001</reference>
            <incoterm>DDP</incoterm>
            <commercialInvoice>
              <signatoryName>Export Manager</signatoryName>
              <signatoryJobTitle>Export Manager</signatoryJobTitle>
              <exportReason>sale</exportReason>
              <customerInvoiceNumber>INV-2024-001</customerInvoiceNumber>
              <customerPurchaseOrderNumber>PO-2024-001</customerPurchaseOrderNumber>
            </commercialInvoice>
          </shipment>
        </shipments>
    RateRequestRequestExample:
      summary: 💰 Simple Rate Request
      description: Basic rate request to compare shipping options and prices
      value: |
        <?xml version="1.0" encoding="UTF-8"?>
        <shipments>
          <authentication>317ad2da332f65569b172c77b9565bda</authentication>
          <version>2.0</version>
          <user>
            <email>user@example.com</email>
            <password>51f740668efd21ab9ec1d0d382d9746e</password>
          </user>
          <shipment orderBy="price">
            <sender>
              <zipcode>1511AN</zipcode>
              <city>Nijmegen</city>
              <country>NL</country>
              <type>business</type>
            </sender>
            <receiver>
              <zipcode>12345</zipcode>
              <city>Amsterdam</city>
              <country>NL</country>
              <type>business</type>
            </receiver>
            <content>
              <colli>
                <description>Test package</description>
                <weight>5</weight>
                <length>120</length>
                <width>100</width>
                <height>50</height>
                <value>100.00</value>
                <package>PACKAGE</package>
                <quantity>1</quantity>
              </colli>
            </content>
            <incoterm>DAP</incoterm>
          </shipment>
        </shipments>
    RateRequestResponseExample:
      summary: 💰 Rate Response with Multiple Options
      description: Example response showing available shipping rates from different carriers
      value: |
        <?xml version="1.0" encoding="UTF-8"?>
        <rates>
          <rates>
            <status>ok</status>
            <shipment>
              <rate>
                <id>2b6d503497d9df6ff3c1a355f855e7b2</id>
                <carrierCode>UPF</carrierCode>
                <carrierName>UPS Freight</carrierName>
                <serviceLevelUid>f8246332-5b82-ad1e-1465-436137530c19</serviceLevelUid>
                <serviceLevel>Express FREIGHT</serviceLevel>
                <serviceCode>96</serviceCode>
                <serviceTime>00:00</serviceTime>
                <price>984.77</price>
                <weight>120</weight>
                <modality>express</modality>
                <info>UPS Freight - Express FREIGHT</info>
                <shop>false</shop>
                <dailyPickup>false</dailyPickup>
                <pickup>2024-03-15</pickup>
                <delivery>2024-03-18</delivery>
                <surcharges>
                  <surcharge>
                    <name>Ophaalkosten</name>
                    <percentage>33.5</percentage>
                    <price>137.59</price>
                  </surcharge>
                </surcharges>
              </rate>
            </shipment>
          </rates>
          <environment>test</environment>
        </rates>
    GetStatusRequestExample:
      summary: 📍 Single Status Check
      description: Check the status of a specific shipment using its order number
      value: |
        <?xml version="1.0" encoding="UTF-8"?>
        <shipments>
          <authentication>317ad2da332f65569b172c77b9565bda</authentication>
          <version>1.9</version>
          <user>
            <email>user@example.com</email>
            <password>51f740668efd21ab9ec1d0d382d9746e</password>
          </user>
          <status>
            <orderNumber>240004885</orderNumber>
          </status>
        </shipments>
    GetStatusResponseExample:
      summary: 📍 Detailed Status Information
      description: Comprehensive status response including tracking history and shipment details
      value: |
        <?xml version="1.0" encoding="UTF-8"?>
        <status>
          <status>ok</status>
          <label>
            <orderNumber>240004885</orderNumber>
            <paid>true</paid>
            <details>
              <datePickup>2024-05-15</datePickup>
              <dateDelivery>2024-05-17</dateDelivery>
              <carrierCode>DPS</carrierCode>
              <carrierName>DPD Parcelshop</carrierName>
              <totalNet>9.8</totalNet>
              <insurance>0.01</insurance>
              <weight>2</weight>
              <status>booked</status>
              <awb>5112060086107</awb>
              <pickup>
                <plannedDate>2024-05-15</plannedDate>
                <code>CFX-97</code>
              </pickup>
              <trackAndTrace>
                <url>https://www.cheapcargo.com/Data/TrackAndTrace?id=45cf567a-d29c-c362-4d29-90c3ca3f6a82&amp;ajax=true</url>
                <statuses>
                  <status>
                    <status>inTransit</status>
                    <message>Departed from Facility</message>
                    <occurred>2023-12-15 13:37:00</occurred>
                  </status>
                </statuses>
              </trackAndTrace>
            </details>
          </label>
          <environment>test</environment>
        </status>
    GetLabelRequestExample:
      summary: 🏷️ Single Label Download
      description: Download a shipping label for a booked shipment
      value: |
        <?xml version="1.0" encoding="UTF-8"?>
        <labels>
          <authentication>317ad2da332f65569b172c77b9565bda</authentication>
          <version>1.6</version>
          <user>
            <email>user@example.com</email>
            <password>51f740668efd21ab9ec1d0d382d9746e</password>
          </user>
          <labels>
            <orderNumber>240004885</orderNumber>
            <type>pdf</type>
          </labels>
        </labels>
    GetLabelResponseExample:
      summary: 🏷️ Label Download URL
      description: Response containing the download URL for the requested shipping label
      value: |
        <?xml version="1.0" encoding="UTF-8"?>
        <labels>
          <status>ok</status>
          <label>
            <number>240004885</number>
            <type>pdf</type>
            <url>https://labels.cheapcargo.com/2024/05/14/45cf567a-d29c-c362-4d29-90c3ca3f6a82/label10x21.pdf</url>
          </label>
          <environment>test</environment>
        </labels>
    CancelShipmentRequestExample:
      summary: ⚙️ Single Shipment Cancellation
      description: Cancel a specific shipment using its order number
      value: |
        <?xml version="1.0" encoding="UTF-8"?>
        <shipments>
          <authentication>317ad2da332f65569b172c77b9565bda</authentication>
          <version>2.1</version>
          <user>
            <email>user@example.com</email>
            <password>51f740668efd21ab9ec1d0d382d9746e</password>
          </user>
          <order id="E-1887">
            <orderNumber>240004885</orderNumber>
          </order>
        </shipments>
    CancelShipmentResponseExample:
      summary: ✅ Successful Cancellation
      description: Confirmation response when a shipment is successfully canceled
      value: |
        <?xml version="1.0" encoding="UTF-8"?>
        <shipment>
          <status>ok</status>
          <order id="E-1887">
            <number>240004885</number>
          </order>
          <environment>test</environment>
        </shipment>
    ErrorResponseExample:
      summary: ❌ Error Response
      description: Example of an error response when something goes wrong
      value: |
        <?xml version="1.0" encoding="UTF-8"?>
        <shipment>
          <status>error</status>
          <error line="0" id="E-1887">
            <message>The given version is unknown.</message>
            <code>-50102</code>
          </error>
        </shipment>
x-tagGroups:
  - name: Core Operations
    tags:
      - Rates
      - Shipping
  - name: Management & Tracking
    tags:
      - Tracking
      - Labels
      - Management
