Xentral SalesOrder API

SalesOrder

Operations 19

GET /api/v3/salesOrders List sales orders V3 #
POST /api/v3/salesOrders 🔒 Create sales order V3 #
GET /api/v3/salesOrders/{id} View sales order V3 #
DELETE /api/v3/salesOrders/{id} Delete sales order V3 #
PATCH /api/v3/salesOrders/{id} 🔒 Update sales order V3 #
PATCH /api/v3/salesOrders/{id}/actions/cancel Cancel sales order V3 #
PATCH /api/v3/salesOrders/{id}/actions/complete Complete sales order V3 #
PATCH /api/v3/salesOrders/{id}/actions/logActivity Log custom sales order activity V3 #
PATCH /api/v3/salesOrders/{id}/actions/release Release sales order V3 #
PATCH /api/v3/salesOrders/{id}/actions/removeWriteProtection Remove sales order write protection V3 #
PATCH /api/v3/salesOrders/{id}/actions/send Send sales order V3 #
PATCH /api/v3/salesOrders/{id}/actions/setWriteProtection Set sales order write protection V3 #
POST /api/v3/salesOrders/{id}/files Attach file to sales order V3 #
DELETE /api/v3/salesOrders/{id}/files/{fileId} Delete file from sales order V3 #
PATCH /api/v3/salesOrders/{id}/files/{fileId} Update file on sales order V3 #
POST /api/v3/salesOrders/{id}/lineItems 🔒 Create sales order line item V3 #
GET /api/v3/salesOrders/{id}/lineItems/{lineItemId} View sales order line item V3 #
DELETE /api/v3/salesOrders/{id}/lineItems/{lineItemId} Delete sales order line item V3 #
PATCH /api/v3/salesOrders/{id}/lineItems/{lineItemId} 🔒 Update sales order line item V3 #

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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 API
curl "https://apis.io/api/v1/apis/xentral-salesorder-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

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

Get an API key

Free tier, no email required.

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

OpenAPI Specification

xentral-salesorder-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Xentral Account Sales Order API
  version: v0.1
  description: Xentral is an ERP platform.
  contact:
    name: Xentral
    url: https://xentral.com
    email: api@xentral.com
servers:
- url: https://{xentralId}.xentral.biz
  description: Your Xentral Instance
  variables:
    xentralId:
      default: xentral
- url: https://{domain}
  description: Xentral at a custom domain
  variables:
    domain:
      default: xentral.com
security:
- BearerAuth: []
tags:
- name: SalesOrder
  description: SalesOrder
