openapi: 3.1.0
info:
  title: Eurosender API
  description: >-
    Take the complexity out of logistics with Eurosender’s multi-carrier
    shipping API. Connect to a global network of trusted carriers and access
    over 150 million pre-negotiated rates—all through one simple integration.


    Automate your shipping workflows, reduce costs, and scale your operations as
    your business grows. From real-time tracking to faster deliveries and better
    customer experience, the API gives you the tools to move smarter and
    faster—without the overhead.
  version: 2025-03.1
servers:
  - url: https://sandbox-api.eurosender.com
    description: Sandbox
  - url: https://api.eurosender.com
    description: Production
paths:
  /v1/pudo/list:
    post:
      operationId: api_v1pudolist_post
      tags:
        - Pudo List Endpoint
      summary: Retrieve PUDO Points
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/PudoListRequest'
      responses:
        '200':
          description: >-
            Represents the response returned by the PUDO Points endpoint. It
            includes a list of available Pick-Up Drop-Off (PUDO) locations that
            match the specified search criteria, such as location, carrier, and
            service type. Each entry in the list contains detailed information
            about a PUDO point, including its name, address, geographic
            coordinates, opening hours, and optional contact details.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PudoPointsResponse'
      deprecated: false
  /v1/countries:
    get:
      operationId: api_v1countries_get_collection
      tags:
        - Country Endpoints
      responses:
        '200':
          description: CountryResponse collection
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CountryResponse'
      summary: Retrieve the list of countries available for pickup and delivery
      description: >-
        This endpoint returns a comprehensive list of countries where Eurosender
        provides pickup and/or delivery services. It’s an essential step in
        building a user-friendly interface that only allows valid shipping
        destinations. The response includes country codes and names, which can
        be used to populate dropdowns, validate user input, or configure
        business rules dynamically. Whether you're building quoting, checkout,
        or address input workflows, integrating this endpoint ensures accuracy
        and helps prevent failed orders due to unsupported locations.
      parameters: []
      deprecated: false
  /v1/countries/{countryCode}/cities:
    get:
      operationId: api_v1countries_countryCodecities_get_collection
      tags:
        - Country Endpoints
      responses:
        '200':
          description: CityRequest collection
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CityRequest.CityResponse'
      summary: >-
        Retrieve supported cities within a specific country for pickup and
        delivery
      description: >-
        Use this endpoint to fetch all cities supported by Eurosender for pickup
        and delivery within a specific country. By providing a valid ISO 3166-1
        alpha-2 country code, you’ll receive a filtered list of serviceable
        cities — ideal for building accurate location selectors and reducing
        delivery issues. For certain countries, such as Ireland or Romania,
        specifying the exact city name or city ID is mandatory when placing an
        order. Whether this requirement applies can be verified via the
        `/v1/countries/{countryCode}/regions` endpoint. This allows your system
        to properly link cities to their administrative regions when needed.
        This endpoint ensures a seamless shipping experience by enforcing
        country-specific data requirements, reducing errors during order
        creation, and improving address validation logic across your
        integration.
      parameters:
        - name: countryCode
          in: path
          description: Two letter country code
          required: true
          deprecated: false
          allowEmptyValue: false
          schema:
            type: string
          style: simple
          explode: false
          allowReserved: false
          example: IE
      deprecated: false
  /v1/countries/{countryCode}/regions:
    get:
      operationId: api_v1countries_countryCoderegions_get_collection
      tags:
        - Country Endpoints
      responses:
        '200':
          description: RegionRequest collection
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RegionRequest.RegionResponse'
      summary: Retrieve a list of regions within a specific country
      description: >-
        The Regions Endpoint delivers detailed information about all official
        regions within a selected country, identified by its two-letter ISO
        country code. These regions represent subdivisions such as states,
        provinces, or counties, which are critical for accurate shipment
        addressing and logistics planning. Many countries require regional
        information to ensure orders are processed correctly, and this endpoint
        supports that by providing up-to-date, validated region identifiers
        (`regionId`) and names. The regions retrieved here are linked to their
        respective cities, enabling seamless address validation and hierarchy
        navigation. By leveraging this data, your system can dynamically
        validate and enrich shipping addresses, minimize errors, and comply with
        country-specific shipping requirements—ultimately ensuring a smoother,
        faster, and more reliable delivery process for your customers.
      parameters:
        - name: countryCode
          in: path
          description: Two letter country code
          required: true
          deprecated: false
          allowEmptyValue: false
          schema:
            type: string
          style: simple
          explode: false
          allowReserved: false
          example: IE
      deprecated: false
  /v1/orders:
    post:
      operationId: api_v1orders_post
      tags:
        - Order Endpoints
      responses:
        '201':
          description: OrderRequest resource created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderRequest.OrderResponse'
          links: {}
        '400':
          description: Invalid input
        '422':
          description: Unprocessable entity
      summary: Create Order
      description: >-
        The Order Creation Endpoint is the central gateway for booking shipments
        via the Eurosender API. By submitting a structured payload, your system
        can initiate a shipment request tailored to your logistics needs—whether
        it involves parcel, pallet, or full truckload transport. This endpoint
        accepts comprehensive order data, including sender and recipient
        details, parcel dimensions, service type (serviceType), and any
        value-added services (e.g., insurance, tail-lift, customs documents). It
        supports a wide range of shipping scenarios, from standard deliveries to
        complex freight movements across Europe and globally. <br><br> <b>Key
        features include:</b>

        * Full support for various service types (Standard, Priority, Express,
        Freight, FTL, LTL, Van)

        * Optional order validation prior to submission using the
        `/v1/orders/validate_creation` endpoint

        * Automatic error handling and input validation to prevent
        misconfigurations

        * Integration-ready format to fit seamlessly into your logistics
        workflows


        Once an order is successfully created, the response includes a unique
        orderId, tracking link, and current status—enabling real-time shipment
        tracking and operational visibility.
      parameters: []
      requestBody:
        description: The new OrderRequest resource
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderRequest'
        required: true
      deprecated: false
  /v1/orders/validate_creation:
    post:
      operationId: api_v1ordersvalidate_creation_post
      tags:
        - Order Endpoints
      responses:
        '200':
          description: OrderRequest resource created
          content:
            application/json:
              schema: {}
          links: {}
        '400':
          description: Invalid input
        '422':
          description: Unprocessable entity
      summary: Validate Order Creation
      description: >-
        The Order Validation Endpoint allows you to verify the structure and
        content of your order payload before finalizing shipment creation. This
        is especially useful during integration or when dynamically constructing
        orders based on user input, as it helps catch errors early and ensures
        your request complies with Eurosender’s API rules. <br><br> <b>Use this
        endpoint to:</b>

        * Confirm that all required fields (e.g., addresses, parcels, service
        type) are correctly provided

        * Detect any validation issues without creating an actual order

        * Ensure compliance with service-specific rules (e.g., pallet dimensions
        for freight, required customs data)

        * Both the validation and creation endpoints `/v1/orders` and
        `/v1/orders/validate_creation` use the same payload structure, making it
        easy to switch between them during testing and production. <br> <br>
        This endpoint is <b>optional</b> but highly recommended for improving
        API reliability and minimizing shipment errors, especially in automated
        or high-volume environments.
      parameters: []
      requestBody:
        description: The new OrderRequest resource
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderRequest'
        required: true
      deprecated: false
  /v1/orders/{orderCode}:
    get:
      operationId: api_v1orders_orderCode_get
      tags:
        - Order Endpoints
      responses:
        '200':
          description: OrderRequest resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderRequest.OrderResponse'
        '404':
          description: Resource not found
      summary: Get Order Details
      description: >-
        This endpoint allows you to fetch the current details and status of a
        specific order using its unique order code. It provides comprehensive
        information about the shipment’s progress within the Eurosender system,
        enabling you to monitor key milestones such as order confirmation,
        pickup, transit, and delivery status. <br> <br>

        <b>Key Features:</b>

        * Order Status Updates: Get the latest status and processing stage of
        your shipment to stay informed on its progress.

        * Comprehensive Order Information: Access detailed data including
        shipment contents, service type, pricing, and delivery details.

        * Customer Support Ready: Equip your support team with up-to-date order
        information for quick and accurate assistance. <br> <br> Please note,
        this endpoint reflects internal shipment statuses but does not provide
        granular, real-time tracking updates like GPS location or courier scan
        events.
      parameters:
        - name: orderCode
          in: path
          description: OrderRequest identifier
          required: true
          deprecated: false
          allowEmptyValue: false
          schema:
            type: string
          style: simple
          explode: false
          allowReserved: false
      deprecated: false
    delete:
      operationId: api_v1orders_orderCode_delete
      tags:
        - Order Endpoints
      responses:
        '204':
          description: OrderCancelRequest resource deleted
        '404':
          description: Resource not found
      summary: Cancel an existing order by its unique order code
      description: >-
        This endpoint allows you to cancel orders that are still eligible for
        modification. Please note that cancellation may not be possible once the
        order has entered the shipping process or has been completed.  The
        ability to cancel depends on the current status of the order, so it is
        recommended to verify the order state before attempting cancellation.
      parameters:
        - name: orderCode
          in: path
          description: Order code of existing order
          required: true
          deprecated: false
          allowEmptyValue: false
          schema:
            type: string
          style: simple
          explode: false
          allowReserved: false
          example: 123456-78
      deprecated: false
  /v1/orders/{orderCode}/documents/{id}:
    get:
      operationId: api_v1orders_orderCodedocuments_id_get
      tags:
        - Order Endpoints
      responses:
        '200':
          description: OrderDocumentRequest resource
          content:
            application/pdf:
              schema: {}
            x-application/zpl:
              schema: {}
        '404':
          description: Resource not found
      summary: >-
        Retrieve a specific document associated with an order. (Invoice, Labels,
        Proof Of Delivery, ...)
      description: >-
        This endpoint retrieves a document related to a specific order, such as
        shipping labels or invoices. The document content is returned as
        base64-encoded data and can be decoded for further use.

        To receive the document in the correct format, specify the desired
        content type in the `Accept` header:

        * Use `application/pdf` for PDF files

        * Use `x-application/zpl` for ZPL (Zebra Printer Language) files <br>


        Document availability may depend on the current status of the order.
        Some documents may not be immediately accessible after order creation
        and may require additional processing time.
      parameters:
        - name: orderCode
          in: path
          description: Order code of existing order
          required: true
          deprecated: false
          allowEmptyValue: false
          schema:
            type: string
          style: simple
          explode: false
          allowReserved: false
          example: 123456-78
        - name: id
          in: path
          description: ID of document (as returned by GET /v1/orders{orderCode} endpoint)
          required: true
          deprecated: false
          allowEmptyValue: false
          schema:
            type: string
          style: simple
          explode: false
          allowReserved: false
          example: invoice_INV-12-345678
      deprecated: false
  /v1/orders/{orderCode}/labels:
    get:
      operationId: api_v1orders_orderCodelabels_get
      tags:
        - Order Endpoints
      responses:
        '200':
          description: OrderLabelRequest resource
          content:
            application/pdf:
              schema: {}
            x-application/zpl:
              schema: {}
        '404':
          description: Resource not found
      summary: Retrieve shipping labels for a specific order
      description: >-
        This endpoint retrieves the shipping labels associated with a specific
        order. Labels are available only after the order is confirmed and
        processed. Each label corresponds to a single parcel in the
        order—especially important in multi-parcel shipments.

        To receive labels in a specific format, specify the desired content type
        in the `Accept` header:

        * `application/pdf`  for standard printable labels

        * `x-application/zpl`  for Zebra-compatible label printing <br>


        Labels become available after the order has been confirmed and
        processed. Attempting to access labels too early may result in an error
        or empty response.
      parameters:
        - name: orderCode
          in: path
          description: Order code of existing order
          required: true
          deprecated: false
          allowEmptyValue: false
          schema:
            type: string
          style: simple
          explode: false
          allowReserved: false
          example: 123456-78
      deprecated: false
  /v1/orders/{orderCode}/tracking:
    get:
      operationId: api_v1orders_orderCodetracking_get
      tags:
        - Order Endpoints
      responses:
        '200':
          description: TrackingDetailsResponse resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackingDetailsResponse'
        '404':
          description: Resource not found
      summary: Get real-time tracking updates for a specific order
      description: >-
        This endpoint retrieves real-time tracking information for a specific
        order, identified by the `orderCode`. Once the shipment is accepted and
        processed by the carrier, tracking data becomes available. 

        The response includes:

        * The current shipment status

        * Key milestones (e.g., picked up, in transit, delivered)

        * A chronological list of tracking events


        Tracking information helps users stay informed throughout the delivery
        lifecycle, improves visibility, and enhances the overall post-order
        experience. It's especially valuable for integrating automated shipment
        updates into your system or customer interface.
      parameters:
        - name: orderCode
          in: path
          description: Order code of existing order
          required: true
          deprecated: false
          allowEmptyValue: false
          schema:
            type: string
          style: simple
          explode: false
          allowReserved: false
          example: 123456-78
      deprecated: false
  /v1/pickup/{orderCode}:
    post:
      operationId: api_v1pickup_orderCode_post
      tags:
        - Pickup Endpoints
      responses:
        '204':
          description: PickupRequest resource created
          content:
            application/json:
              schema: {}
          links: {}
        '400':
          description: Invalid input
        '422':
          description: Unprocessable entity
      summary: Initiate pickup for orders with independent pickup
      description: >-
        If an order was placed with ` independentPickup: true` , this endpoint
        is used to explicitly trigger the creation of a pickup for that order.

        * The pickup will be scheduled based on the default `pickup.from`  and
        `pickup.to`  time windows provided during order creation.

        * If this endpoint is not called within 30 minutes after placing the
        order, the pickup is automatically created using the default pickup
        time.


        This endpoint ensures you retain control over the pickup timing when
        using `independentPickup`, allowing for flexibility in managing shipment
        preparation and pickup scheduling.
      parameters:
        - name: orderCode
          in: path
          description: Order code
          required: true
          deprecated: false
          allowEmptyValue: false
          schema:
            type: string
          style: simple
          explode: false
          allowReserved: false
          example: 123456-78
      requestBody:
        description: The new PickupRequest resource
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PickupRequest'
        required: true
      deprecated: false
  /v1/pickup/{orderCode}/availability:
    get:
      operationId: api_v1pickup_orderCodeavailability_get_collection
      tags:
        - Pickup Endpoints
      responses:
        '200':
          description: PickupAvailabilityRequest collection
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/PickupAvailabilityRequest.PickupAvailabilityResponse
      summary: Pickup Time Slot Availability
      description: >-
        Retrieves available pickup time slots for an order placed with
        `independentPickup: true`. These time slots can be used when scheduling
        a pickup via the `/v1/pickup/{orderCode}` endpoint.


        This endpoint is available only if the quote response included
        `options.serviceTypes.pickupTimeFrameSelectionPossible: true`. It
        ensures that the client selects a valid pickup window based on courier
        availability and service type constraints.


        Use this data to offer users flexible and accurate pickup scheduling
        options.
      parameters:
        - name: orderCode
          in: path
          description: Order code
          required: true
          deprecated: false
          allowEmptyValue: false
          schema:
            type: string
          style: simple
          explode: false
          allowReserved: false
          example: 123456-78
      deprecated: false
  /v1/proforma:
    post:
      operationId: api_v1proforma_post
      tags:
        - Proforma Endpoints
      responses:
        '204':
          description: ProformaRequest resource created
          content:
            application/json:
              schema: {}
          links: {}
        '400':
          description: Invalid input
        '422':
          description: Unprocessable entity
      summary: Create Proforma invoice for order
      description: Creates Proforma invoice for order
      parameters: []
      requestBody:
        description: The new ProformaRequest resource
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProformaRequest'
        required: true
      deprecated: false
  /v1/proforma/upload:
    post:
      operationId: api_v1proformaupload_post
      tags:
        - Proforma Endpoints
      responses:
        '201':
          description: ProformaFileUploadRequest resource created
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProformaFileUploadRequest.FileUploadResponse
          links: {}
        '400':
          description: Invalid input
        '422':
          description: Unprocessable entity
      summary: Uploads file for Proforma invoice generation
      description: Uploads file for Proforma invoice generation
      parameters: []
      requestBody:
        description: The new ProformaFileUploadRequest resource
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProformaFileUploadRequest'
        required: true
      deprecated: false
  /v1/quotes:
    post:
      operationId: api_v1quotes_post
      tags:
        - Quote Endpoints
      responses:
        '200':
          description: QuoteRequest resource created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteRequest.QuoteResponse'
          links: {}
        '400':
          description: Invalid input
        '422':
          description: Unprocessable entity
      summary: Get Quote
      description: >-
        The Quote endpoint allows you to obtain real-time shipping rates based
        on your specified shipment details—such as parcel dimensions, weight,
        service type, and pickup/delivery locations. This ensures you can
        present precise, up-to-date pricing options to your customers or
        internal systems before creating an order. <br> <br> <b>Key
        features:</b>

        * Supports multiple parcels and service types

        * Returns detailed pricing breakdown including optional services and
        pickup date fees

        * Enables comparison of different shipping options for optimized
        cost-efficiency
      parameters: []
      requestBody:
        description: The new QuoteRequest resource
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuoteRequest'
        required: true
      deprecated: false
