Booking Notification

`CloudEvent` specific properties for the `Notification`.

CompanyContainer ShippingLogisticsMaritimeShippingSupply ChainTrack and TraceTaiwan

Properties

Name Type Description
specversion string The version of the CloudEvents specification which the event uses. This enables the interpretation of the context. Compliant event producers MUST use a value of `1.0` when referring to this version of
id string Identifies the event. Producers MUST ensure that `source` + `id` is unique for each distinct event. If a duplicate event is re-sent (e.g. due to a network error) it MAY have the same `id`. Consumers M
source string Identifies the context in which an event happened. Often this will include information such as the type of the event source, the organization publishing the event or the process that produced the even
type string This attribute contains a value describing the type of event related to the originating occurrence. Often this attribute is used for routing, observability, policy enforcement, etc. The format of this
time string Timestamp of when the occurrence happened. If the time of the occurrence cannot be determined then this attribute MAY be set to some other time (such as the current time) by the CloudEvents producer,
datacontenttype string Content type of `data` value. This attribute enables `data` to carry any type of content, whereby format and encoding might differ from that of the chosen event format. For example, an event rendered
subscriptionReference string The reference of the subscription that has triggered this event
data object
View JSON Schema on GitHub

JSON Schema

evergreen-marine-booking-notification-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/evergreen-marine/main/json-schema/evergreen-marine-booking-notification-schema.json",
  "title": "Booking Notification",
  "description": "`CloudEvent` specific properties for the `Notification`.\n",
  "x-generated": "2026-10-18",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/evergreen-marine-booking-openapi.yml#/components/schemas/BookingNotification",
  "required": [
    "data",
    "datacontenttype",
    "id",
    "source",
    "specversion",
    "subscriptionReference",
    "time",
    "type"
  ],
  "type": "object",
  "properties": {
    "specversion": {
      "type": "string",
      "description": "The version of the CloudEvents specification which the event uses. This enables the interpretation of the context. Compliant event producers MUST use a value of `1.0` when referring to this version of the specification.\n\nCurrently, this attribute will only have the 'major' and 'minor' version numbers included in it. This allows for 'patch' changes to the specification to be made without changing this property's value in the serialization. Note: for 'release candidate' releases a suffix might be used for testing purposes.\n",
      "enum": [
        "1.0"
      ]
    },
    "id": {
      "maxLength": 100,
      "type": "string",
      "description": "Identifies the event. Producers MUST ensure that `source` + `id` is unique for each distinct event. If a duplicate event is re-sent (e.g. due to a network error) it MAY have the same `id`. Consumers MAY assume that Events with identical `source` and `id` are duplicates.\n"
    },
    "source": {
      "maxLength": 4096,
      "type": "string",
      "description": "Identifies the context in which an event happened. Often this will include information such as the type of the event source, the organization publishing the event or the process that produced the event. The exact syntax and semantics behind the data encoded in the URI is defined by the event producer.\n\nProducers MUST ensure that `source` + `id` is unique for each distinct event.\n\nAn application MAY assign a unique `source` to each distinct producer, which makes it easy to produce unique IDs since no other producer will have the same source. The application MAY use UUIDs, URNs, DNS authorities or an application-specific scheme to create unique `source` identifiers.\n\nA source MAY include more than one producer. In that case the producers MUST collaborate to ensure that `source` + `id` is unique for each distinct event.\n"
    },
    "type": {
      "type": "string",
      "description": "This attribute contains a value describing the type of event related to the originating occurrence. Often this attribute is used for routing, observability, policy enforcement, etc. The format of this is producer defined and might include information such as the version of the type - see [Versioning of CloudEvents in the Primer](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/primer.md#versioning-of-cloudevents) for more information.\n",
      "enum": [
        "org.dcsa.booking.v2"
      ]
    },
    "time": {
      "type": "string",
      "description": "Timestamp of when the occurrence happened. If the time of the occurrence cannot be determined then this attribute MAY be set to some other time (such as the current time) by the CloudEvents producer, however all producers for the same `source` MUST be consistent in this respect. In other words, either they all use the actual time of the occurrence or they all use the same algorithm to determine the value used.\n",
      "format": "date-time"
    },
    "datacontenttype": {
      "type": "string",
      "description": "Content type of `data` value. This attribute enables `data` to carry any type of content, whereby format and encoding might differ from that of the chosen event format. For example, an event rendered using the [JSON envelope](formats/json-format.md#3-envelope) format might carry an XML payload in `data`, and the consumer is informed by this attribute being set to \"application/xml\". The rules for how `data` content is rendered for different `datacontenttype` values are defined in the event format specifications; for example, the JSON event format defines the relationship in [section 3.1](formats/json-format.md#31-handling-of-data).\n\nFor some binary mode protocol bindings, this field is directly mapped to the respective protocol's content-type metadata property. Normative rules for the binary mode and the content-type metadata mapping can be found in the respective protocol.\n\nIn some event formats the `datacontenttype` attribute MAY be omitted. For example, if a JSON format event has no `datacontenttype` attribute, then it is implied that the `data` is a JSON value conforming to the \"application/json\" media type. In other words: a JSON-format event with no `datacontenttype` is exactly equivalent to one with `datacontenttype=\"application/json\"`.\n\nWhen translating an event message with no `datacontenttype` attribute to a different format or protocol binding, the target `datacontenttype` SHOULD be set explicitly to the implied `datacontenttype` of the source.\n",
      "enum": [
        "application/json"
      ]
    },
    "subscriptionReference": {
      "maxLength": 100,
      "pattern": "^\\S(?:.*\\S)?$",
      "type": "string",
      "description": "The reference of the subscription that has triggered this event\n"
    },
    "data": {
      "$ref": "#/$defs/BookingNotificationData"
    }
  },
  "$defs": {
    "ActiveReeferSettings": {
      "title": "Active Reefer Settings",
      "required": [
        "temperatureSetpoint",
        "temperatureUnit"
      ],
      "type": "object",
      "properties": {
        "temperatureSetpoint": {
          "type": "number",
          "description": "Target value of the temperature for the Reefer based on the cargo requirement.\n",
          "format": "float"
        },
        "temperatureUnit": {
          "type": "string",
          "description": "The unit for temperature in Celsius or Fahrenheit\n- `CEL` (Celsius)\n- `FAH` (Fahrenheit)\n\n**Condition:** Mandatory to provide if `temperatureSetpoint` is provided\n",
          "enum": [
            "CEL",
            "FAH"
          ]
        },
        "o2Setpoint": {
          "maximum": 100,
          "minimum": 0,
          "type": "number",
          "description": "The percentage of the controlled atmosphere CO<sub>2</sub> target value\n",
          "format": "float"
        },
        "co2Setpoint": {
          "maximum": 100,
          "minimum": 0,
          "type": "number",
          "description": "The percentage of the controlled atmosphere CO<sub>2</sub> target value\n",
          "format": "float"
        },
        "humiditySetpoint": {
          "maximum": 100,
          "minimum": 0,
          "type": "number",
          "description": "The percentage of the controlled atmosphere humidity target value\n",
          "format": "float"
        },
        "airExchangeSetpoint": {
          "minimum": 0,
          "type": "number",
          "description": "Target value for the air exchange rate which is the rate at which outdoor air replaces indoor air within a Reefer container\n",
          "format": "float"
        },
        "airExchangeUnit": {
          "type": "string",
          "description": "The unit for `airExchange` in metrics- or imperial- units per hour\n- `MQH` (Cubic metre per hour)\n- `FQH` (Cubic foot per hour)\n\n**Condition:** Mandatory to provide if `airExchange` is provided\n",
          "enum": [
            "MQH",
            "FQH"
          ]
        },
        "isVentilationOpen": {
          "type": "boolean",
          "description": "If `true` the ventilation orifice is `Open` - if `false` the ventilation orifice is `closed`\n"
        },
        "isDrainholesOpen": {
          "type": "boolean",
          "description": "Is drain holes open on the container\n"
        },
        "isBulbMode": {
          "type": "boolean",
          "description": "Is special container setting for handling flower bulbs active\n"
        },
        "isColdTreatmentRequired": {
          "type": "boolean",
          "description": "Indicator whether cargo requires cold treatment prior to loading at origin or during transit, but prior arrival at POD\n"
        },
        "isControlledAtmosphereRequired": {
          "type": "boolean",
          "description": "Indicator of whether cargo requires Controlled Atmosphere.\n"
        },
        "isPreCoolingRequired": {
          "type": "boolean",
          "description": "Indicator whether reefer container should be pre-cooled to the temperature setting required at time of release from depot\n"
        },
        "isGeneratorSetRequired": {
          "type": "boolean",
          "description": "Indicator whether reefer container should have a generator set attached at time of release from depot\n"
        }
      },
      "description": "The specifications for a Reefer equipment.\n\n**Condition:** Only applicable when `isNonOperatingReefer` is set to `false`\n"
    },
    "Address": {
      "title": "Address",
      "required": [
        "city",
        "countryCode",
        "street"
      ],
      "type": "object",
      "properties": {
        "street": {
          "maxLength": 70,
          "type": "string",
          "description": "The name of the street."
        },
        "streetNumber": {
          "maxLength": 50,
          "type": "string",
          "description": "The number of the street."
        },
        "floor": {
          "maxLength": 50,
          "pattern": "^\\S(?:.*\\S)?$",
          "type": "string",
          "description": "The floor of the street number.\n"
        },
        "postCode": {
          "maxLength": 10,
          "type": "string",
          "description": "The post code."
        },
        "POBox": {
          "maxLength": 20,
          "type": "string",
          "description": "A numbered box at a post office where a person or business can have mail or parcels delivered."
        },
        "city": {
          "maxLength": 35,
          "pattern": "^\\S(?:.*\\S)?$",
          "type": "string",
          "description": "The name of the city.\n"
        },
        "stateRegion": {
          "maxLength": 65,
          "type": "string",
          "description": "The name of the state/region."
        },
        "countryCode": {
          "maxLength": 2,
          "minLength": 2,
          "pattern": "^[A-Z]{2}$",
          "type": "string",
          "description": "The 2 characters for the country code using [ISO 3166-1 alpha-2](https://www.iso.org/obp/ui/#iso:pub:PUB500001:en)\n"
        }
      },
      "description": "An object for storing address related information\n"
    },
    "AdvanceManifestFiling": {
      "title": "Advance Manifest Filing",
      "required": [
        "manifestTypeCode"
      ],
      "type": "object",
      "properties": {
        "manifestTypeCode": {
          "maxLength": 50,
          "pattern": "^\\S(?:.*\\S)?$",
          "type": "string",
          "description": "The Manifest type code as defined by the provider.\n"
        },
        "countryCode": {
          "maxLength": 2,
          "minLength": 2,
          "pattern": "^[A-Z]{2}$",
          "type": "string",
          "description": "The 2 characters for the country code using [ISO 3166-1 alpha-2](https://www.iso.org/obp/ui/#iso:pub:PUB500001:en)\n"
        }
      },
      "description": "An Advance Manifest Filing defined by a Manifest type code in combination with a country code.\n\nA small list of **potential** examples:\n\n| manifestTypeCode | countryCode | Description |\n|-----------------------|:-------------:|-------------|\n|ACI|EG|Advance Cargo Information in Egypt|\n|ACE|US|Automated Commercial Environment in the United States|\n|AFR|JP|Cargo Summary Notification (CSN)|\n"
    },
    "AmendedBookingFullNotification": {
      "title": "Amended Booking",
      "type": "object",
      "description": "This property contains the amended booking in case:\n  - an amendment is currently active\n  - the subscriber is subscribing to the `Full State Transfer` of the Booking\n\nIn case the subscriber does not subscribe to the `Full State Transfer` of the Booking or no amendment is active - then the content in this property can be ignored.\n",
      "allOf": [
        {
          "$ref": "#/$defs/Booking"
        }
      ]
    },
    "Booking": {
      "title": "Booking",
      "required": [
        "bookingStatus",
        "cargoMovementTypeAtDestination",
        "cargoMovementTypeAtOrigin",
        "deliveryTypeAtDestination",
        "documentParties",
        "isEquipmentSubstitutionAllowed",
        "receiptTypeAtOrigin",
        "requestedEquipments",
        "shipmentLocations"
      ],
      "type": "object",
      "properties": {
        "carrierBookingRequestReference": {
          "maxLength": 100,
          "pattern": "^\\S(?:.*\\S)?$",
          "type": "string",
          "description": "A reference to the booking during the booking request phase.\n\n**Condition:** `carrierBookingRequestReference` and/or `carrierBookingReference` must be provided\n"
        },
        "carrierBookingReference": {
          "maxLength": 35,
          "pattern": "^\\S(?:.*\\S)?$",
          "type": "string",
          "description": "The `carrierBookingReference` if know. Often this will not be known until the booking has been confirmed. Is available during a booking amendment.\n\n**Condition:** `carrierBookingRequestReference` and/or `carrierBookingReference` must be provided\n"
        },
        "bookingStatus": {
          "maxLength": 50,
          "type": "string",
          "description": "The status of the `Booking`. Possible values are:\n- `RECEIVED` (Booking request has been received)\n- `PENDING_UPDATE` (An update is required to the Booking)\n- `UPDATE_RECEIVED` (An update has been received and is awaiting to be processed)\n- `CONFIRMED` (Booking has been Confirmed)\n- `PENDING_AMENDMENT` (An amendment is required to the Booking)\n- `REJECTED` (Booking discontinued by carrier before it has been Confirmed)\n- `DECLINED` (Booking discontinued by carrier after it has been Confirmed)\n- `CANCELLED` (Booking discontinued by consumer)\n- `COMPLETED` (The Transport Document this Booking is connected to has been Surrendered for Delivery)\n"
        },
        "amendedBookingStatus": {
          "maxLength": 50,
          "type": "string",
          "description": "The status of latest amendment added to the `Booking`. If no amendment has been requested - then this field is empty. Possible values are:\n- `AMENDMENT_RECEIVED` (An amendment has been received and is awaiting to be processed)\n- `AMENDMENT_CONFIRMED` (Amendment is confirmed)\n- `AMENDMENT_DECLINED` (Amendment discontinued by provider)\n- `AMENDMENT_CANCELLED` (Amendment discontinued by consumer)\n"
        },
        "bookingCancellationStatus": {
          "maxLength": 50,
          "type": "string",
          "description": "The status of the latest booking cancellation. If no cancellation has been requested - then this property is empty. Possible values are:\n- `CANCELLATION_RECEIVED` (A request to cancel a Confirmed Booking has been received and is awaiting to be processed)\n- `CANCELLATION_DECLINED` (Cancellation of the Confirmed Booking has been declined by provider)\n- `CANCELLATION_CONFIRMED` (Cancellation of the Confirmed Booking has been confirmed by provider)\n"
        },
        "receiptTypeAtOrigin": {
          "maxLength": 3,
          "type": "string",
          "description": "Indicates the type of service offered at `Origin`. The options are:\n- `CY` (Container yard (incl. rail ramp))\n- `SD` (Store Door)\n- `CFS` (Container Freight Station)\n",
          "enum": [
            "CY",
            "SD",
            "CFS"
          ]
        },
        "deliveryTypeAtDestination": {
          "maxLength": 3,
          "type": "string",
          "description": "Indicates the type of service offered at `Destination`. The options are:\n- `CY` (Container yard (incl. rail ramp))\n- `SD` (Store Door)\n- `CFS` (Container Freight Station)\n",
          "enum": [
            "CY",
            "SD",
            "CFS"
          ]
        },
        "cargoMovementTypeAtOrigin": {
          "maxLength": 3,
          "type": "string",
          "description": "Refers to the shipment term at the **loading** of the cargo into the container. Possible values are:\n- `FCL` (Full Container Load)\n- `LCL` (Less than Container Load)\n"
        },
        "cargoMovementTypeAtDestination": {
          "maxLength": 3,
          "type": "string",
          "description": "Refers to the shipment term at the **unloading** of the cargo out of the container. Possible values are:\n- `FCL` (Full Container Load)\n- `LCL` (Less than Container Load)\n"
        },
        "serviceContractReference": {
          "maxLength": 30,
          "type": "string",
          "description": "Reference number for agreement between shipper and carrier, which optionally includes a certain minimum quantity commitment (usually referred as ��MQC��) of cargo that the shipper commits to over a fixed period, and the carrier commits to a certain rate or rate schedule.\n\n**Condition:** One of `serviceContractReference` or `contractQuotationReference` must be provided, but not both.\n"
        },
        "freightPaymentTermCode": {
          "type": "string",
          "description": "An indicator of whether freight and ancillary fees for the main transport are prepaid (`PRE`) or collect (`COL`). When prepaid the charges are the responsibility of the shipper or the Invoice payer on behalf of the shipper (if provided). When collect, the charges are the responsibility of the consignee or the Invoice payer on behalf of the consignee (if provided).\n- `PRE` (Prepaid)\n- `COL` (Collect)\n",
          "enum": [
            "PRE",
            "COL"
          ]
        },
        "originChargesPaymentTerm": {
          "$ref": "#/$defs/OriginChargesPaymentTerm"
        },
        "destinationChargesPaymentTerm": {
          "$ref": "#/$defs/DestinationChargesPaymentTerm"
        },
        "contractQuotationReference": {
          "maxLength": 35,
          "pattern": "^\\S(?:.*\\S)?$",
          "type": "string",
          "description": "Information provided by the shipper to identify whether pricing for the shipment has been agreed via a contract or a quotation reference.\n\n**Condition:** One of `contractQuotationReference` or `serviceContractReference` must be provided, but not both.\n"
        },
        "vessel": {
          "$ref": "#/$defs/Vessel"
        },
        "carrierServiceName": {
          "maxLength": 50,
          "pattern": "^\\S(?:.*\\S)?$",
          "type": "string",
          "description": "The name of a service as specified by the carrier.\n\n**Condition:** Mandatory if `carrierExportVoyageNumber` is provided and Vessel details or `carrierServiceCode` are blank\n"
        },
        "carrierServiceCode": {
          "maxLength": 11,
          "pattern": "^\\S(?:.*\\S)?$",
          "type": "string",
          "description": "The carrier specific code of the service for which the schedule details are published.\n\n**Condition:** Mandatory if `carrierExportVoyageNumber` is provided and Vessel details or `carrierServiceName` are blank\n"
        },
        "universalServiceReference": {
          "maxLength": 8,
          "minLength": 8,
          "pattern": "^SR\\d{5}[A-Z]$",
          "type": "string",
          "description": "A global unique service reference, as per DCSA standard, agreed by VSA partners for the service. The service reference must match the regular expression pattern: `SR\\d{5}[A-Z]`. The letters `SR` followed by `5 digits`, followed by a checksum-character as a capital letter from `A to Z`.\n"
        },
        "carrierExportVoyageNumber": {
          "maxLength": 50,
          "pattern": "^\\S(?:.*\\S)?$",
          "type": "string",
          "description": "The carrier specific identifier of the export Voyage.\n\n**Condition:** Mandatory if `expectedDepartureDate` or `expectedArrivalAtPlaceOfDeliveryStartDate` and `expectedArrivalAtPlaceOfDeliveryEndDate` is not provided.\n"
        },
        "universalExportVoyageReference": {
          "maxLength": 5,
          "minLength": 5,
          "pattern": "^\\d{2}[0-9A-Z]{2}[NEWSR]$",
          "type": "string",
          "description": "A global unique voyage reference for the export Voyage, as per DCSA standard, agreed by VSA partners for the voyage. The voyage reference must match the regular expression pattern: `\\d{2}[0-9A-Z]{2}[NEWSR]`\n- `2 digits` for the year\n- `2 alphanumeric characters` for the sequence number of the voyage\n- `1 character` for the direction/haul (`N`orth, `E`ast, `W`est, `S`outh or `R`oundtrip).\n"
        },
        "declaredValue": {
          "minimum": 0,
          "type": "number",
          "description": "The value of the cargo that the shipper declares in order to avoid the carrier's limitation of liability and \"Ad Valorem\" freight, i.e., freight which is calculated based on the value of the goods declared by the shipper.\n",
          "format": "float"
        },
        "declaredValueCurrency": {
          "maxLength": 3,
          "minLength": 3,
          "pattern": "^[A-Z]{3}$",
          "type": "string",
          "description": "The currency used for the declared value, using the 3-character code defined by [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html).\n\n**Condition:** Mandatory if `declaredValue` is provided\n"
        },
        "carrierCode": {
          "maxLength": 4,
          "pattern": "^\\S+$",
          "type": "string",
          "description": "The `SCAC` code (provided by [NMFTA](https://nmfta.org/scac/)) or `SMDG` code (provided by [SMDG](https://smdg.org/documents/smdg-code-lists/smdg-liner-code-list/)) of the carrier the booking request is intended for. `carrierCodeListProvider` defines which list the `carrierCode` is based upon.\n"
        },
        "carrierCodeListProvider": {
          "type": "string",
          "description": "The code list provider for the `carrierCode`. Possible values are:\n- `SMDG` (Ship Message Design Group)\n- `NMFTA` (National Motor Freight Traffic Association)\n",
          "enum": [
            "SMDG",
            "NMFTA"
          ]
        },
        "isPartialLoadAllowed": {
          "type": "boolean",
          "description": "Indicates whether the shipper agrees to load part of the shipment in case not all of the cargo is delivered within cut-off.\n\n**Note:** The carrier is not liable in case unable to follow the customer's instructions due to operational constraints. If this value is omitted, it may be interpreted differently by different API providers and by the same API provider in different contexts.\n"
        },
        "isExportDeclarationRequired": {
          "type": "boolean",
          "description": "Information provided by the shipper whether an export declaration is required for this particular shipment/commodity/destination.\n\n**Note:** If this property is omitted, it may be interpreted differently by different API providers and by the same API provider in different contexts.\n"
        },
        "exportDeclarationReference": {
          "maxLength": 35,
          "pattern": "^\\S(?:.*\\S)?$",
          "type": "string",
          "description": "Reference number assigned to an Export declaration typically submitted by the exporter (or the freight forwarder on behalf of the exporter) that provides detailed information about the goods being exported. It serves as a record for the exporting country's government and is used for statistical, regulatory, and compliance purposes. The export declaration must typically be submitted to the relevant customs authorities before the goods leave the exporting country.\n"
        },
        "expectedDepartureDate": {
          "type": "string",
          "description": "The date when the shipment is expected to be loaded on board a vessel as provided by the shipper or its agent.\n\n**Condition:** Mandatory if vessel/voyage/service details or `expectedArrivalAtPlaceOfDeliveryDate` is not provided.\n",
          "format": "date"
        },
        "expectedArrivalAtPlaceOfDeliveryStartDate": {
          "type": "string",
          "description": "The start date (provided as a range together with `expectedArrivalAtPlaceOfDeliveryEndDate`) for when the shipment is expected to arrive at `Place Of Delivery`.\n\n**Condition:** Mandatory if vessel/voyage/service details or `expectedDepartureDate` is not provided.\n",
          "format": "date"
        },
        "expectedArrivalAtPlaceOfDeliveryEndDate": {
          "type": "string",
          "description": "The end date (provided as a range together with `expectedArrivalAtPlaceOfDeliveryStartDate`) for when the shipment is expected to arrive at `Place Of Delivery`.\n\n**Condition:** Mandatory if vessel/voyage/service details or `expectedDepartureDate` is not provided.\n",
          "format": "date"
        },
        "transportDocumentTypeCode": {
          "type": "string",
          "description": "Specifies the type of the `Transport Document`. Possible values are:\n- `BOL` (Bill of Lading)\n- `SWB` (Sea Waybill)\n",
          "enum": [
            "BOL",
            "SWB"
          ]
        },
        "transportDocumentReference": {
          "maxLength": 20,
          "pattern": "^\\S(?:.*\\S)?$",
          "type": "string",
          "description": "A unique reference allocated by the shipping line to the `Transport Document` that the booking concerns.\n"
        },
        "bookingChannelReference": {
          "maxLength": 20,
          "pattern": "^\\S(?:.*\\S)?$",
          "type": "string",
          "description": "Identification number provided by the platform/channel used for booking request/confirmation, ex: Inttra booking reference, or GTNexus, other.\n\n**Condition:** a booking channel is being used\n"
        },
        "incoTerms": {
          "maxLength": 3,
          "type": "string",
          "description": "Transport obligations, costs and risks as agreed between buyer and seller as defined by [Incoterms Rules](https://iccwbo.org/business-solutions/incoterms-rules/).\n"
        },
        "isEquipmentSubstitutionAllowed": {
          "type": "boolean",
          "description": "Indicates if an alternate equipment type can be provided by the carrier.\n"
        },
        "termsAndConditions": {
          "maxLength": 50000,
          "type": "string",
          "description": "Carrier terms and conditions of transport.\n"
        },
        "invoicePayableAt": {
          "$ref": "#/$defs/InvoicePayableAt"
        },
        "placeOfBLIssue": {
          "$ref": "#/$defs/PlaceOfBLIssue"
        },
        "references": {
          "type": "array",
          "description": "A list of `References`\n",
          "items": {
            "$ref": "#/$defs/Reference"
          }
        },
        "customsReferences": {
          "type": "array",
          "description": "A list of `Customs references`\n",
          "items": {
            "$ref": "#/$defs/CustomsReference"
          }
        },
        "documentParties": {
          "$ref": "#/$defs/DocumentParties"
        },
        "partyContactDetails": {
          "type": "array",
          "description": "The contact details of the person(s) to contact in relation to the **Booking** (changes, notifications etc.) \n",
          "items": {
            "$ref": "#/$defs/PartyContactDetail"
          }
        },
        "shipmentLocations": {
          "minItems": 1,
          "type": "array",
          "description": "A list of `Shipment Locations`\n",
          "items": {
            "$ref": "#/$defs/ShipmentLocation"
          }
        },
        "requestedEquipments": {
          "minItems": 1,
          "type": "array",
          "description": "List of `Requested Equipments`. Multiple containers can be requested within the same booking. For each Requested Equipment object with 2 or more units, it is a condition that the commodity (or list of commodities) defined within the same Requested Equipment object is the same for each requested unit.\n\n**Example:** 2 x 20' containing 50% shoes and 50% t-shirts can be requested within the same Requested Equipment object only if each 20' will contain 50% shoes and 50% t-shirts. If 1 x 20' will contain 100% shoes and the other 20' will be 100% t-shirts, 2 separate Requested Equipment objects must be defined.\n",
          "items": {
            "$ref": "#/$defs/RequestedEquipment"
          }
        },
        "confirmedEquipments": {
          "type": "array",
          "description": "A list of `Confirmed Equipments`\n\n**Condition:** Mandatory and non-empty for a `CONFIRMED` Booking\n",
          "items": {
            "$ref": "#/$defs/ConfirmedEquipment"
          }
        },
        "transportPlan": {
          "type": "array",
          "description": "A list of `Transport` objects (legs) describing the entire transport plan including transshipments.\n\n**Condition:** Mandatory and non-empty for a `CONFIRMED` Booking\n",
          "items": {
            "$ref": "#/$defs/Transport"
          }
        },
        "shipmentCutOffTimes": {
          "type": "array",
          "description": "A list of cut-off times provided by the carrier in the booking confirmation. A cut-off time indicates the latest deadline within which a task must be completed. The confirmed schedule cannot be guaranteed if a cut-off time is missed. Customs brokers may set additional cut-off times to receive the export customs documentation, which is not included in the shipment cut-off times of a carrier booking.\n\n**Condition:** Mandatory and non-empty for a `CONFIRMED` Booking\n",
          "items": {
            "$ref": "#/$defs/ShipmentCutOffTime"
          }
        },
        "advanceManifestFilings": {
          "type": "array",
          "description": "A list of `Advance Manifest Filings` provided by the carrier\n",
          "items": {
            "$ref": "#/$defs/AdvanceManifestFiling"
          }
        },
        "charges": {
          "type": "array",
          "description": "A list of `Charges`\n",
          "items": {
            "$ref": "#/$defs/Charge"
          }
        },
        "carrierClauses": {
          "type": "array",
          "description": "Additional clauses for a specific shipment added by the carrier to the Bill of Lading, subject to local rules / guidelines or certain mandatory information required to be shared with the customer.\n",
          "items": {
            "maxLength": 20000,
            "pattern": "^\\S(?:.*\\S)?$",
            "type": "string",
            "description": "The content of the clause.\n"
          }
        },
        "feedbacks": {
          "type": "array",
          "description": "Feedback that can be provided includes, but is not limited to:\n- unsupported properties\n- changed values\n- removed properties\n- general information\n",
          "items": {
            "$ref": "#/$defs/Feedback"
          }
        }
      }
    },
    "BookingAgent": {
      "title": "Booking Agent",
      "required": [
        "partyName"
      ],
      "type": "object",
      "properties": {
        "partyName": {
          "maxLength": 70,
          "pattern": "^\\S(?:.*\\S)?$",
          "type": "string",
          "description": "Name of the party.\n"
        },
        "address": {
          "$ref": "#/$defs/PartyAddress"
        },
        "partyContactDetails": {
          "minItems": 1,
          "type": "array",
          "description": "A list of contact details\n",
          "items": {
            "$ref": "#/$defs/PartyContactDetail"
          }
        },
        "identifyingCodes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/IdentifyingCode"
          }
        },
        "taxLegalReferences": {
          "type": "array",
          "description": "A list of `Tax References` for a `Party`\n",
          "items": {
            "$ref": "#/$defs/TaxLegalReference"
          }
        },
        "reference": {
          "maxLength": 35,
          "pattern": "^\\S(?:.*\\S)?$",
          "type": "string",
          "description": "A reference linked to the `Booking Agent`.\n"
        }
      },
      "description": "The party placing the booking request on behalf of the customer.

# --- truncated at 32 KB (121 KB total) ---
# Full source: https://artifacts.apis.io/evergreen-marine/json-schema/evergreen-marine-booking-notification-schema.json

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/evergreen-marine-booking-notification"
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.