paths:
  /api/v3/salesOrders:
    get:
      tags:
      - SalesOrder
      summary: List sales orders V3
      description: 'This endpoint requires the following scopes: `salesOrder:read`.


        Paginated list of Sales Orders'
      operationId: GET::api-v3-salesorders
      parameters:
      - name: filter
        in: query
        description: "The filter parameter is used to filter the results of the given endpoint. \n\n\n**Supported filter operators by key:** \n\n`id`: *equals*, *notEquals*, *in*, *notIn* \n\n`documentNumber`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`documentDate`: *equals*, *notEquals*, *lessThan*, *lessThanOrEquals*, *greaterThan*, *greaterThanOrEquals* \n\n`writeProtection`: *equals*, *notEquals* \n\n`address.id`: *equals*, *notEquals*, *in*, *notIn* \n\n`project.id`: *equals*, *notEquals*, *in*, *notIn* \n\n`tags`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`tags.id`: *equals*, *notEquals*, *in*, *notIn* \n\n`language`: *equals*, *notEquals*, *in*, *notIn* \n\n`bodyIntroduction`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`bodyOutroduction`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`project.abbreviation`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`internalDesignation`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`vatId`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`deliveryTerms`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`internalComment`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`isDocumentSent`: *equals*, *notEquals* \n\n`editor.id`: *equals*, *notEquals*, *in*, *notIn* \n\n`createdAt`: *equals*, *notEquals*, *lessThan*, *lessThanOrEquals*, *greaterThan*, *greaterThanOrEquals*, *isNull*, *isNotNull* \n\n`updatedAt`: *equals*, *notEquals*, *lessThan*, *lessThanOrEquals*, *greaterThan*, *greaterThanOrEquals*, *isNull*, *isNotNull* \n\n`documentAddress.name`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`documentAddress.title`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`documentAddress.contactPerson`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`documentAddress.department`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`documentAddress.subDepartment`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`documentAddress.addressSupplement`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`documentAddress.street`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`documentAddress.zipCode`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`documentAddress.city`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`documentAddress.state`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`documentAddress.country`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`documentAddress.gln`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`documentAddress.email`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`documentAddress.phone`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`documentAddress.fax`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`financials.paymentMethod.id`: *equals*, *notEquals*, *in*, *notIn* \n\n`financials.tax.disableTaxNotice`: *equals*, *notEquals* \n\n`financials.tax.taxRates.standard`: *equals*, *notEquals*, *lessThan*, *lessThanOrEquals*, *greaterThan*, *greaterThanOrEquals* \n\n`financials.tax.taxRates.reduced`: *equals*, *notEquals*, *lessThan*, *lessThanOrEquals*, *greaterThan*, *greaterThanOrEquals* \n\n`financials.tax.taxation`: *equals*, *notEquals*, *in*, *notIn* \n\n`totals.net.amount`: *equals*, *notEquals*, *lessThan*, *lessThanOrEquals*, *greaterThan*, *greaterThanOrEquals* \n\n`totals.net.currency`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`financials.paymentTerms.paymentTargetDays`: *equals*, *notEquals*, *lessThan*, *lessThanOrEquals*, *greaterThan*, *greaterThanOrEquals* \n\n`financials.paymentTerms.paymentTargetDiscount`: *equals*, *notEquals*, *lessThan*, *lessThanOrEquals*, *greaterThan*, *greaterThanOrEquals* \n\n`financials.paymentTerms.paymentTargetDiscountDays`: *equals*, *notEquals*, *lessThan*, *lessThanOrEquals*, *greaterThan*, *greaterThanOrEquals* \n\n`totals.gross.amount`: *equals*, *notEquals*, *lessThan*, *lessThanOrEquals*, *greaterThan*, *greaterThanOrEquals* \n\n`trafficLights.stock`: *equals*, *notEquals* \n\n`trafficLights.vat`: *equals*, *notEquals* \n\n`trafficLights.cashOnDelivery`: *equals*, *notEquals* \n\n`trafficLights.autoShipping`: *equals*, *notEquals* \n\n`trafficLights.customerCheck`: *equals*, *notEquals* \n\n`trafficLights.dateOfDelivery`: *equals*, *notEquals* \n\n`trafficLights.creditLimit`: *equals*, *notEquals* \n\n`trafficLights.deliveryBlock`: *equals*, *notEquals* \n\n`trafficLights.addressValidation`: *equals*, *notEquals* \n\n`trafficLights.production`: *equals*, *notEquals*, *in*, *notIn* \n\n`trafficLights.payment`: *equals*, *notEquals*, *in*, *notIn* \n\n`trafficLights.stockAvailableOpenSupply`: *equals*, *notEquals*, *in*, *notIn* \n\n`trafficLights.stockAvailableFifo`: *equals*, *notEquals*, *in*, *notIn* \n\n`status`: *equals*, *notEquals*, *in*, *notIn* \n\n`sales.id`: *equals*, *notEquals*, *in*, *notIn* \n\n`costCenter`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`customerNumber`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`supplierNumber`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`deviatingDeliveryAddress.name`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`deviatingDeliveryAddress.title`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`deviatingDeliveryAddress.contactPerson`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`deviatingDeliveryAddress.department`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`deviatingDeliveryAddress.subDepartment`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`deviatingDeliveryAddress.addressSupplement`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`deviatingDeliveryAddress.street`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`deviatingDeliveryAddress.zipCode`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`deviatingDeliveryAddress.city`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`deviatingDeliveryAddress.state`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`deviatingDeliveryAddress.country`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`deviatingDeliveryAddress.gln`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`deviatingDeliveryAddress.email`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`deviatingDeliveryAddress.phone`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`deviatingDeliveryAddress.fax`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`isSalesOrderToSupplier`: *equals*, *notEquals* \n\n`externalOrderNumber`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`customerOrderNumber`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`transactionNumber`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`externalOrderId`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`masterReferenceNumber`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`desiredDeliveryDate`: *equals*, *notEquals*, *lessThan*, *lessThanOrEquals*, *greaterThan*, *greaterThanOrEquals* \n\n`desiredDeliveryDateAsCalendarWeek`: *equals*, *notEquals* \n\n`earliestFulfillmentDate`: *equals*, *notEquals*, *lessThan*, *lessThanOrEquals*, *greaterThan*, *greaterThanOrEquals* \n\n`reservationDate`: *equals*, *notEquals*, *lessThan*, *lessThanOrEquals*, *greaterThan*, *greaterThanOrEquals* \n\n`preferredWarehouse.id`: *equals*, *notEquals*, *in*, *notIn* \n\n`commissionConsignmentWarehouse.id`: *equals*, *notEquals*, *in*, *notIn* \n\n`storageCountry`: *equals*, *notEquals*, *in*, *notIn* \n\n`useAlternativeDocumentTitle`: *equals*, *notEquals* \n\n`autoDispatch`: *equals*, *notEquals* \n\n`vatChecked`: *equals*, *notEquals* \n\n`createDocuments`: *equals*, *notEquals*, *in*, *notIn* \n\n`manualPaymentApproval`: *equals*, *notEquals* \n\n`manualShippingCostApproval`: *equals*, *notEquals* \n\n`manualDeliveryBlockApproval`: *equals*, *notEquals* \n\n`fastLane`: *equals*, *notEquals* \n\n`disableCancellationEmail`: *equals*, *notEquals* \n\n`disableTrackingEmail`: *equals*, *notEquals* \n\n`disablePaymentEmail`: *equals*, *notEquals* \n\n`directDebitDate`: *equals*, *notEquals*, *lessThan*, *lessThanOrEquals*, *greaterThan*, *greaterThanOrEquals* \n\n`shippingMethod.id`: *equals*, *notEquals*, *in*, *notIn* \n\n`lineItems.externalNumber`: *equals*, *notEquals*, *in*, *notIn*, *contains*, *notContains*, *startsWith*, *endsWith* \n\n`hasInvoice`: *equals*, *notEquals*"
        required: false
        style: deepObject
        schema:
          type: array
          items:
            properties:
              key:
                type: string
                enum:
                - id
                - documentNumber
                - documentDate
                - writeProtection
                - address.id
                - project.id
                - tags
                - tags.id
                - language
                - bodyIntroduction
                - bodyOutroduction
                - project.abbreviation
                - internalDesignation
                - vatId
                - deliveryTerms
                - internalComment
                - isDocumentSent
                - editor.id
                - createdAt
                - updatedAt
                - documentAddress.name
                - documentAddress.title
                - documentAddress.contactPerson
                - documentAddress.department
                - documentAddress.subDepartment
                - documentAddress.addressSupplement
                - documentAddress.street
                - documentAddress.zipCode
                - documentAddress.city
                - documentAddress.state
                - documentAddress.country
                - documentAddress.gln
                - documentAddress.email
                - documentAddress.phone
                - documentAddress.fax
                - financials.paymentMethod.id
                - financials.tax.disableTaxNotice
                - financials.tax.taxRates.standard
                - financials.tax.taxRates.reduced
                - financials.tax.taxation
                - totals.net.amount
                - totals.net.currency
                - financials.paymentTerms.paymentTargetDays
                - financials.paymentTerms.paymentTargetDiscount
                - financials.paymentTerms.paymentTargetDiscountDays
                - totals.gross.amount
                - trafficLights.stock
                - trafficLights.vat
                - trafficLights.cashOnDelivery
                - trafficLights.autoShipping
                - trafficLights.customerCheck
                - trafficLights.dateOfDelivery
                - trafficLights.creditLimit
                - trafficLights.deliveryBlock
                - trafficLights.addressValidation
                - trafficLights.production
                - trafficLights.payment
                - trafficLights.stockAvailableOpenSupply
                - trafficLights.stockAvailableFifo
                - status
                - sales.id
                - costCenter
                - customerNumber
                - supplierNumber
                - deviatingDeliveryAddress.name
                - deviatingDeliveryAddress.title
                - deviatingDeliveryAddress.contactPerson
                - deviatingDeliveryAddress.department
                - deviatingDeliveryAddress.subDepartment
                - deviatingDeliveryAddress.addressSupplement
                - deviatingDeliveryAddress.street
                - deviatingDeliveryAddress.zipCode
                - deviatingDeliveryAddress.city
                - deviatingDeliveryAddress.state
                - deviatingDeliveryAddress.country
                - deviatingDeliveryAddress.gln
                - deviatingDeliveryAddress.email
                - deviatingDeliveryAddress.phone
                - deviatingDeliveryAddress.fax
                - isSalesOrderToSupplier
                - externalOrderNumber
                - customerOrderNumber
                - transactionNumber
                - externalOrderId
                - masterReferenceNumber
                - desiredDeliveryDate
                - desiredDeliveryDateAsCalendarWeek
                - earliestFulfillmentDate
                - reservationDate
                - preferredWarehouse.id
                - commissionConsignmentWarehouse.id
                - storageCountry
                - useAlternativeDocumentTitle
                - autoDispatch
                - vatChecked
                - createDocuments
                - manualPaymentApproval
                - manualShippingCostApproval
                - manualDeliveryBlockApproval
                - fastLane
                - disableCancellationEmail
                - disableTrackingEmail
                - disablePaymentEmail
                - directDebitDate
                - shippingMethod.id
                - lineItems.externalNumber
                - hasInvoice
              op:
                description: operator
                type: string
                enum:
                - equals
                - notEquals
                - in
                - notIn
                - contains
                - notContains
                - startsWith
                - endsWith
                - lessThan
                - lessThanOrEquals
                - greaterThan
                - greaterThanOrEquals
                - isNull
                - isNotNull
              value:
                description: The property value.
                oneOf:
                - title: String
                  type: string
                - title: Array
                  type: array
                  items:
                    type: string
            type: object
            additionalProperties: false
      - name: sort
        in: query
        description: Sort via id, -id, documentNumber, -documentNumber, documentDate, -documentDate, customerNumber, -customerNumber, documentAddress.country, -documentAddress.country, project.id, -project.id, createdAt, -createdAt, updatedAt and -updatedAt. Default sort is id
        required: false
        style: form
        explode: false
        schema:
          type: array
          items:
            enum:
            - id
            - -id
            - documentNumber
            - -documentNumber
            - documentDate
            - -documentDate
            - customerNumber
            - -customerNumber
            - documentAddress.country
            - -documentAddress.country
            - project.id
            - -project.id
            - createdAt
            - -createdAt
            - updatedAt
            - -updatedAt
      - name: search
        in: query
        description: Full-text-style search across predefined columns.
        required: false
        schema:
          type: string
      - name: include
        in: query
        required: false
        explode: false
        schema:
          type: array
          items:
            type: string
            enum:
            - lineItems
            - project
            - address
            - lineItems.product
            - tags
            - activity
            - customFields
            - lineItems.customFields
      - name: x-pagination
        in: header
        description: 'Controls the pagination format. Available types: simple, table, cursor. Defaults to ''simple'' if not specified.'
        required: false
        schema:
          type: string
          enum:
          - simple
          - table
          - cursor
          example: simple
      - name: perPage
        in: query
        description: 'Number of items per page. Default: 15, Max: 1000'
        required: false
        schema:
          type: integer
          example: 15
      - name: page
        in: query
        description: Page number. Only used with simple and table pagination.
        required: false
        schema:
          type: integer
          example: 1
      - name: cursor
        in: query
        description: The cursor to use for the paginated call. Only used with cursor pagination. Not compatible with page parameter
        required: false
        schema:
          type: string
          example: eyJpZCI6MTUsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0
      responses:
        '200':
          description: Paginated list of Sales Orders
          content:
            application/json:
              schema:
                anyOf:
                - title: 'Paginated Response: simple'
                  properties:
                    data:
                      type: array
                      items:
                        description: Sales order document
                        type: object
                        allOf:
                        - properties:
                            id:
                              description: ID of the document
                              type: string
                              example: '1'
                            documentNumber:
                              description: Document number. For drafts, this will be null.
                              type:
                              - string
                              - 'null'
                              example: I-12343
                            documentDate:
                              description: Main date of the document.
                              type:
                              - string
                              - 'null'
                              format: date
                              example: '2023-10-01'
                            writeProtection:
                              description: Indicates if the document is write protected.
                              type: boolean
                              example: false
                            customerNumber:
                              description: Customer number of the document.
                              type:
                              - string
                              - 'null'
                              example: CUST-54321
                            address:
                              description: Address entity of the document. By default, only the ID is returned. To get the full Address object, use the `include` parameter.
                              anyOf:
                              - required:
                                - id
                                - createdAt
                                - updatedAt
                                properties:
                                  id:
                                    type: string
                                    example: '42'
                                  isDeleted:
                                    description: Flagged if the entry was deleted.
                                    type: boolean
                                    example: false
                                  createdAt:
                                    description: Creation timestamp
                                    type: string
                                    format: date-time
                                    example: '2025-03-15T09:27:00+01:00'
                                  updatedAt:
                                    description: Last update timestamp
                                    type: string
                                    format: date-time
                                    example: '2025-10-20T14:45:12+01:00'
                                type: object
                                additionalProperties: false
                              - properties:
                                  id:
                                    type: string
                                type: object
                              - type: 'null'
                            project:
                              description: Project entity of the document. By default, only the ID is returned. To get the full Project object, use the `include` parameter.
                              anyOf:
                              - required:
                                - id
                                - name
                                - abbreviation
                                properties:
                                  id:
                                    type: string
                                    example: '54'
                                  name:
                                    type: string
                                    example: Standard Project
                                  abbreviation:
                                    type: string
                                    example: STANDARD
                                type: object
                                additionalProperties: false
                              - properties:
                                  id:
                                    type: string
                                type: object
                              - type: 'null'
                            tags:
                              description: Tags assigned to the document. This property is only returned if the `tags` include is used.
                              type: array
                              items:
                                properties:
                                  id:
                                    description: ID of the tag
                                    type: string
                                    example: '4'
                                  title:
                                    description: Title of the tag
                                    type: string
                                    example: important
                                type: object
                            documentAddress:
                              description: The recipients postal address of the document. This is is usually the postal address of the document's address entitiy, (e.g. customer), or is populated based on the preceding document. As this address is persisted on the document level, it can however be modified independently, and does not reflect changes that occurred since the document was created.
                              required:
                              - name
                              properties:
                                name:
                                  description: 'Represents an address consisting of a physical address and contact information.

                                    It is used in various documents, such as invoices, delivery notes, etc.'
                                  type: string
                                  example: John
                                type:
                                  type:
                                  - string
                                  - 'null'
                                  enum:
                                  - mrs
                                  - mr
                                  - company
                                  - other
                                  example: mr
                                title:
                                  type:
                                  - string
                                  - 'null'
                                  example: Ms.
                                contactPerson:
                                  type:
                                  - string
                                  - 'null'
                                  example: Laura Schneider
                                department:
                                  type:
                                  - string
                                  - 'null'
                                  example: Research & Development
                                subDepartment:
                                  type:
                                  - string
                                  - 'null'
                                  example: AI Lab
                                addressSupplement:
                                  type:
                                  - string
                                  - 'null'
                                  example: Gebäude B, 4. Etage
                                street:
                                  type:
                                  - string
                                  - 'null'
                                  example: Fuggerstraße 11
                                zipCode:
                                  type:
                                  - string
                                  - 'null'
                                  example: '86150'
                                city:
                                  type:
                                  - string
                                  - 'null'
                                  example: Augsburg
                                state:
                                  type:
                                  - string
                                  - 'null'
                                  example: BY
                                country:
                                  type:
                                  - string
                                  - 'null'
                                  example: DE
                                salutation:
                                  type:
                                  - string
                                  - 'null'
                                  example: Sehr geehrte Damen und Herren
                                gln:
                                  type:
                                  - string
                                  - 'null'
                                  example: '1234567890123'
                                email:
                                  type:
                                  - string
                                  - 'null'
                                  example: laura.schneider@xentral.com
                                phone:
                                  type:
                                  - string
                                  - 'null'
                                  example: +1-234-567-8900
                                fax:
                                  type:
                                  - string
                                  - 'null'
                                  example: +1-234-567-8901
                                mobile:
                                  type:
                                  - string
                                  - 'null'
                                  example: +1-234-567-8902
                              type: object
                              example:
                                name: John
                                type: mr
                                title: Ms.
                                contactPerson: Laura Schneider
                                department: Research & Development
                                subDepartment: CAI Lab
                                addressSupplement: Gebäude B, 4. Etage
                                street: Fuggerstraße 11
                                zipCode: '86150'
                                city: Augsburg
                                state: BY
                                country: DE
                                salutation: Sehr geehrte Damen und Herren
                                gln: '1234567890123'
                                email: alice@example.com
                                phone: +1-234-567-8900
                                fax: +1-234-567-8901
                                mobile: +1-234-567-8902
                              additionalProperties: false
                            internalDesignation:
                              description: Internal designation, might be displayed in the letterhead.
                              type:
                              - string
                              - 'null'
                              example: FB-3860-L
                            isDocumentSent:
                              description: Indicates if the document has been sent to the recipient.
                              type: boolean
                              example: false
                            language:
                              description: ISO 639-1 Language of the document.
                              type: string
                              example: de
                            bodyIntroduction:
                              description: Text displayed on the document before the line items.
                              type:
                              - string
                              - 'null'
                              example: Dear customer, we are pleased to send you the following invoice.
                            bodyOutroduction:
                              description: Text displayed on the document after the line items.
                              type:
                              - string
                              - 'null'
                              example: Thank you for your business.
                            vatId:
                              description: VAT ID of the document.
                              type:
                              - string
                              - 'null'
                              example: DE123456789
                            deliveryTerms:
                              description: Delivery terms of the document.
                              type:
                              - string
                              - 'null'
                              example: DDP
                            internalComment:
                              description: Internal comment, does not 

# --- truncated at 32 KB (668 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/xentral/refs/heads/main/openapi/xentral-salesorder-api-openapi.yml