openapi: 3.1.0
# The info section contains API information
info:
  description: API provided to customers and partners worldwide to follow deliveries in real time
  version: 1.0.0
  title: Delivery List
  contact:
    name: API Support
    email: devportal.support@michelin.com
    url: "https://developer.michelin.com/en/contact"
  license:
    name: Michelin
    url: https://developer.michelin.com/en/terms-and-conditions-use
  termsOfService:
    https://developer.michelin.com/en/terms-and-conditions-use
    # The servers section specifies the API server and base URL
servers:
  - url: "https://api.michelin.com/desadv"
    description: Production
  - url: "https://sandbox.api.michelin.com/desadv"
    description: Sandbox
# A declaration of which security mechanisms can be used across the API. Each name must correspond to a security scheme which is declared in the Security Schemes under the Components Object.
security:
  - BasicAuth: []
tags:
  - name: EDIWheel A2.5
    description: Get asn/desadv in A2.5 norm
  - name: EDIWheel C1.0
    description: Get asn/desadv in C1.0 norm
  - name: EDIWheel C1.0 Create
    description: Despatch Advice List (push)
paths:
  # Name of the resource to append to the basepath
  /A2_5/desadv:
    post:
      tags:
        - EDIWheel A2.5
      description: Find your deliveries by date or by reference number.
      operationId: desadvA25POST
      summary: Find your deliveries by date or by Reference Number
      requestBody:
        content:
          application/xml:
            schema:
              $ref: "#/components/schemas/DesadvRequestA2"
      responses:
        "200":
          description: OK
          content:
            application/xml:
              schema:
                $ref: "#/components/schemas/DesadvListA2"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProxyErrorResponse"
              example:
                {
                  "fault":
                    {
                      "faultstring": "Invalid ApiKey",
                      "detail": { "errorcode": "oauth.v2.InvalidApiKey" },
                    },
                }
        "403":
          description: Forbidden
        "404":
          description: Not Found
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProxyErrorResponse"
              example:
                "fault":
                  {
                    "faultstring": "Internal server error occured",
                    "detail": { "errorcode": "500" },
                  }
        "503":
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProxyErrorResponse"
              example:
                {
                  "fault":
                    {
                      "faultstring": "The Service is temporarily unavailable",
                      "detail":
                        {
                          "errorcode": "messaging.adaptors.http.flow.ServiceUnavailable",
                        },
                    },
                }
        "504":
          description: >-
            Gateway timeout. A response was not available to send within the
            stipulated time limit.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProxyErrorResponse"
              example:
                {
                  "fault":
                    {
                      "faultstring": "Gateway Timeout",
                      "detail":
                        {
                          "errorcode": "messaging.adaptors.http.flow.GatewayTimeout",
                        },
                    },
                }
  /C1_0/desadv:
    post:
      tags:
        - EDIWheel C1.0
      description: Find your deliveries by date or by reference number.
      operationId: desadvC10POST
      summary: Find your deliveries by date or by reference number.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DesadvRequest"
            examples:
              search_by_date:
                $ref: "#/components/examples/search_by_date"
              search_by_ref:
                $ref: "#/components/examples/search_by_ref"
          application/xml:
            schema:
              $ref: "#/components/schemas/DesadvRequest"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DesadvList"
            application/xml:
              schema:
                $ref: "#/components/schemas/DesadvList"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProxyErrorResponse"
              example:
                {
                  "fault":
                    {
                      "faultstring": "Invalid ApiKey",
                      "detail": { "errorcode": "oauth.v2.InvalidApiKey" },
                    },
                }
        "403":
          description: Forbidden
        "404":
          description: Not Found
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProxyErrorResponse"
              example:
                "fault":
                  {
                    "faultstring": "Internal server error occured",
                    "detail": { "errorcode": "500" },
                  }
        "503":
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProxyErrorResponse"
              example:
                {
                  "fault":
                    {
                      "faultstring": "The Service is temporarily unavailable",
                      "detail":
                        {
                          "errorcode": "messaging.adaptors.http.flow.ServiceUnavailable",
                        },
                    },
                }
        "504":
          description: >-
            Gateway timeout. A response was not available to send within the
            stipulated time limit.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProxyErrorResponse"
              example:
                {
                  "fault":
                    {
                      "faultstring": "Gateway Timeout",
                      "detail":
                        {
                          "errorcode": "messaging.adaptors.http.flow.GatewayTimeout",
                        },
                    },
                }
  /C1_0/create:
    post:
      tags:
        - EDIWheel C1.0 Create
      description: Send Despatch Advice List to Michelin (Desadv Push)
      operationId: desadvPushC10POST
      summary: Send Despatch Advice List to Michelin (Desadv Push)
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DesadvPushRequest"
          application/xml:
            schema:
              $ref: "#/components/schemas/DesadvPushRequest"
      responses:
        "200":
          description: OK
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProxyErrorResponse"
              example:
                {
                  "fault":
                    {
                      "faultstring": "Invalid ApiKey",
                      "detail": { "errorcode": "oauth.v2.InvalidApiKey" },
                    },
                }
        "403":
          description: Forbidden
        "404":
          description: Not Found
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProxyErrorResponse"
              example:
                "fault":
                  {
                    "faultstring": "Internal server error occured",
                    "detail": { "errorcode": "500" },
                  }
        "503":
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProxyErrorResponse"
              example:
                {
                  "fault":
                    {
                      "faultstring": "The Service is temporarily unavailable",
                      "detail":
                        {
                          "errorcode": "messaging.adaptors.http.flow.ServiceUnavailable",
                        },
                    },
                }
        "504":
          description: >-
            Gateway timeout. A response was not available to send within the
            stipulated time limit.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProxyErrorResponse"
              example:
                {
                  "fault":
                    {
                      "faultstring": "Gateway Timeout",
                      "detail":
                        {
                          "errorcode": "messaging.adaptors.http.flow.GatewayTimeout",
                        },
                    },
                }