components:
  schemas:
    PudoListRequest:
      type: object
      required:
        - courierId
        - country
        - distanceFromLocation
        - parcels
        - filterBySide
      properties:
        courierId:
          type: integer
          minimum: 1
        country:
          type: string
          description: Valid ISO 3166-1 alpha-2 country code
        geolocation:
          $ref: '#/components/schemas/GeolocationRequest'
        address:
          $ref: '#/components/schemas/PudoPostalAddressRequest'
        pickupDate:
          type: string
          format: date
        distanceFromLocation:
          type: integer
          minimum: 1
        parcels:
          $ref: '#/components/schemas/PudoParcelsRequest'
        resultsLimit:
          type: integer
          minimum: 1
        filterBySide:
          type: string
          enum:
            - pickupSide
            - deliverySide
          description: Filter by pickup/dropoff point side
    GeolocationRequest:
      type: object
      required:
        - latitude
        - longitude
      properties:
        latitude:
          type: number
          format: float
        longitude:
          type: number
          format: float
    PudoPostalAddressRequest:
      type: object
      properties:
        street:
          type: string
        zip:
          type: string
        city:
          type: string
    PudoParcelsRequest:
      type: object
      properties:
        parcels:
          type: array
          items:
            type: object
            properties:
              weight:
                type: number
                format: float
              parcelId:
                type: string
              length:
                type: number
                format: float
              width:
                type: number
                format: float
              height:
                type: number
                format: float
            required:
              - parcelId
              - weight
              - length
              - width
              - height
      required:
        - parcels
    PudoPointsResponse:
      type: object
      description: ''
      properties:
        points:
          type: array
          items:
            $ref: '#/components/schemas/PudoPoint'
    PudoPoint:
      type: object
      properties:
        pudoPointCode:
          type: string
        locationName:
          type: string
        street:
          type: string
        zip:
          type: string
        city:
          type: string
        geolocation:
          type: object
          properties:
            latitude:
              type: number
              format: float
            longitude:
              type: number
              format: float
        openingHours:
          type: object
          properties:
            dayNameLong:
              type: string
            dayNameShort:
              type: string
            times:
              type: string
        shippingCutOffTime:
          type:
            - string
            - 'null'
        features:
          type: array
          items:
            type: string
        pointEmail:
          type:
            - string
            - 'null'
        pointPhone:
          type:
            - string
            - 'null'
        holidayDates:
          type: array
          description: Array of strings in date-time format
          items:
            type: string
            format: date-time
    CityRequest.CityResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          description: cityId to be used in other endpoints
          example: 1341
        name:
          example: Dublin
        regionId:
          description: >-
            Region from `/v1/countries/{countryCode}/regions` endpoint, to match
            city to proper region
          example: 6
    CountryCustomFieldsResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        supportedServiceTypeIds:
          type: array
          items:
            type: integer
        customFields:
          type: array
          items:
            $ref: '#/components/schemas/CustomFieldResponse'
    CountryResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          example: 123
        code:
          example: LU
        name:
          example: Luxembourg
        requiresRegion:
          example: false
        requiresCity:
          example: false
        active:
          example: true
        isEu:
          example: true
          description: Flag if country is a member of European Union
        countryCustomFields:
          $ref: '#/components/schemas/CountryCustomFieldsResponse'
    CouponResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        couponCode:
          type: string
        discount:
          anyOf:
            - $ref: '#/components/schemas/PriceResponse'
            - type: 'null'
    CustomFieldResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        name:
          type: string
        type:
          type: string
        length:
          type:
            - integer
            - 'null'
          example: null
        required:
          type: boolean
        options:
          type: array
          items:
            type: string
        label:
          type: string
        additionalInfo:
          type: string
        placeholder:
          type:
            - string
            - 'null'
          example: null
    EnvelopeResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        parcelId:
          type:
            - string
            - 'null'
          example: null
        orderCode:
          type: string
        type:
          type: string
        weight:
          type:
            - number
            - 'null'
        content:
          type:
            - string
            - 'null'
          example: null
        value:
          type:
            - integer
            - 'null'
          example: null
        price:
          $ref: '#/components/schemas/PriceResponse'
        tracking:
          anyOf:
            - $ref: '#/components/schemas/ParcelTrackingResponse'
            - type: 'null'
    FtlRequest:
      type: object
      description: ''
      additionalProperties: false
      deprecated: false
      required:
        - parcelId
      properties:
        parcelId:
          description: >-
            Any value, currently not used, but if multiple parcels are in same
            request, each must use different value.
          example: T00001
          type: string
    FtlResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        parcelId:
          type:
            - string
            - 'null'
          example: null
        orderCode:
          type: string
        price:
          $ref: '#/components/schemas/PriceResponse'
    InsuranceResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          type: integer
        coverage:
          type: number
        text:
          type: string
        price:
          $ref: '#/components/schemas/PriceResponse'
    LtlRequest:
      type: object
      description: ''
      additionalProperties: false
      deprecated: false
      required:
        - parcelId
        - weight
        - notes
      properties:
        parcelId:
          description: Any value, currently not used
          example: T00001
          type: string
        euroPalletQuantity:
          maximum: 34
          description: Quantity of pallets, if cargo is loaded on EURO pallets (120x80)
          required: []
          example: 12
          type:
            - integer
            - 'null'
        loadingMeters:
          maximum: 13.6
          description: Loading meters, if cargo is loaded on other pallets
          required: []
          example: null
          type:
            - number
            - 'null'
        weight:
          maximum: 22000
          description: Gross weight in kilograms.
          example: 3600
          type: number
        notes:
          description: >-
            Cargo information\

            Description of cargo with approximate dimensions, weight and volume\

            Example: `12x 120x80x220cm, 300kg/pallet, total weight: 3.600kg,
            not-stackable, boxes with a spare parts packed on pallets`
          example: >-
            12x 120x80x220cm, 300kg/pallet, total weight: 3.600kg,
            not-stackable, boxes with a spare parts packed on pallets
          type: string
    LtlResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        parcelId:
          type:
            - string
            - 'null'
          example: null
        orderCode:
          type: string
        euroPalletQuantity:
          type:
            - integer
            - 'null'
          example: null
        loadingMeters:
          type:
            - number
            - 'null'
        weight:
          type:
            - number
            - 'null'
        price:
          $ref: '#/components/schemas/PriceResponse'
    NonStandardResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        parcelId:
          type:
            - string
            - 'null'
          example: null
        orderCode:
          type: string
        type:
          type: string
        weight:
          type:
            - number
            - 'null'
        length:
          type:
            - integer
            - 'null'
          example: null
        width:
          type:
            - integer
            - 'null'
          example: null
        height:
          type:
            - integer
            - 'null'
          example: null
        content:
          type:
            - string
            - 'null'
          example: null
        value:
          type:
            - integer
            - 'null'
          example: null
        price:
          $ref: '#/components/schemas/PriceResponse'
        tracking:
          anyOf:
            - $ref: '#/components/schemas/ParcelTrackingResponse'
            - type: 'null'
    OptionalServiceResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        code:
          type:
            - string
            - 'null'
          enum:
            - help_loading
            - help_unloading
            - full_loading_help
            - full_unloading_help
            - tail_lift
            - null
          example: null
        price:
          $ref: '#/components/schemas/PriceResponse'
    OrderCancelRequest:
      type: object
      description: ''
      deprecated: false
    OrderContactRequest:
      type: object
      description: ''
      additionalProperties: false
      deprecated: false
      properties:
        email:
          format: email
          description: >-
            Email address for transactional emails like order status changes,...
            If not provided, email

            address from User profile is used.
          externalDocs:
            url: https://schema.org/email
          type:
            - string
            - 'null'
          example: null
        name:
          description: Not used.
          deprecated: true
          default: null
        phone:
          description: Not used.
          deprecated: true
          default: null
        contactMethod:
          description: Not used.
          deprecated: true
          default: null
        contactCustomerType:
          description: Not used.
          deprecated: true
          default: null
    OrderCourierResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          type: integer
        shortName:
          type: string
        countryCode:
          type:
            - string
            - 'null'
          example: null
        email:
          type:
            - string
            - 'null'
          example: null
        phone:
          type:
            - string
            - 'null'
          example: null
    OrderDocumentResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          type: string
        type:
          type: string
        fileFormat:
          type: string
    OrderInsuranceResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          type: integer
        text:
          type: string
        price:
          $ref: '#/components/schemas/PriceResponse'
    OrderRegionResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          type: integer
        name:
          type: string
    OrderRequest:
      type: object
      description: ''
      additionalProperties: false
      deprecated: false
      required:
        - shipment
        - parcels
        - serviceType
        - paymentMethod
        - orderContact
        - labelFormat
      properties:
        shipment:
          $ref: '#/components/schemas/ShipmentRequest'
        parcels:
          $ref: '#/components/schemas/ParcelsRequest'
        serviceType:
          enum:
            - selection
            - flexi
            - regular_plus
            - express
            - freight
            - freight_priority
            - freight_priority_express
            - van
            - ftl
          description: Service type to use. [More on service types](#section/Service-types)
          example: regular_plus
          type: string
        serviceSubtype:
          enum:
            - door_to_door
            - door_to_shop
            - shop_to_door
            - shop_to_shop
          description: For internal use only.
          default: null
          example: door_to_door
          type:
            - string
            - 'null'
        courierTag:
          description: For internal use only.
          default: null
          type:
            - string
            - 'null'
          example: null
        courierId:
          description: Explicit courier to use, for internal use only.
          default: null
          type:
            - integer
            - 'null'
          example: null
        paymentMethod:
          enum:
            - credit
            - deferred
          description: >-
            Payment method, where `credit` is for User credits (pre-paid,
            Wallet) and `deferred`

            must be additionally approved to be enabled for use. Other payment
            methods are not

            supported. [More info on user
            credits](https://www.eurosender.com/en/usp/wallet). [More info on
            deferred

            payment](https://www.eurosender.com/en/usp/deferred-payment).
          default: deferred
          example: deferred
          type: string
        currencyCode:
          description: Only `EUR` supported.
          default: EUR
          example: EUR
          type: string
        insuranceId:
          description: >-
            Optional additional insurance ID, one of the values provided in
            Quotes responses under

            `options.serviceTypes.insurances`.
          type:
            - integer
            - 'null'
          example: null
        orderContact:
          $ref: '#/components/schemas/OrderContactRequest'
        comment:
          type:
            - string
            - 'null'
          example: null
        customerInternalReference:
          description: >-
            Reference 1 for the order that can be exported in Invoice
            specification. \

            This reference will be shown on label for some couriers.
          type:
            - string
            - 'null'
          example: null
        customerBillingReference:
          description: >-
            Reference 2 for the order that can be exported in Invoice
            specification
          type:
            - string
            - 'null'
          example: null
        labelFormat:
          description: Format in which labels will be created. Defaults to `pdf`.
          default: pdf
          example: pdf
          enum:
            - pdf
            - zpl
          type: string
    OrderRequest.OrderResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        orderCode:
          type: string
        status:
          description: >-
            Values: Pending, Order Received, Deferred Payment, Confirmed,
            Tracking, Canceled, Label Error, Awaiting Payment, Awaiting customs
            documentation, Awaiting additional payment
        serviceType:
          type: string
        language:
          type: string
        email:
          type: string
        paymentMethod:
          type: string
        currencyCode:
          type: string
        vatRate:
          type: string
        parcels:
          $ref: '#/components/schemas/ParcelsResponse'
        courier:
          $ref: '#/components/schemas/OrderCourierResponse'
        shipment:
          $ref: '#/components/schemas/ShipmentResponse'
        estimatedDeliveryTime:
          type: string
        price:
          $ref: '#/components/schemas/PriceResponse'
        discount:
          anyOf:
            - $ref: '#/components/schemas/PaymentDiscountResponse'
            - type: 'null'
        coupon:
          anyOf:
            - $ref: '#/components/schemas/CouponResponse'
            - type: 'null'
        insurance:
          anyOf:
            - $ref: '#/components/schemas/OrderInsuranceResponse'
            - type: 'null'
        isCallRequired:
          type: boolean
        isLabelRequired:
          type: boolean
        labelLink:
          type:
            - string
            - 'null'
          example: null
        labelFormat:
          type: string
        comment:
          type:
            - string
            - 'null'
          example: null
        customerInternalReference:
          type:
            - string
            - 'null'
          example: null
        customerBillingReference:
          type:
            - string
            - 'null'
          example: null
        documents:
          type: array
          items:
            $ref: '#/components/schemas/OrderDocumentResponse'
        created:
          type: string
          format: date-time
    OrderShipmentAddOnResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        code:
          type: string
          enum:
            - flexibleChanges
            - early_delivery
            - early_pickup_pickup_fee
            - same_day_pickup_fee
            - late_ordering_pickup_fee
            - weekend_pickup_fee
            - holiday_pickup_fee
        price:
          $ref: '#/components/schemas/PriceResponse'
    OtherPickupDatePriceResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        pickupDate:
          type: string
          format: date-time
        price:
          description: Price of the service for all parcels, without optional services
          $ref: '#/components/schemas/PriceResponse'
    PackageRequest:
      type: object
      description: ''
      additionalProperties: false
      deprecated: false
      required:
        - parcelId
        - quantity
        - width
        - height
        - length
        - weight
        - content
        - value
      properties:
        parcelId:
          description: >-
            Any value, currently not used, but if multiple parcels are in same
            request, each must use different value.
          example: A00001
          type: string
        quantity:
          default: 1
          example: 1
          type: integer
        width:
          description: Width in centimeters.
          example: 14
          type: integer
        height:
          description: Height in centimeters.
          example: 14
          type: integer
        length:
          description: Length in centimeters.
          example: 15
          type: integer
        weight:
          description: Weight in kilograms.
          example: 2
          type: number
        content:
          example: books
          type: string
        value:
          description: Parcel value in EUR.
          example: 150
          type: integer
    PackageResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        parcelId:
          type:
            - string
            - 'null'
          example: null
        orderCode:
          type: string
        type:
          type: string
        weight:
          type:
            - number
            - 'null'
        length:
          type:
            - integer
            - 'null'
          example: null
        width:
          type:
            - integer
            - 'null'
          example: null
        height:
          type:
            - integer
            - 'null'
          example: null
        content:
          type:
            - string
            - 'null'
          example: null
        value:
          type:
            - integer
            - 'null'
          example: null
        price:
          $ref: '#/components/schemas/PriceResponse'
        tracking:
          anyOf:
            - $ref: '#/components/schemas/ParcelTrackingResponse'
            - type: 'null'
    PalletRequest:
      type: object
      description: ''
      additionalProperties: false
      deprecated: false
      required:
        - parcelId
      properties:
        parcelId:
          description: >-
            Any value, currently not used, but if multiple parcels are in same
            request, each must use different value.
          example: B00001
        quantity:
          default: 1
          example: 1
        width:
          description: Width in centimeters.
          example: 80
        height:
          description: Height in centimeters.
          example: 100
        length:
          description: Length in centimeters.
          example: 120
        weight:
          description: Weight in kilograms.
          example: 50
        content:
          example: tires
        value:
          description: Parcel value in EUR.
          example: 500
        isStackable:
          description: Pallets that can be stacked, whether they are full or empty
          default: true
          example: true
    PalletResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        parcelId:
          type:
            - string
            - 'null'
          example: null
        orderCode:
          type: string
        type:
          type: string
        weight:
          type:
            - number
            - 'null'
        length:
          type:
            - integer
            - 'null'
          example: null
        width:
          type:
            - integer
            - 'null'
          example: null
        height:
          type:
            - integer
            - 'null'
          example: null
        content:
          type:
            - string
            - 'null'
          example: null
        value:
          type:
            - integer
            - 'null'
          example: null
        price:
          $ref: '#/components/schemas/PriceResponse'
        tracking:
          anyOf:
            - $ref: '#/components/schemas/ParcelTrackingResponse'
            - type: 'null'
        isStackable:
          type: boolean
    ParcelLevelOptionalServiceResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        code:
          description: >-
            value to be used in request under `parcels.vans.optionalServices`.
            Details on options are documented there.
          type: string
          enum:
            - help_loading
            - help_unloading
            - full_loading_help
            - full_unloading_help
            - tail_lift
        price:
          $ref: '#/components/schemas/PriceResponse'
    ParcelResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        parcelId:
          type: string
    ParcelTrackingResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        number:
          type: string
        url:
          type: string
        deliveryStatus:
          type:
            - string
            - 'null'
          example: null
    ParcelsRequest:
      type: object
      description: ''
      additionalProperties: false
      deprecated: false
      properties:
        envelopes:
          description: >-
            `envelopes` is named 'Documents' on website. [More
            info](https://www.eurosender.com/en/s/services/envelope)
          default: []
        packages:
          type: array
          items:
            $ref: '#/components/schemas/PackageRequest'
        pallets:
          type: array
          items:
            $ref: '#/components/schemas/PalletRequest'
        vans:
          description: Can be used only with serviceType `van`
          type: array
          items:
            $ref: '#/components/schemas/VanRequest'
        ltls:
          maxItems: 1
          description: |-
            LTL: Less than truckload\
            Only one allowed per shipment, can't be mixed with FTL\
            Can be used only with serviceType `ftl`
          type: array
          items:
            $ref: '#/components/schemas/LtlRequest'
        ftls:
          description: |-
            FTL: Full truckload\
            Can't be mixed with LTL\
            Can be used only with serviceType `ftl`
          type: array
          items:
            $ref: '#/components/schemas/FtlRequest'
    ParcelsResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        envelopes:
          type: array
          items:
            $ref: '#/components/schemas/EnvelopeResponse'
        packages:
          type: array
          items:
            $ref: '#/components/schemas/PackageResponse'
        pallets:
          type: array
          items:
            $ref: '#/components/schemas/PalletResponse'
        vans:
          type: array
          items:
            $ref: '#/components/schemas/VanResponse'
        ltls:
          type: array
          items:
            $ref: '#/components/schemas/LtlResponse'
        ftls:
          type: array
          items:
            $ref: '#/components/schemas/FtlResponse'
        nonStandard:
          type: array
          items:
            $ref: '#/components/schemas/NonStandardResponse'
    PaymentDiscountResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        rate:
          type: string
        discount:
          $ref: '#/components/schemas/PriceResponse'
    PaymentMethodResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        code:
          enum:
            - credit
            - deferred
          example: deferred
          type: string
        paymentDiscount:
          anyOf:
            - $ref: '#/components/schemas/PaymentDiscountResponse'
            - type: 'null'
    PickupAvailabilityRequest.PickupAvailabilityResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        pickupDate:
          type:
            - string
            - 'null'
          format: date-time
          example: null
        timeFrom:
          example:
            - '09:00'
            - '09:30'
            - '10:00'
            - '10:30'
            - '11:00'
        timeTo:
          example:
            - '13:00'
            - '13:30'
            - '14:00'
            - '14:30'
    PickupDateFeeResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        code:
          description: Reason for fee
          type:
            - string
            - 'null'
          enum:
            - same_day
            - late_ordering
            - weekend
            - holiday
            - early_pickup
            - null
          example: null
        price:
          description: Price of fee
          $ref: '#/components/schemas/PriceResponse'
    PickupRequest:
      type: object
      description: ''
      additionalProperties: false
      deprecated: false
      properties:
        pickupTimeFrom:
          description: >-
            Pickup time availability from, available time slots can be retrieved
            from `Pickup availability`

            endpoint. Example value: `'09:00'`

            Setting this value is possible only if `Quote` endpoint returned

            `options.serviceTypes.pickupTimeFrameSelectionPossible: true`
          example: '09:00'
          type:
            - string
            - 'null'
        pickupTimeTo:
          description: >-
            Pickup time availability to, available time slots can be retrieved
            from `Pickup availability`

            endpoint. Example value: `'14:00'`

            Setting this value is possible only if `Quote` endpoint returned

            `options.serviceTypes.pickupTimeFrameSelectionPossible: true`
          example: '14:00'
          type:
            - string
            - 'null'
    PriceComponentsResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        currencyCode:
          default: EUR
          example: EUR
          type: string
        gross:
          type: number
        net:
          type: number
    PriceResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        original:
          $ref: '#/components/schemas/PriceComponentsResponse'
        converted:
          anyOf:
            - $ref: '#/components/schemas/PriceComponentsResponse'
            - type: 'null'
    ProformaContactPersonRequest:
      type: object
      description: ''
      additionalProperties: false
      deprecated: false
      properties:
        contactPerson:
          type: string
        companyName:
          type:
            - string
            - 'null'
          example: null
        phone:
          type: string
        email:
          type: string
        street:
          type: string
        zip:
          type: string
        city:
          type: string
        country:
          type: string
        vat:
          type:
            - string
            - 'null'
          example: null
        eoriNumber:
          type:
            - string
            - 'null'
          example: null
    ProformaFileUploadRequest:
      type: object
      description: ''
      additionalProperties: false
      deprecated: false
      properties:
        name:
          type: string
        mimetype:
          type: string
        content:
          type: string
    ProformaFileUploadRequest.FileUploadResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        hashName:
          description: Id of uploaded document
          example: 63e26b8ad79460c8dde7a8b745a19a201686296879.pdf
    ProformaItemRequest:
      type: object
      description: ''
      additionalProperties: false
      deprecated: false
      properties:
        description:
          type: string
        country:
          type: string
        quantity:
          type: integer
        weight:
          type: number
        value:
          type: integer
        hsCode:
          type:
            - string
            - 'null'
          example: null
    ProformaRequest:
      type: object
      description: ''
      additionalProperties: false
      deprecated: false
      properties:
        shipper:
          $ref: '#/components/schemas/ProformaContactPersonRequest'
        receiver:
          $ref: '#/components/schemas/ProformaContactPersonRequest'
        invoices:
          description: Collection of uploaded commercial invoices
        items:
          type: array
          items:
            $ref: '#/components/schemas/ProformaItemRequest'
        orderCode:
          description: Code of order for which Proforma invoice is submitted
          example: 123456-78
        reason:
          type: string
          enum:
            - '1': gift
            - '2': commercial
            - '3': personal_use
            - '4': repair
            - '5': return_after_repair
            - '6': sample
        currency:
          type: string
    QuoteOptionsResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        serviceTypes:
          type: array
          items:
            $ref: '#/components/schemas/ServiceTypeResponse'
        parcelLevelOptionalServices:
          description: >-
            Prices for optional services on parcel level, to be used in
            `parcels.vans.optionalServices`
          type: array
          items:
            $ref: '#/components/schemas/ParcelLevelOptionalServiceResponse'
        generalTermsAndConditionsLink:
          type:
            - string
            - 'null'
          example: null
        paymentMethods:
          description: >-
            Supported/available payment methods with potential discount, if
            supported.
          type: array
          items:
            $ref: '#/components/schemas/PaymentMethodResponse'
    QuoteOrderResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        totalPrice:
          $ref: '#/components/schemas/PriceResponse'
        insuranceId:
          type:
            - integer
            - 'null'
          example: null
        parcels:
          type: array
          items:
            $ref: '#/components/schemas/ParcelResponse'
        paymentDiscount:
          anyOf:
            - $ref: '#/components/schemas/PaymentDiscountResponse'
            - type: 'null'
        addOns:
          description: Extra addons that were selected
          enum:
            - flexibleChanges
            - early_delivery
          default: []
        serviceType:
          type: string
        serviceSubtype:
          type: string
        minPickupDate:
          type: string
          format: date-time
        estimatedDeliveryTime:
          type: string
        courierId:
          type:
            - integer
            - 'null'
          example: null
        courierTag:
          type:
            - string
            - 'null'
          example: null
        calculatedDistance:
          description: >-
            Distance in kilometers, calculated based on pickup and delivery
            address, for distance-based services.\

            If actual distance will be different, price will be adjusted and
            customer will be contacted before pickup.
          type:
            - number
            - 'null'
    QuoteRequest:
      type: object
      description: ''
      additionalProperties: false
      deprecated: false
      required:
        - shipment
        - parcels
        - paymentMethod
      properties:
        shipment:
          description: Shipment details (where and when to ship)
          $ref: '#/components/schemas/ShipmentRequest'
        parcels:
          description: Parcels details (what to ship)
          $ref: '#/components/schemas/ParcelsRequest'
        paymentMethod:
          enum:
            - credit
            - deferred
          description: >-
            Payment method, where `credit` is for User credits (pre-paid,
            Wallet)

            and `deferred` must be additionally approved to be enabled for use.
            Other payment methods are not

            supported.
          default: deferred
          example: credit
          type: string
        currencyCode:
          enum:
            - EUR
          description: Only `EUR` supported.
          default: EUR
          example: EUR
          type: string
        serviceType:
          enum:
            - selection
            - flexi
            - regular_plus
            - express
            - freight
            - freight_priority
            - freight_priority_express
            - van
            - ftl
          description: Service type to use. [More on service types](#section/Service-types)
          example: selection
          type: string
        serviceSubtype:
          enum:
            - door_to_door
            - door_to_shop
            - shop_to_door
            - shop_to_shop
          description: For internal use only.
          default: null
          example: door_to_door
          type:
            - string
            - 'null'
        courierTag:
          description: For internal use only.
          type:
            - string
            - 'null'
          example: null
        preferredCouriersOnly:
          description: For internal use only
          default: false
          type: boolean
        courierId:
          description: Explicit courier to use, for internal use only.
          type:
            - integer
            - 'null'
          example: null
        insuranceId:
          description: >-
            Additional insurance ID, applicable for selected service type, one
            of the values from Quote

            response under `options.serviceTypes[].insurances[]`
          type:
            - integer
            - 'null'
          example: null
        labelFormat:
          description: >-
            Format in which labels will be created. Defaults to `pdf`. `zpl`
            format is not available for all couriers.
          enum:
            - pdf
            - zpl
          default: null
          type:
            - string
            - 'null'
          example: null
    QuoteRequest.QuoteResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        options:
          $ref: '#/components/schemas/QuoteOptionsResponse'
        order:
          anyOf:
            - $ref: '#/components/schemas/QuoteOrderResponse'
            - type: 'null'
        warnings:
          type: array
          items:
            $ref: '#/components/schemas/QuoteWarningResponse'
    QuoteServiceTypeAddOnResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        code:
          type: string
          enum:
            - flexibleChanges
            - early_delivery
            - same_day_pickup_fee
            - next_day_pickup_fee
        price:
          $ref: '#/components/schemas/PriceResponse'
    QuoteWarningResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        code:
          type: string
        message:
          type: string
        parameterPath:
          type:
            - string
            - 'null'
          example: null
    RegionRequest.RegionResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          description: regionId to be used in other endpoints
          example: 6
        name:
          example: County Dublin
        code:
          description: >-
            regionCode to be used in other endpoints. This field is available
            only for some countries

            (Italy, USA, Canada). Example value: `AC` for region `Ancona` in
            Italy
          example: null
    ServiceTypeResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        name:
          enum:
            - selection
            - flexi
            - regular_plus
            - express
            - freight
            - freight_priority
            - freight_priority_express
            - van
            - ftl
          example: selection
          type: string
        serviceSubtype:
          type: string
        minPickupDate:
          description: Minimum pickup date for that service type
          type: string
          format: date-time
        isCallRequired:
          type: boolean
        isLabelRequired:
          type: boolean
        edt:
          description: Estimated delivery days
          type: string
        price:
          description: >-
            Price to deliver requested `parcels` between `pickupAddress` and
            `deliveryAddress`, without potentially selected

            optional services and without pickup date fee.
          $ref: '#/components/schemas/PriceResponse'
        pickupDateFees:
          description: >-
            Price can be affected by selection of pickup date on some services.\

            In such case, here is a reason and price for pickup date fee, to be
            added on top of `serviceType.price`.\

            `order.totalPrice` includes it already.
          type: array
          items:
            $ref: '#/components/schemas/PickupDateFeeResponse'
        insurances:
          description: >-
            Available insurances, including auto-activated free insurance (when
            applicable)
          type: array
          items:
            $ref: '#/components/schemas/InsuranceResponse'
        pickupExcludedDates:
          description: >-
            Dates on which pickup is not possible (holidays,...), so they can't
            be used in `pickupDate`
          type: array
          items:
            type: string
            format: date-time
        addOns:
          type: array
          items:
            $ref: '#/components/schemas/QuoteServiceTypeAddOnResponse'
        courierTermsAndConditionsLink:
          type:
            - string
            - 'null'
          example: null
        courierId:
          type: integer
        pickupTimeFrameSelectionPossible:
          description: >-
            For this service type and courier, it is possible to use
            `pickupTimeFrom`/`pickupTimeTo` on `Pickup` endpoint.
          type: boolean
        otherPickupDatePrices:
          description: >-
            Service price for additional few days, to be able to select the one
            without potential pickup date fee.\

            This is returned only for service type `van`.
          type: array
          items:
            $ref: '#/components/schemas/OtherPickupDatePriceResponse'
    ShipmentAddressRequest:
      type: object
      description: ''
      additionalProperties: false
      deprecated: false
      required:
        - country
      properties:
        country:
          description: Country code in ISO 3166-1 alpha-2
          example: LU
        zip:
          description: ZIP code
          example: '1911'
        city:
          description: >-
            City name, belonging to ZIP code. For cases where providing exact
            city name is mandatory

            (like Ireland or Romania), it can be retrieved from endpoint

            `/v1/countries/{countryCode}/cities`. This condition depends on
            Country, flag for this is

            available at endpoint `/v1/countries`.

            If `cityId` is provided, this field can be empty.
          example: Luxembourg
        cityId:
          description: >-
            ID of the City for cases where providing exact city is mandatory
            (like Ireland or Romania), it can

            be retrieved from endpoint `/v1/countries/{countryCode}/cities`.
            This condition depends on Country, flag

            for this is available at endpoint `/v1/countries`. If exact city
            name is provided in field `city`, this

            field can be empty.

            Example value: `1341` for `Dublin` in region `County Dublin` in
            Ireland
          default: null
        street:
          description: Street name with house number
          example: 9 Rue du Laboratoire
          type:
            - string
            - 'null'
        additionalInfo:
          description: Not used.
          deprecated: true
          default: null
        region:
          description: >-
            Region name. For cases where providing region (name, code or ID) is
            mandatory,

            like Ireland, Romania, Italy, USA, Canada,

            it can be retrieved from endpoint
            `/v1/countries/{countryCode}/regions`.

            This condition depends on Country, flag for this is available at
            endpoint `/v1/countries`.

            If `regionCode` or `regionId` is provided, this field can be empty.

            Example value: `County Dublin` in Ireland
          default: null
        regionCode:
          description: >-
            Region code. For cases where providing region (name, code or ID) is
            mandatory,

            like Ireland, Romania, Italy, USA, Canada,

            it can be retrieved from endpoint
            `/v1/countries/{countryCode}/regions`.

            This condition depends on Country, flag for this is available at
            endpoint `/v1/countries`.

            If `region` or `regionId` is provided, this field can be empty.

            This field is supported only for some countries (Italy, USA,
            Canada).

            Example value: `AC` for region `Ancona` in Italy
          default: null
        regionId:
          description: >-
            Region ID. For cases where providing region (name, code or ID) is
            mandatory,

            like Ireland, Romania, Italy, USA, Canada,

            it can be retrieved from endpoint
            `/v1/countries/{countryCode}/regions`.

            This condition depends on Country, flag for this is available at
            endpoint `/v1/countries`.

            If `region` or `regionCode` is provided, this field can be empty.

            Example value: `6` for region `County Dublin` in Ireland
          default: null
        timeZoneName:
          description: Not used.
          deprecated: true
          default: null
        customFields:
          description: >-
            Additional address fields that can be provided for some countries,
            like

            `doorbell` for Germany. Availability of the fields and flag

            if optional or required can be retrieved from endpoint
            `/v1/countries`.
          default: []
        pudoPointCode:
          description: For internal use only
          type:
            - string
            - 'null'
          example: null
        customerPudoNumber:
          description: For internal use only
          type:
            - string
            - 'null'
          example: null
    ShipmentAddressResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        street:
          type: string
        zip:
          type: string
        city:
          type: string
        region:
          anyOf:
            - $ref: '#/components/schemas/OrderRegionResponse'
            - type: 'null'
        country:
          type: string
    ShipmentContactRequest:
      type: object
      description: ''
      additionalProperties: false
      deprecated: false
      properties:
        name:
          description: Person or company name in a role of pickup/delivery contact
          example: Eurosender SARL
        email:
          format: email
          description: >-
            Email address that can be used by courier for communication
            regarding pickup/delivery
          externalDocs:
            url: https://schema.org/email
          example: name@example.com
        phone:
          description: >-
            Phone number in international format (E.164) that can be used by
            courier for communication

            regarding pickup/delivery
          example: '+442031292884'
    ShipmentContactResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        name:
          type: string
        phone:
          type: string
    ShipmentRequest:
      type: object
      description: ''
      additionalProperties: false
      deprecated: false
      required:
        - pickupAddress
        - deliveryAddress
      properties:
        pickupAddress:
          $ref: '#/components/schemas/ShipmentAddressRequest'
        deliveryAddress:
          $ref: '#/components/schemas/ShipmentAddressRequest'
        pickupDate:
          description: >-
            Pickup date, can be empty to retrieve first possible date
            (`minPickupDate`).

            Time part is ignored.

            Value must be in RFC3339 format (for example `2023-04-04T00:00:00Z`)
          type: string
          format: date-time
          default: '2023-04-04T00:00:00Z'
        pickupType:
          description: >-
            Specifies if new pickup needs to be scheduled
            (`new_pickup_request`),

            or there is already pre-arranged regular pickup scheduled
            (`scheduled_pickup`),

            or there is no need for pickup because the shipment will be dropped
            off at a courier location (`drop_off`).\

            Not supported (ignored) on some couriers.
          default: new_pickup_request
          example: new_pickup_request
          type:
            - string
            - 'null'
          enum:
            - new_pickup_request
            - scheduled_pickup
            - drop_off
            - null
        independentPickup:
          description: >-
            Pickup request with desires pickup time frame will be called
            independently (in 30 minutes) by using `Pickup` endpoint.
          type: boolean
          default: false
          example: false
        pickupContact:
          description: Pickup contact, not needed for `Quote`, but required for `Order`.
          anyOf:
            - $ref: '#/components/schemas/ShipmentContactRequest'
            - type: 'null'
        deliveryContact:
          description: Delivery contact, not needed for `Quote`, but required for `Order`.
          anyOf:
            - $ref: '#/components/schemas/ShipmentContactRequest'
            - type: 'null'
        addOns:
          description: >-
            Extra addons that can be selected/activated if supported (returned
            by `Quote`)
          enum:
            - flexibleChanges
            - early_delivery
          default: []
    ShipmentResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        pickupAddress:
          $ref: '#/components/schemas/ShipmentAddressResponse'
        pickupContact:
          $ref: '#/components/schemas/ShipmentContactResponse'
        deliveryAddress:
          $ref: '#/components/schemas/ShipmentAddressResponse'
        deliveryContact:
          $ref: '#/components/schemas/ShipmentContactResponse'
        pickupDate:
          type: string
          format: date-time
        pickupType:
          type: string
          enum:
            - new_pickup_request
            - scheduled_pickup
            - drop_off
        addOns:
          type: array
          items:
            $ref: '#/components/schemas/OrderShipmentAddOnResponse'
        routeDistance:
          description: >-
            Distance in kilometers, initially calculated based on pickup and
            delivery address, for distance-based services.\

            If actual distance will be different, price will be adjusted and
            customer will be contacted before pickup.
          type:
            - number
            - 'null'
    TrackingDetailsCheckpoint:
      type: object
      description: ''
      deprecated: false
      properties:
        eventDate:
          type: string
          format: date-time
        status:
          type: string
          enum:
            - InfoReceived
            - InTransit
            - OutForDelivery
            - AttemptFail
            - Delivered
            - AvailableForPickup
            - Exception
            - Expired
            - Pending
        substatus:
          type: string
        location:
          type:
            - string
            - 'null'
          example: null
        countryCode:
          type:
            - string
            - 'null'
          example: null
        message:
          type:
            - string
            - 'null'
          example: null
    TrackingDetailsParcel:
      type: object
      description: ''
      deprecated: false
      properties:
        parcelId:
          type:
            - string
            - 'null'
          example: null
        orderCode:
          type: string
        trackingNumber:
          type: string
        currentStatus:
          type: string
          enum:
            - InfoReceived
            - InTransit
            - OutForDelivery
            - AttemptFail
            - Delivered
            - AvailableForPickup
            - Exception
            - Expired
            - Pending
        currentSubstatus:
          type: string
        updatedDate:
          type: string
          format: date-time
        expectedDeliveryDate:
          type:
            - string
            - 'null'
          format: date-time
          example: null
        pickupDate:
          type:
            - string
            - 'null'
          format: date-time
          example: null
        deliveryDate:
          type:
            - string
            - 'null'
          format: date-time
          example: null
        signedBy:
          type:
            - string
            - 'null'
          example: null
        checkpoints:
          type: array
          items:
            $ref: '#/components/schemas/TrackingDetailsCheckpoint'
    TrackingDetailsResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        orderCode:
          type: string
        parcels:
          type: array
          items:
            $ref: '#/components/schemas/TrackingDetailsParcel'
    VanRequest:
      type: object
      description: ''
      additionalProperties: false
      deprecated: false
      required:
        - parcelId
        - vanType
      properties:
        parcelId:
          description: >-
            Any value, currently not used, but if multiple parcels are in same
            request, each must use different value.
          example: A00001
          type: string
        vanType:
          description: >-
            Van type, where `small_van` is for box van and `large_van` is for
            curtain-side van.
          type: string
          enum:
            - small_van
            - large_van
        optionalServices:
          description: >-
            List of requested optional services.\

            Prices for them are in quotes response under
            `options.parcelLevelOptionalServices`.\

            Some services can be used only on some van types, and some cannot be
            used in parallel.\

            List of possible values:

            - `help_loading` Loading assistance, driver will help you load the
            van (up to 20kg per item).\
               Can't be used together with `full_loading_help`
            - `help_unloading` Unloading assistance, driver will help you unload
            the van (up to 20kg per item).\
               Can't be used together with `full_unloading_help`
            - `full_loading_help` Full loading service, driver will load the van
            for you (up to 20kg per item).\
               Can't be used together with `help_loading`
            - `full_unloading_help` Full unloading service, driver will unload
            the van for you (up to 20kg per item).\
               Can't be used together with `help_unloading`
            - `tail_lift` Tail-Lift, for easy handling of heavy items (maximum
            van capacity up to 700Kg).\
               Can be used only on vanType `large_van`.
          type: array
          items:
            type: string
            enum:
              - help_loading
              - help_unloading
              - full_loading_help
              - full_unloading_help
              - tail_lift
    VanResponse:
      type: object
      description: ''
      deprecated: false
      properties:
        parcelId:
          type:
            - string
            - 'null'
          example: null
        orderCode:
          type: string
        vanType:
          type: string
          enum:
            - small_van
            - large_van
        optionalServices:
          type: array
          items:
            $ref: '#/components/schemas/OptionalServiceResponse'
        price:
          $ref: '#/components/schemas/PriceResponse'
  responses: {}
  parameters: {}
  examples: {}
  requestBodies: {}
  headers: {}
  securitySchemes:
    x_api_key:
      type: apiKey
      description: Value for the x-api-key header parameter.
      name: x-api-key
      in: header
security:
  - x_api_key: []
tags:
  - name: Quote Endpoints
    description: >-
      The Quote endpoint allows you to obtain accurate and up-to-date pricing
      for your desired shipment based on package details, service types, and
      other criteria. By providing comprehensive shipment information, you can
      receive tailored quotes reflecting available shipping options, estimated
      costs, and any applicable fees.

      This powerful feature enables businesses to compare different shipping
      methods, optimize cost-efficiency, and provide transparent pricing to end
      users — all through seamless API integration. Whether you’re shipping
      parcels, pallets, or freight, the Quote endpoint delivers fast, reliable
      data essential for making informed logistics decisions.


      <b>Key benefits include:</b>



      * Real-time pricing based on shipment details and service types

      * Access to multiple shipping options with clear cost breakdowns

      * Support for additional services and date-based price adjustments

      * Foundation for subsequent order creation and validation workflows


      Use this endpoint to streamline your shipping process and empower your
      customers with immediate, transparent shipping quotes.
  - name: Order Endpoints
    description: >-
      The Order section of the Eurosender API offers a full set of endpoints to
      manage every step of the shipping lifecycle. From orders creation and rder
      validating orders, scheduling pickups, accessing shipping documents, and
      tracking deliveries—this section provides the tools needed to integrate
      smooth, automated logistics operations into your system.


      <b>Key capabilities include:</b>


      * <b>Order Creation:</b> Easily create orders and generate shipment labels

      * <b>Order Validation:</b> Validate your order data before submission to
      prevent errors

      * <b>Pickup Scheduling:</b> Schedule and manage pickup timeframes for your
      shipments

      * <b>Order Cancellation:</b> Cancel orders when allowed, before they enter
      shipping

      * <b>Order Tracking:</b> Monitor shipment status and delivery progress in
      real time

      * <b>Document Retrieval:</b> Access essential documents such as invoices,
      labels, and tracking codes

      * <b>Proforma Invoice Management:</b> Create and upload proforma invoices
      for customs clearance

      * <b>Order Details Retrieval:</b> Retrieve comprehensive status and
      information for a specific order using its order code.


      By leveraging these endpoints, businesses can automate workflows, reduce
      manual errors, and ensure efficient, reliable delivery service for their
      customers.
  - name: Proforma Endpoints
    description: >-
      The Proforma endpoints enable you to handle all necessary customs
      documentation required for shipments involving exports or imports.  When
      an order status indicates `Awaiting customs documentation`, you can use
      these endpoints to create and upload proforma invoices, ensuring smooth
      customs clearance and uninterrupted shipment processing.

      <br> <br>   This functionality is critical for compliance with
      international shipping regulations and helps avoid delays at customs by
      providing accurate and timely documentation. You can create proforma
      documents via the API, submit the required data, and upload PDF invoices
      encoded in base64 format when necessary.


      <b>Key features include:</b>

      * Creating and managing proforma invoices tied to specific orders.

      * Uploading PDF proforma invoices securely through the API.

      * Ensuring compliance with customs requirements to prevent shipment
      delays.

      * Streamlining the documentation workflow as part of your shipping process
      automation.


      Integrating proforma management into your system guarantees a seamless
      customs clearance experience, saving time and reducing administrative
      overhead.
  - name: Country Endpoints
    description: >-
      The Country endpoints deliver comprehensive geographic data necessary for
      precise and compliant shipment handling with the Eurosender API. These
      endpoints return lists of supported countries, cities, and regions used to
      define shipment origins and destinations.


      Certain countries—such as Ireland, Romania, Italy, the USA, and
      Canada—require specifying the region (by ID, name, or code) when placing
      orders. For some of these countries, providing the exact city name or city
      ID is also mandatory. These requirements are flagged within the country
      data payload to guide proper order submission.


      The response also includes associated region IDs accessible via the
      `/v1/countries/{countryCode}/regions` endpoint, allowing for structured
      regional selection.


      Using these endpoints helps ensure your system validates location data
      accurately, prevents order errors, and complies with local shipping
      regulations.
  - name: Pickup Endpoints
    description: >-
      The Pickup endpoints enable precise management of shipment pickups within
      the Eurosender API ecosystem. These endpoints support:

      * Initiating pickup requests for orders marked with `independentPickup:
      true`, allowing users to control pickup scheduling manually.

      * Retrieving available pickup time slots for orders, contingent on the
      availability flag `options.serviceTypes.pickupTimeFrameSelectionPossible`
      set to `true` in the quote response.

      * Automatic pickup scheduling if a manual pickup request is not triggered
      within 30 minutes after order placement, using default pickup time
      windows.


      This functionality ensures your shipments are collected efficiently,
      providing flexibility to tailor pickup timings while automating routine
      scheduling. Proper use of these endpoints helps streamline logistics
      operations and improve delivery reliability.
  - name: Pudo List Endpoint
    description: >-
      This endpoint retrieves a list of available Pick-Up Drop-Off (PUDO) points
      based on the shipment criteria provided. It is designed for service types
      that involve delivery to or from a designated pick-up location, including:

      * `door_to_shop`: home collection to a PUDO point

      * `shop_to_door`: PUDO drop-off to a home delivery

      * `shop_to_shop`: PUDO drop-off to another PUDO location


      Use this endpoint to present users with a selection of eligible PUDO
      points near the sender's or recipient’s address, enabling flexible and
      convenient shipping arrangements.
  - name: Webhooks
    description: " You can subscribe to a set of events sent by our webhooks.\nLog in to your Eurosender business account.\nNavigate to User dashboard → New order → Public API tab. Here you can enable webhooks and see their status.\n**Supported webhooks:**\n1) **Label(s) ready**   id: 1   code: `order_label_ready`   Trigger: When label(s) for an order become available (only for orders that require label printing).\n2) **Order was submitted to courier**   id: 2   code: `order_submitted_to_courier`   Trigger: When shipping is booked in the courier's system.\n3) **Tracking code(s) ready**   id: 3   code: `order_tracking_ready`   Trigger: When tracking codes become available for the order, but only if they weren't already available when submitted.\n4) **Order was cancelled**   id: 4   code: `order_cancelled`   Trigger: When (or if) an order is cancelled.\n5) **Delivery status**   id: 5   code: `delivery_status_updated`   Trigger: When a new delivery status event is dispatched.\n\n**Webhooks 1–4** send data in the request headers using the pattern below:\n\n**Headers:**\n```\nWebhook-Id: unique_id_for_each_webhook_sent\nWebhook-Event: code\nWebhook-Signature:...\n```\n**Body:**\n\n```JSON\n{ 'triggerId': id, 'orderCode': '123456-12', 'courierId': 23, # only for webhhok 2 'trackingCodes': [\t# only for webhooks 2, 3 { 'orderCode': '123456-12', 'trackingNumber': '11111111', 'trackingUrl': 'https://demo.com/?track=1111111' } ] }\n```\nWebhook Delivery status sends data in request header as per pattern below (same payload as `GET /v1/orders/{orderCode}/tracking` endpoint).        \n\n**Example:**\n```JSON\n{ 'notifications': [ { 'trackingDetails': { 'parcels': [ { 'parcelId': 'ebbfce6a-000e-00b4-99aa-004dc9b3ee9a', 'orderCode': '011231-24', 'trackingNumber': '10000010007', 'currentStatus': 'InfoReceived', 'currentSubstatus': 'InfoReceived_001', 'updatedDate': '2024-06-11T09:55:47+02:00', 'expectedDeliveryDate': null, 'pickupDate': '2024-06-10T14:34:31+02:00', 'deliveryDate': null, 'signedBy': null, 'checkpoints': [ { 'eventDate': '2024-06-10T14:34:31+02:00', 'status': 'InTransit', 'substatus': 'InTransit_001', 'location': null, 'countryCode': null, 'message': 'Data sent' }, { 'eventDate': '2024-06-11T11:18:24+02:00', 'status': 'InfoReceived', 'substatus': 'InfoReceived_001', 'location': 'LJUBLJANA', 'countryCode': null, 'message': 'P&S/P&R picked up' } ] } ] }, 'orderCode': '736361-24', 'triggerId': 5 } ] }\n```"
