shipcloud · Schema

shipment

CompanyShippingLogisticsCarriersLabelsTrackingE-Commerce

Properties

Name Type Description
carrier object
to object
from object
cover_address object
service object
reference_number string a reference number (max. 30 characters) that you want this shipment to be identified with. You can use this afterwards to easier find the shipment in the shipcloud.io backoffice
description string text that describes the contents of the shipment. This parameter is mandatory if you're using UPS and the following conditions are true: from and to countries are not the same; from and/or to countrie
label object
notification_email string email address that we should notify once there's an update for this shipment (usually the recipients')
incoterm string
billing object
additional_services array
pickup object
customs_declaration object
order_id string Identifier of a previously created order.
returned_items array List of items that get returned with this shipment
create_shipping_label boolean determines if a shipping label should be created at the carrier (this means you will be charged when using the production api key)
metadata object here you can save additional data that you want to be associated with the shipment. Any combination of key-value pairs is possible
View JSON Schema on GitHub

JSON Schema

shipcloud-shipment-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/shipcloud/main/json-schema/shipcloud-shipment-schema.json",
  "title": "shipment",
  "x-generated": "2026-10-09",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/shipcloud-openapi.yml#/components/schemas/shipment",
  "type": "object",
  "properties": {
    "carrier": {
      "$ref": "#/$defs/carrier_shipping"
    },
    "to": {
      "allOf": [
        {
          "$ref": "#/$defs/address"
        },
        {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "company": {
                  "type": "string",
                  "description": "name of the company"
                }
              },
              "required": [
                "company"
              ]
            },
            {
              "type": "object",
              "properties": {
                "last_name": {
                  "type": "string",
                  "description": "last_name of the person"
                }
              },
              "required": [
                "last_name"
              ]
            }
          ]
        },
        {
          "description": "the receivers address"
        }
      ]
    },
    "from": {
      "allOf": [
        {
          "$ref": "#/$defs/address"
        },
        {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "company": {
                  "type": "string",
                  "description": "name of the company"
                }
              },
              "required": [
                "company"
              ]
            },
            {
              "type": "object",
              "properties": {
                "last_name": {
                  "type": "string",
                  "description": "last_name of the person"
                }
              },
              "required": [
                "last_name"
              ]
            }
          ]
        },
        {
          "description": "If missing, the default sender address (if defined in your shipcloud account) will be used"
        }
      ]
    },
    "cover_address": {
      "allOf": [
        {
          "$ref": "#/$defs/address"
        },
        {
          "description": "Overwrites the sender address on the shipping label",
          "required": [
            "street",
            "street_no",
            "zip_code",
            "city"
          ]
        }
      ]
    },
    "service": {
      "$ref": "#/$defs/service"
    },
    "reference_number": {
      "type": "string",
      "description": "a reference number (max. 30 characters) that you want this shipment to be identified with. You can use this afterwards to easier find the shipment in the shipcloud.io backoffice"
    },
    "description": {
      "type": "string",
      "description": "text that describes the contents of the shipment. This parameter is mandatory if you're using UPS and the following conditions are true: from and to countries are not the same; from and/or to countries are not in the EU; from and to countries are in the EU and the shipments service is not `standard`. The parameter is also mandatory when using DHL Express as carrier."
    },
    "label": {
      "$ref": "#/$defs/label"
    },
    "notification_email": {
      "type": "string",
      "description": "email address that we should notify once there's an update for this shipment (usually the recipients')"
    },
    "incoterm": {
      "type": "string",
      "enum": [
        "ddp",
        "ddp_untaxed",
        "dap",
        "dap_cleared",
        "ddu",
        "ddu_cleared"
      ]
    },
    "billing": {
      "type": "object",
      "properties": {
        "transportation": {
          "type": "object",
          "description": "Determines, who will pay for transportation. This is applicable for domestic and international shipments",
          "properties": {
            "type": {
              "type": "string",
              "description": "Providing the key that will determine, who will pay for transportation",
              "enum": [
                "receiver",
                "sender",
                "third_party"
              ]
            },
            "account_number": {
              "type": "string",
              "description": "The account number that will be billed"
            },
            "zip_code": {
              "type": "string",
              "description": "The zip code / postalcode associated with the provided account number"
            },
            "country": {
              "type": "string",
              "description": "The country code associated with the provided account number"
            }
          },
          "required": [
            "type"
          ]
        },
        "duties_and_taxes": {
          "type": "object",
          "description": "Determines, who will pay for duties and taxes. This is only applicable for international shipments",
          "properties": {
            "type": {
              "type": "string",
              "description": "Providing the key that will determine, who will pay for duties and taxes",
              "enum": [
                "receiver",
                "sender",
                "third_party"
              ]
            },
            "account_number": {
              "type": "string",
              "description": "The account number that will be billed"
            },
            "zip_code": {
              "type": "string",
              "description": "The zip code / postalcode associated with the provided account number"
            },
            "country": {
              "type": "string",
              "description": "The country code associated with the provided account number"
            }
          },
          "required": [
            "type"
          ]
        }
      }
    },
    "additional_services": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "enum": [
              "advance_notice",
              "angel_de_delivery_date_time",
              "asendia_bonus_tracking",
              "cash_on_delivery",
              "delivery_date",
              "delivery_note",
              "delivery_time",
              "dhl_endorsement",
              "dhl_gogreen",
              "dhl_ident_check",
              "dhl_named_person_only",
              "dhl_no_neighbor_delivery",
              "dhl_parcel_outlet_routing",
              "dhl_preferred_neighbor",
              "dpd_food",
              "drop_authorization",
              "gls_guaranteed24service",
              "hazardous_goods",
              "hermes_identservice",
              "hermes_next_day",
              "premium_international",
              "saturday_delivery",
              "ups_adult_signature",
              "ups_carbon_neutral",
              "ups_direct_delivery_only",
              "ups_signature_required",
              "visual_age_check"
            ],
            "description": "key to identify the additional service"
          },
          "properties": {
            "type": "object",
            "properties": {
              "amount": {
                "type": "number",
                "description": "Amount that should be payed (cash_on_delivery)"
              },
              "bank_account_holder": {
                "type": "string",
                "description": "Name of the person the bank account belongs to (cash_on_delivery)"
              },
              "bank_account_number": {
                "type": "string",
                "description": "IBAN (cash_on_delivery)"
              },
              "bank_code": {
                "type": "string",
                "description": "BIC/SWIFT (cash_on_delivery)"
              },
              "bank_name": {
                "type": "string",
                "description": "Name of the bank (cash_on_delivery)"
              },
              "currency": {
                "type": "string",
                "description": "Currency as uppercase ISO 4217 code (cash_on_delivery)"
              },
              "date": {
                "type": "string",
                "format": "date",
                "description": "Date (angel_de_delivery_date_time, delivery_date"
              },
              "date_of_birth": {
                "type": "string",
                "format": "date",
                "description": "A recipients date of birth (dhl_ident_check)"
              },
              "email": {
                "type": "string",
                "format": "email",
                "description": "eMail address (advanced_notice)"
              },
              "first_name": {
                "type": "string",
                "description": "The persons first name (dhl_ident_check)"
              },
              "id_type": {
                "type": "string",
                "enum": [
                  "german_identity_card",
                  "german_passport",
                  "international_passport"
                ],
                "description": "Type of ID document that should be used for verifying (hermes_ident_check)"
              },
              "id_number": {
                "type": "string",
                "description": "Number of the ID document (hermes_ident_check)"
              },
              "language": {
                "type": "string",
                "description": "Language (in ISO-639-1 format) the customer should be notified in (advanced_notice)"
              },
              "last_name": {
                "type": "string",
                "description": "The persons last name (dhl_ident_check)"
              },
              "minimum_age": {
                "type": "string",
                "description": "Minimum age that should be checked (dhl_ident_check, visual_age_check)"
              },
              "phone": {
                "type": "string",
                "description": "Phone number that can be called for making the delivery (advanced_notice)"
              },
              "reference1": {
                "type": "string",
                "description": "Text that should be displayed as the reason for transfer (cash_on_delivery)"
              },
              "sms": {
                "type": "string",
                "description": "Phone number that can be texted for making the delivery (advanced_notice)"
              },
              "time_of_day_earliest": {
                "type": "string",
                "description": "Earliest pickup date and time (angel_de_delivery_date_time)"
              },
              "time_of_day_latest": {
                "type": "string",
                "description": "Latest pickup date and time(angel_de_delivery_date_time)"
              }
            }
          }
        }
      },
      "required": [
        "name"
      ]
    },
    "pickup": {
      "$ref": "#/$defs/pickup"
    },
    "customs_declaration": {
      "$ref": "#/$defs/customs_declaration"
    },
    "order_id": {
      "type": "string",
      "description": "Identifier of a previously created order."
    },
    "returned_items": {
      "type": "array",
      "description": "List of items that get returned with this shipment",
      "items": {
        "type": "object",
        "properties": {
          "order_line_item_id": {
            "type": "string",
            "description": "UUID of the corresponding order line item within an order"
          },
          "quantity": {
            "type": "number",
            "description": "Number that defines how many items of this kind are in the shipment"
          },
          "reason_for_return": {
            "type": "string",
            "description": "A key that represents the reason why the item(s) will be returned",
            "enum": [
              "delivery_too_late",
              "delivery_wrong_product",
              "garment_expectation_failed_style",
              "garment_too_large",
              "garment_too_long",
              "garment_too_short",
              "garment_too_small",
              "ordered_choices",
              "other",
              "product_description_differing",
              "product_expectation_failed_color",
              "product_expectation_failed_material",
              "product_expectation_failed_price",
              "product_faulty"
            ]
          }
        }
      }
    },
    "create_shipping_label": {
      "type": "boolean",
      "description": "determines if a shipping label should be created at the carrier (this means you will be charged when using the production api key)"
    },
    "metadata": {
      "type": "object",
      "description": "here you can save additional data that you want to be associated with the shipment. Any combination of key-value pairs is possible"
    }
  },
  "required": [
    "carrier",
    "to"
  ],
  "$defs": {
    "address": {
      "type": "object",
      "properties": {
        "care_of": {
          "type": [
            "string",
            "null"
          ],
          "description": "Additional care of field"
        },
        "city": {
          "type": "string",
          "description": "Name of the city"
        },
        "country": {
          "type": "string",
          "description": "Country as uppercase ISO 3166-1 alpha-2 code"
        },
        "first_name": {
          "type": [
            "string",
            "null"
          ],
          "description": "A persons first name"
        },
        "state": {
          "type": [
            "string",
            "null"
          ],
          "description": "The state the address is in"
        },
        "street": {
          "type": "string",
          "description": "Name of the street. Can hold the house number"
        },
        "street_no": {
          "type": [
            "string",
            "null"
          ],
          "description": "House number of the address (when a carrier requires it separately)"
        },
        "zip_code": {
          "type": "string",
          "description": "Zipcode of the address"
        },
        "phone": {
          "type": "string",
          "description": "Telephone number (mandatory when using UPS and the following terms apply: service is `one_day` or `one_day_early` or ship to country is different than ship from country)"
        },
        "email": {
          "type": "string",
          "description": "Email address for this person. Some carrier are using the email address to send notifications"
        }
      },
      "required": [
        "street",
        "city",
        "zip_code",
        "country"
      ]
    },
    "address_with_id": {
      "allOf": [
        {
          "$ref": "#/$defs/address"
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "description": "identifier of a previously created address"
            }
          },
          "required": [
            "id",
            "first_name",
            "last_name",
            "company",
            "care_of",
            "state",
            "street_no"
          ]
        }
      ]
    },
    "carrier_shipping": {
      "type": "string",
      "enum": [
        "angel_de",
        "asendia",
        "cargo_international",
        "dhl",
        "dhl_express",
        "dpag",
        "dpd",
        "gls",
        "go",
        "hermes",
        "iloxx",
        "parcel_one",
        "ups"
      ],
      "description": "acronym of the carrier"
    },
    "customs_declaration": {
      "type": "object",
      "description": "declaration of customs related information",
      "properties": {
        "contents_type": {
          "type": "string",
          "enum": [
            "commercial_goods",
            "commercial_sample",
            "documents",
            "gift",
            "returned_goods"
          ],
          "description": "Type of contents"
        },
        "contents_explanation": {
          "type": "string",
          "description": "description of contents. Mandatory if contents_type is `commercial_goods`. Max 256 characters, when using DHL as your carrier"
        },
        "currency": {
          "type": "string",
          "description": "a valid ISO 4217 curreny code"
        },
        "additional_fees": {
          "type": "number",
          "description": "additional custom fees to be payed"
        },
        "drop_off_location": {
          "type": "string",
          "description": "location where the package will be dropped of with the carrier"
        },
        "exporter_reference": {
          "type": "string",
          "description": "a note for the exporter"
        },
        "importer_reference": {
          "type": "string",
          "description": "a note for the importer"
        },
        "movement_reference_number": {
          "type": "string",
          "description": "the movement reference number (MRN)"
        },
        "posting_date": {
          "type": "string",
          "format": "date",
          "description": "date of commital at carrier"
        },
        "invoice_number": {
          "type": "string",
          "description": "invoice number for the order"
        },
        "total_value_amount": {
          "type": "number",
          "minimum": 0,
          "maximum": 1000,
          "description": "the overall value of the shipments' contents"
        }
      },
      "required": [
        "contents_type",
        "currency",
        "total_value_amount",
        "items"
      ]
    },
    "label": {
      "type": "object",
      "properties": {
        "format": {
          "type": "string",
          "enum": [
            "pdf_100x70mm",
            "pdf_103x199mm",
            "pdf_a5",
            "pdf_a6",
            "pdf_a7",
            "zpl2_4x6in_203dpi",
            "zpl2_4x6in_300dpi",
            "zpl2_100x70mm_203dpi",
            "zpl2_103x199mm_203dpi"
          ],
          "description": "defines the format that the returned label should have"
        },
        "size": {
          "type": "string",
          "enum": [
            "A5",
            "A6",
            "A7",
            "100x70mm"
          ],
          "description": "defines the size that the returned label should have",
          "deprecated": true
        }
      },
      "description": "label specific definitions"
    },
    "pickup": {
      "type": "object",
      "description": "for some carriers a pickup has to be requested when creating a shipment",
      "properties": {
        "pickup_time": {
          "$ref": "#/$defs/pickup_time_object"
        },
        "pickup_address": {
          "$ref": "#/$defs/address_with_id"
        }
      }
    },
    "pickup_time_object": {
      "type": "object",
      "properties": {
        "earliest": {
          "type": "string",
          "format": "date-time",
          "description": "Earliest pickup date and time"
        },
        "latest": {
          "type": "string",
          "format": "date-time",
          "description": "Latest pickup date and time"
        }
      },
      "description": "defines a time window in which the carrier should pickup shipments",
      "required": [
        "earliest",
        "latest"
      ]
    },
    "service": {
      "type": "string",
      "enum": [
        "standard",
        "one_day",
        "one_day_early",
        "returns",
        "asendia_epaq_standard_economy",
        "asendia_epaq_standard_priority",
        "cargo_international_express",
        "dhl_europaket",
        "dhl_prio",
        "dhl_warenpost",
        "dpag_warenpost",
        "dpag_warenpost_signature",
        "dpag_warenpost_untracked",
        "gls_express_0800",
        "gls_express_0900",
        "gls_express_1000",
        "gls_express_1200",
        "ups_express_1200"
      ],
      "default": "standard",
      "description": "The service that should be used for the shipment."
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/shipcloud-shipment"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.