components:
  examples:
    search_by_date:
      summary: Search by Date
      value:
        {
          "documentID": "C1",
          "variant": "0",
          "despatchFromDate": "2023-10-20",
          "despatchToDate": "2023-10-24",
          "buyerParty": { "partyID": "H001", "agencyCode": "92" },
          "consignee": { "partyID": "S00901", "agencyCode": "92" },
        }
    search_by_ref:
      summary: Search by Reference Code
      value:
        {
          "documentID": "C1",
          "variant": "0",
          "references":
            { "referenceTypeCode": "DQ", "documentID": "KR_WSH-00025" },
          "buyerParty": { "partyID": "H001", "agencyCode": "92" },
          "consignee": { "partyID": "S00901", "agencyCode": "92" },
        }
  schemas:
    ProxyErrorResponse:
      type: object
      properties:
        fault:
          type: object
          properties:
            faultstring:
              type: string
            detail:
              type: object
              properties:
                errorcode:
                  type: string
    DesadvRequestA2:
      type: object
      properties:
        documentID:
          type: string
          enum:
            - B2
          xml:
            name: DocumentID
        variant:
          type: string
          enum:
            - "1"
          xml:
            name: Variant
        despatchFromDate:
          $ref: "#/components/schemas/despatchFromDate"
        despatchToDate:
          $ref: "#/components/schemas/despatchToDate"
        references:
          $ref: "#/components/schemas/ReferencesRequestA2"
        buyerParty:
          $ref: "#/components/schemas/BuyerParty"
        orderingParty:
          $ref: "#/components/schemas/OrderingParty"
        consignee:
          $ref: "#/components/schemas/ConsigneeRequestA2"
      required:
        - documentID
        - buyerParty
      xml:
        name: desadv_request
        prefix: ew
        namespace: "http://www.reifen.net"
    DesadvRequest:
      type: object
      properties:
        documentID:
          $ref: "#/components/schemas/documentIDC1"
        variant:
          $ref: "#/components/schemas/variantC1"
        despatchFromDate:
          $ref: "#/components/schemas/despatchFromDate"
        despatchToDate:
          $ref: "#/components/schemas/despatchToDate"
        references:
          $ref: "#/components/schemas/ReferencesRequest"
        sellerParty:
          $ref: "#/components/schemas/SellerParty"
        supplierParty:
          $ref: "#/components/schemas/SupplierPartyRequest"
        buyerParty:
          $ref: "#/components/schemas/BuyerParty"
        orderingParty:
          $ref: "#/components/schemas/OrderingParty"
        consignee:
          $ref: "#/components/schemas/ConsigneeRequest"
        orderedArticle:
          $ref: "#/components/schemas/OrderedArticleRequest"
      required:
        - documentID
        - buyerParty
      xml:
        name: desadv_request
        prefix: ew
        namespace: "http://www.reifen.net"
    DesadvPushRequest:
      type: object
      properties:
        envelopeHeader:
          $ref: "#/components/schemas/EnvelopeHeaderPush"
        errorHead:
          $ref: "#/components/schemas/errorHead"
        desadv:
          type: array
          items:
            $ref: "#/components/schemas/desadv"
      required:
        - envelopeHeader
        - errorHead
      xml:
        name: desadv_list
        prefix: ew
        namespace: "http://www.reifen.net"
    DesadvList:
      type: object
      properties:
        envelopeHeader:
          $ref: "#/components/schemas/EnvelopeHeader"
        errorHead:
          $ref: "#/components/schemas/errorHead"
        desadv:
          type: array
          items:
            $ref: "#/components/schemas/desadv"
      required:
        - envelopeHeader
        - errorHead
      xml:
        name: desadv_list
        prefix: ew
        namespace: "http://www.reifen.net"
    DesadvListA2:
      type: object
      properties:
        documentID:
          type: string
          enum:
            - B2
          xml:
            name: DocumentID
        variant:
          type: string
          enum:
            - "1"
          xml:
            name: Variant
        errorHead:
          $ref: "#/components/schemas/errorHead"
        numberOfMessages:
          $ref: "#/components/schemas/numberOfMessages"
        desadv:
          type: array
          items:
            $ref: "#/components/schemas/desadvA2"
      required:
        - envelopeHeader
        - errorHead
      xml:
        name: desadv_list
        prefix: ew
        namespace: "http://www.reifen.net"
    documentIDC1:
      type: string
      enum:
        - C1
      xml:
        name: DocumentID
    variantC1:
      type: string
      enum:
        - "0"
      xml:
        name: Variant
    messageType:
      type: string
      enum:
        - DesAdv
      xml:
        name: MessageType
    despatchFromDate:
      type: string
      format: date
      xml:
        name: DespatchFromDate
    despatchToDate:
      type: string
      format: date
      xml:
        name: DespatchToDate
    EnvelopeHeaderPush:
      type: object
      properties:
        documentID:
          $ref: "#/components/schemas/documentIDC1"
        variant:
          $ref: "#/components/schemas/variantC1"
        receiverID:
          type: string
          xml:
            name: ReceiverID
        senderID:
          type: string
          xml:
            name: SenderID
        messageType:
          $ref: "#/components/schemas/messageType"
        interchangeID:
          type: string
          xml:
            name: InterchangeID
        timestamp:
          type: string
          xml:
            name: Timestamp
        numberOfMessages:
          $ref: "#/components/schemas/numberOfMessages"
      required:
        - documentID
        - variant
        - receiverID
        - senderID
        - messageType
        - timestamp
        - numberOfMessages
      xml:
        name: EnvelopeHeader
    EnvelopeHeader:
      type: object
      properties:
        documentID:
          $ref: "#/components/schemas/documentIDC1"
        variant:
          $ref: "#/components/schemas/variantC1"
        messageType:
          type: string
          enum:
            - DesAdv
          xml:
            name: MessageType
        numberOfMessages:
          $ref: "#/components/schemas/numberOfMessages"
      required:
        - documentID
        - variant
        - messageType
        - numberOfMessages
      xml:
        name: EnvelopeHeader
    errorHead:
      type: object
      properties:
        errorCode:
          type: string
          xml:
            name: ErrorCode
      required:
        - errorCode
      xml:
        name: ErrorHead
    numberOfMessages:
      type: integer
      format: int32
      xml:
        name: NumberOfMessages
    desadv:
      type: object
      properties:
        issueDate:
          type: string
          format: date
          xml:
            name: IssueDate
        documentNumber:
          type: string
          xml:
            name: DocumentNumber
        documentTypeCode:
          type: string
          enum:
            - "35E"
            - "351"
          xml:
            name: DocumentTypeCode
        measures:
          $ref: "#/components/schemas/Measures"
        despatchDate:
          type: string
          format: date
          xml:
            name: DespatchDate
        arrivalDate:
          type: string
          xml:
            name: ArrivalDate
        arrivalTime:
          type: string
          pattern: '\d{2}:\d{2}:\d{2}/(?:Z|[+-](?:2[0-3]|[01][0-9]):[0-5][0-9])$/'
          examples: ["14:30:00+02:00"]
          xml:
            name: ArrivalTime
        deliveryOption:
          type: array
          xml:
            name: DeliveryOption
          items:
            type: string
        totalQuantity:
          $ref: "#/components/schemas/TotalQuantity"
        references:
          type: array
          minItems: 1
          xml:
            name: References
          items:
            $ref: "#/components/schemas/ReferencesHeader"
        buyerParty:
          $ref: "#/components/schemas/BuyerParty"
        supplierParty:
          $ref: "#/components/schemas/SupplierParty"
        orderingParty:
          $ref: "#/components/schemas/OrderingParty"
        consignee:
          $ref: "#/components/schemas/Consignee"
        sellerParty:
          $ref: "#/components/schemas/SellerParty"
        carrierParty:
          $ref: "#/components/schemas/CarrierParty"
        lineLevel:
          type: array
          xml:
            name: LineLevel
          items:
            $ref: "#/components/schemas/LineLevel"
      required:
        - issueDate
        - documentNumber
        - documentTypeCode
        - despatchDate
        - arrivalDate
        - buyerParty
      xml:
        name: desadv
    desadvA2:
      type: object
      properties:
        issueDate:
          type: string
          format: date
          xml:
            name: IssueDate
        documentNumber:
          type: string
          xml:
            name: DocumentNumber
        despatchDate:
          type: string
          format: date
          xml:
            name: DespatchDate
        arrivalDate:
          type: string
          xml:
            name: ArrivalDate
        measures:
          $ref: "#/components/schemas/MeasuresA2"
        references:
          type: array
          minItems: 1
          xml:
            name: References
          items:
            $ref: "#/components/schemas/ReferencesHeaderA2"
        buyerParty:
          $ref: "#/components/schemas/BuyerParty"
        supplierParty:
          $ref: "#/components/schemas/SupplierParty"
        orderingParty:
          $ref: "#/components/schemas/OrderingParty"
        consignee:
          $ref: "#/components/schemas/Consignee"
        lineLevel:
          type: array
          xml:
            name: LineLevel
          items:
            $ref: "#/components/schemas/LineLevelA2"
      required:
        - issueDate
        - documentNumber
        - despatchDate
        - buyerParty
        - consignee
        - references
      xml:
        name: desadv
    LineLevelA2:
      type: object
      properties:
        lineID:
          type: string
          xml:
            name: LineID
        orderType:
          type: string
          xml:
            name: OrderType
        references:
          $ref: "#/components/schemas/ReferencesLineA2"
        other:
          type: array
          items:
            $ref: "#/components/schemas/otherLineA2"
        Article:
          $ref: "#/components/schemas/Article"
      required:
        - lineID
        - Article
      xml:
        name: LineLevel
    LineLevel:
      type: object
      properties:
        lineID:
          type: string
          xml:
            name: LineID
        orderingMethod:
          type: string
          enum:
            - EI
            - EM
            - FX
            - HO
            - MA
            - MO
            - OT
            - TE
            - VM
            - WP
          xml:
            name: OrderingMethod
        references:
          type: array
          xml:
            name: References
          items:
            $ref: "#/components/schemas/ReferencesLine"
        orderedArticle:
          $ref: "#/components/schemas/OrderedArticle"
      required:
        - lineID
        - orderedArticle
      xml:
        name: LineLevel
    ReferencesRequest:
      type: object
      properties:
        referenceTypeCode:
          type: string
          enum:
            - 1AA
            - DQ
            - ON
            - VN
          xml:
            name: ReferenceTypeCode
        documentID:
          type: string
          xml:
            name: DocumentID
      required:
        - referenceTypeCode
        - documentID
      xml:
        name: References
    ReferencesRequestA2:
      type: object
      properties:
        deliveryNoteReference:
          type: string
          enum:
            - DQ
          xml:
            name: DeliveryNoteReference
        documentID:
          type: string
          xml:
            name: DocumentID
      required:
        - deliveryNoteReference
        - documentID
      xml:
        name: References
    ReferencesHeader:
      type: object
      properties:
        referenceTypeCode:
          type: string
          enum:
            - 1AA
            - BO
            - CR
            - DQ
            - IV
            - ON
            - VN
          xml:
            name: ReferenceTypeCode
        documentID:
          type: string
          xml:
            name: DocumentID
        issueDate:
          type: string
          format: date
          xml:
            name: IssueDate
      required:
        - referenceTypeCode
        - documentID
      xml:
        name: References
    ReferencesHeaderA2:
      type: object
      properties:
        suppliersOrderReference:
          $ref: "#/components/schemas/suppliersOrderReference"
        buyerOrderReference:
          $ref: "#/components/schemas/buyerOrderReference"
        customerReference:
          $ref: "#/components/schemas/customerReference"
        deliveryListReference:
          $ref: "#/components/schemas/deliveryListReference"
        other:
          type: array
          minItems: 1
          items:
            $ref: "#/components/schemas/other"
      xml:
        name: References
    suppliersOrderReference:
      type: object
      properties:
        documentID:
          $ref: "#/components/schemas/documentID"
      xml:
        name: SuppliersOrderReference
    buyerOrderReference:
      type: object
      properties:
        documentID:
          $ref: "#/components/schemas/documentID"
      xml:
        name: BuyerOrderReference
    blanketOrderReference:
      type: object
      properties:
        documentID:
          $ref: "#/components/schemas/documentID"
      xml:
        name: BlanketOrderReference
    customerReference:
      type: object
      properties:
        documentID:
          $ref: "#/components/schemas/documentID"
      xml:
        name: CustomerReference
    deliveryListReference:
      type: object
      properties:
        documentID:
          $ref: "#/components/schemas/documentID"
        issueDate:
          type: string
          format: date
          xml:
            name: IssueDate
      xml:
        name: DeliveryListReference
    ReferencesLineA2:
      type: object
      properties:
        suppliersOrderReference:
          $ref: "#/components/schemas/suppliersOrderReference"
        blanketOrderReference:
          $ref: "#/components/schemas/blanketOrderReference"
        buyerOrderReference:
          $ref: "#/components/schemas/buyerOrderReference"
        customerReference:
          $ref: "#/components/schemas/customerReference"
        deliveryListReference:
          $ref: "#/components/schemas/deliveryListReference"
      required:
        - referenceTypeCode
        - documentID
      xml:
        name: References
    ReferencesLine:
      type: object
      properties:
        referenceTypeCode:
          type: string
          enum:
            - 1AA
            - AAS
            - ABO
            - ACC
            - ACD
            - BM
            - BO
            - CR
            - SRN
            - UC
            - UCN
            - VN
          xml:
            name: ReferenceTypeCode
        documentID:
          $ref: "#/components/schemas/documentID"
        lineID:
          type: string
          xml:
            name: LineID
        issueDate:
          type: string
          format: date
          xml:
            name: IssueDate
      required:
        - referenceTypeCode
        - documentID
      xml:
        name: References
    documentID:
      type: string
      xml:
        name: DocumentID
    SellerParty:
      type: object
      properties:
        partyID:
          type: string
          xml:
            name: PartyID
        agencyCode:
          $ref: "#/components/schemas/AgencyCode"
      required:
        - partyID
        - agencyCode
      xml:
        name: SellerParty
    SupplierPartyRequest:
      type: object
      properties:
        partyID:
          type: string
          xml:
            name: PartyID
        agencyCode:
          $ref: "#/components/schemas/AgencyCode"
      required:
        - partyID
        - agencyCode
      xml:
        name: SupplierParty
    SupplierParty:
      type: object
      properties:
        partyID:
          type: string
          xml:
            name: PartyID
        agencyCode:
          $ref: "#/components/schemas/AgencyCode"
        salesContact:
          $ref: "#/components/schemas/SalesContact"
        shippingLocation:
          $ref: "#/components/schemas/ShippingLocation"
      required:
        - partyID
        - agencyCode
      xml:
        name: SupplierParty
    SalesContact:
      type: object
      properties:
        name:
          type: string
          xml:
            name: Name
      required:
        - name
      xml:
        name: SalesContact
    ShippingLocation:
      type: object
      properties:
        locationName:
          type: string
          xml:
            name: LocationName
      required:
        - locationName
      xml:
        name: ShippingLocation
    BuyerParty:
      type: object
      properties:
        partyID:
          type: string
          xml:
            name: PartyID
        agencyCode:
          $ref: "#/components/schemas/AgencyCode"
      required:
        - partyID
        - agencyCode
      xml:
        name: BuyerParty
    OrderingParty:
      type: object
      properties:
        partyID:
          type: string
          xml:
            name: PartyID
        agencyCode:
          $ref: "#/components/schemas/AgencyCode"
      required:
        - partyID
        - agencyCode
      xml:
        name: OrderingParty
    ConsigneeRequestA2:
      type: object
      properties:
        partyID:
          type: string
          xml:
            name: PartyID
        agencyCode:
          $ref: "#/components/schemas/AgencyCode"
      required:
        - partyID
        - agencyCode
      xml:
        name: Consignee
    ConsigneeRequest:
      type: object
      properties:
        partyID:
          type: string
          xml:
            name: PartyID
        agencyCode:
          $ref: "#/components/schemas/AgencyCode"
        name:
          type: array
          maxItems: 4
          xml:
            name: Name
          items:
            type: string
        address:
          $ref: "#/components/schemas/Address"
      required:
        - partyID
        - agencyCode
      xml:
        name: Consignee
    Consignee:
      type: object
      properties:
        partyID:
          type: string
          xml:
            name: PartyID
        agencyCode:
          $ref: "#/components/schemas/AgencyCode"
        name:
          type: array
          maxItems: 4
          xml:
            name: Name
          items:
            type: string
        address:
          $ref: "#/components/schemas/AddressGeo"
      required:
        - partyID
        - agencyCode
      xml:
        name: Consignee
    CarrierParty:
      type: object
      properties:
        partyID:
          type: string
          xml:
            name: PartyID
        agencyCode:
          $ref: "#/components/schemas/AgencyCodeCarrier"
      required:
        - partyID
        - agencyCode
      xml:
        name: CarrierParty
    AgencyCode:
      type: string
      enum:
        - "9"
        - "91"
        - "92"
      xml:
        name: AgencyCode
      description: |
        Applicable Codes:
          * `9` - EAN (International Article Numbering association)
          * `91` - Assigned by seller or seller's agent
          * `92` - Assigned by buyer or buyer's agent
    AgencyCodeCarrier:
      type: string
      enum:
        - "9"
        - "91"
        - "92"
        - "182"
      xml:
        name: AgencyCode
      description: |
        Applicable Codes:
          * `9` - EAN (International Article Numbering association)
          * `91` - Assigned by seller or seller's agent
          * `92` - Assigned by buyer or buyer's agent
          * `182` - US, Standard Carrier Alpha Code (Motor). Organisation maintaining the SCAC lists and transportation operating in North America
    Address:
      type: object
      properties:
        street:
          type: array
          xml:
            name: Street
          items:
            type: string
        city:
          type: string
          xml:
            name: City
        district:
          type: string
          xml:
            name: District
        postCode:
          type: string
          xml:
            name: PostCode
        subCountry:
          type: string
          xml:
            name: SubCountry
        countryCode:
          type: string
          xml:
            name: CountryCode
      required:
        - city
        - countryCode
      xml:
        name: Address
    AddressGeo:
      type: object
      properties:
        street:
          type: array
          xml:
            name: Street
          items:
            type: string
        city:
          type: string
          xml:
            name: City
        district:
          type: string
          xml:
            name: District
        postCode:
          type: string
          xml:
            name: PostCode
        subCountry:
          type: string
          xml:
            name: SubCountry
        countryCode:
          type: string
          xml:
            name: CountryCode
        geolocation:
          $ref: "#/components/schemas/Geolocation"
      required:
        - city
        - countryCode
      xml:
        name: Address
    Geolocation:
      type: object
      properties:
        latitude:
          type: string
          xml:
            name: Latitude
        longitude:
          type: string
          xml:
            name: Longitude
      required:
        - latitude
        - longitude
      xml:
        name: Geolocation
    other:
      type: object
      xml:
        name: Other
      properties:
        referenceTypeCode:
          type: string
          xml:
            name: ReferenceTypeCode
        documentID:
          $ref: "#/components/schemas/documentID"
    otherLineA2:
      type: object
      xml:
        name: Other
      properties:
        referenceTypeCode:
          type: string
          xml:
            name: ReferenceTypeCode
        documentID:
          $ref: "#/components/schemas/documentID"
        lineID:
          type: string
          xml:
            name: LineID
    Measures:
      type: object
      properties:
        grossWeight:
          $ref: "#/components/schemas/GrossWeight"
        netWeight:
          $ref: "#/components/schemas/NetWeight"
        volume:
          $ref: "#/components/schemas/Volume"
      required:
        - grossWeight
      xml:
        name: Measures
    MeasuresA2:
      type: object
      properties:
        grossWeight:
          $ref: "#/components/schemas/GrossWeight"
      required:
        - grossWeight
      xml:
        name: Measures
    GrossWeight:
      type: object
      properties:
        measure:
          type: number
          xml:
            name: Measure
        measureUnitCode:
          type: string
          xml:
            name: MeasureUnitCode
      required:
        - measure
        - measureUnitCode
      xml:
        name: GrossWeight
    NetWeight:
      type: object
      properties:
        measure:
          type: number
          xml:
            name: Measure
        measureUnitCode:
          type: string
          xml:
            name: MeasureUnitCode
      required:
        - measure
        - measureUnitCode
      xml:
        name: NetWeight
    Volume:
      type: object
      properties:
        measure:
          type: number
          xml:
            name: Measure
        measureUnitCode:
          type: string
          xml:
            name: MeasureUnitCode
      xml:
        name: Volume
    TotalQuantity:
      type: object
      properties:
        quantityValue:
          type: number
          xml:
            name: QuantityValue
        measureUnitCode:
          type: string
          xml:
            name: MeasureUnitCode
      required:
        - quantityValue
        - measureUnitCode
      xml:
        name: TotalQuantity
    OrderedArticleRequest:
      type: object
      properties:
        articleIdentification:
          $ref: "#/components/schemas/ArticleIdentification"
      required:
        - articleIdentification
      xml:
        name: OrderedArticle
    OrderedArticle:
      type: object
      properties:
        articleIdentification:
          $ref: "#/components/schemas/ArticleIdentification"
        articleDescription:
          $ref: "#/components/schemas/ArticleDescription"
        despatchedQuantity:
          $ref: "#/components/schemas/DespatchedQuantity"
        deliveryOption:
          type: array
          xml:
            name: DeliveryOption
          items:
            type: string
        tracingInformation:
          type: array
          xml:
            name: TracingInformation
          items:
            $ref: "#/components/schemas/TracingInformation"
      required:
        - articleIdentification
        - articleDescription
        - despatchedQuantity
      xml:
        name: OrderedArticle
    Article:
      type: object
      properties:
        articleIdentification:
          $ref: "#/components/schemas/ArticleIdentification"
        articleDescription:
          $ref: "#/components/schemas/ArticleDescription"
        despatchedQuantity:
          $ref: "#/components/schemas/DespatchedQuantity"
        tracingInformation:
          type: array
          xml:
            name: TracingInformation
          items:
            $ref: "#/components/schemas/TracingInformationA2"
      required:
        - articleIdentification
        - articleDescription
        - despatchedQuantity
    ArticleIdentification:
      type: object
      properties:
        buyersArticleID:
          type: string
          xml:
            name: BuyersArticleID
        manufacturersArticleID:
          type: string
          xml:
            name: ManufacturersArticleID
        eanuccarticleID:
          type: string
          xml:
            name: EANUCCArticleID
      xml:
        name: ArticleIdentification
    ArticleDescription:
      type: object
      properties:
        articleDescriptionText:
          type: array
          minItems: 1
          maxItems: 2
          items:
            type: string
          xml:
            name: ArticleDescriptionText
      required:
        - articleDescriptionText
      xml:
        name: ArticleDescription
    DespatchedQuantity:
      type: object
      properties:
        quantityValue:
          type: number
          xml:
            name: QuantityValue
        measureUnitCode:
          type: string
          xml:
            name: MeasureUnitCode
      required:
        - quantityValue
        - measureUnitCode
      xml:
        name: DespatchedQuantity
    TracingInformationA2:
      type: object
      properties:
        tracingID:
          $ref: "#/components/schemas/tracingID"
        serialNumber:
          $ref: "#/components/schemas/serialNumber"
      xml:
        name: TracingInformation
    TracingInformation:
      type: object
      properties:
        tracingID:
          $ref: "#/components/schemas/tracingID"
        serialNumber:
          $ref: "#/components/schemas/serialNumber"
        tracingURI:
          $ref: "#/components/schemas/tracingURI"
      xml:
        name: TracingInformation
    tracingID:
      type: string
      xml:
        name: TracingID
    serialNumber:
      type: string
      xml:
        name: SerialNumber
    tracingURI:
      type: string
      xml:
        name: TracingURI
  securitySchemes:
    BasicAuth:
      scheme: basic
      type: http
