swagger: '2.0'
info:
  title: ProCommerce API für Shopware
  description: >-
    Stellt Services zum Abgleich von Daten zwischen ProCommerce und Shopware zur
    Verfügung
  version: '20181205_15'
host: 192.168.115.30:8090
schemes:
  - http
security:
  - ApiBasicAuth: []
basePath: /procommerce/rest/tgetdata
produces:
  - application/json
securityDefinitions:
  ApiBasicAuth:
    type: basic
paths:
  /customers:
    get:
      summary: Kunden
      description: >
        Liefert Kunden zurück.


        Die Objekte werden aufsteigend sortiert nach dem letzten Änderungsdatum
        zurückgeliefert um beim gestückelten Abruf Lücken in der Übertragung zu
        verhindern.
      security:
        - ApiBasicAuth: []
      parameters:
        - name: skip
          in: query
          description: >-
            Auch "Offset". Gibt an, wieviele Datensätze aus der Gesamtmenge für
            die Rückgabe übersprungen werden sollen.
          required: false
          type: number
          format: integer
        - name: take
          in: query
          description: >-
            Auch "Limit". Gibt an, wieviele Datensätze zurückgegeben werden
            sollen.
          required: false
          type: number
          format: integer
        - name: since
          in: query
          description: >
            Einschränkung - schränkt auf solche Datensätze ein, deren
            Änderungsdatum gleich oder neuer dem

            übergebenen Wert ist. Das Änderungsdatum muss auf allen in der
            Rückgabe enthaltenen Informationen basieren.

            (Format: "yyyy-MM-dd HH:mm:ss", z.B. 2015-06-15 16:45:23)
          required: false
          type: string
          format: date-time
      tags:
        - Kunden
      responses:
        '200':
          description: Rückgabeojekt für Kategorien
          schema:
            $ref: '#/definitions/CustomerReturn'
        default:
          description: Unerwarteter Fehler
          schema:
            $ref: '#/definitions/Error'
  /customerGroups:
    get:
      summary: Kundengruppen (Preislisten)
      description: >
        Liefert Kundengruppen (Preislisten) zurück.


        Die Objekte werden aufsteigend sortiert nach dem letzten Änderungsdatum
        zurückgeliefert um beim gestückelten Abruf Lücken in der Übertragung zu
        verhindern.
      security:
        - ApiBasicAuth: []
      parameters:
        - name: skip
          in: query
          description: >-
            Auch "Offset". Gibt an, wieviele Datensätze aus der Gesamtmenge für
            die Rückgabe übersprungen werden sollen.
          required: false
          type: number
          format: integer
        - name: take
          in: query
          description: >-
            Auch "Limit". Gibt an, wieviele Datensätze zurückgegeben werden
            sollen.
          required: false
          type: number
          format: integer
        - name: since
          in: query
          description: >
            Einschränkung - schränkt auf solche Datensätze ein, deren
            Änderungsdatum gleich oder neuer dem

            übergebenen Wert ist. Das Änderungsdatum muss auf allen in der
            Rückgabe enthaltenen Informationen basieren.

            (Format: "yyyy-MM-dd HH:mm:ss", z.B. 2015-06-15 16:45:23)
          required: false
          type: string
          format: date-time
      tags:
        - Kundengruppen
      responses:
        '200':
          description: Rückgabeobjekt für Kundengruppen
          schema:
            $ref: '#/definitions/CustomerGroupReturn'
        default:
          description: Unerwarteter Fehler
          schema:
            $ref: '#/definitions/Error'
  /validatedOrders:
    post:
      summary: >-
        Validierung eines Auftrags und Ermittlung der Versandkosten und
        Verfügbarkeiten und Preise
      description: >
        Ermittelt zu einem übergebenen Warenkorb die Verfügbarkeit der Artikel
        und ermittelt die anfallenden Versandkosten. Zudem werden die Preise in
        Warenkorbpositionen (OrderDetail->Price) korrigiert zurückgeliefert,
        falls sich bspw. durch die Dosisartikelpreisfindung Abweichungen
        ergeben. Legt den Auftrag _nicht_ im System an.
      security:
        - ApiBasicAuth: []
      parameters:
        - name: order
          in: body
          description: >-
            Der zu validierende Auftrag wird übergeben. Versandkosten und
            ArticleAvailibilities sind in der Übergabe nicht gesetzt.
          required: true
          schema:
            $ref: '#/definitions/Order'
      tags:
        - Aufträge
      responses:
        '200':
          description: >
            Validierte Order. 

            Die Felder in OrderDetail->articleAvailibility einer jeden
            Auftragsposition sind nach den dort beschriebenen Regeln befüllt.
            Das Feld Order->invoiceShipping ist mit den ermittelten
            Versandkosten befüllt. Zudem werden die Preise in
            Warenkorbpositionen (OrderDetail->Price) korrigiert zurückgeliefert,
            falls sich bspw. durch die Dosisartikelpreisfindung Abweichungen
            ergeben.
          schema:
            $ref: '#/definitions/Order'
        default:
          description: Unerwarteter Fehler
          schema:
            $ref: '#/definitions/Error'
  /orders:
    post:
      summary: Erfassung eines Auftrags
      description: >
        Erfasst den übergebenen Auftrag.

        Liefert die selbe Antwort wie validatedOrders, legt aber zusätzlich den
        Auftrag im System an.
      security:
        - ApiBasicAuth: []
      parameters:
        - name: order
          in: body
          description: >-
            Der zu erfassende Auftrag wird übergeben. ArticleAvailibilities sind
            in der Übergabe nicht gesetzt.
          required: true
          schema:
            $ref: '#/definitions/Order'
      tags:
        - Aufträge
      responses:
        '200':
          description: |
            Erfasster Auftrag. Liefert die selbe Antwort wie validatedOrders.
          schema:
            $ref: '#/definitions/Order'
        default:
          description: Unerwarteter Fehler
          schema:
            $ref: '#/definitions/Error'
  /orderStates:
    get:
      summary: >-
        (initial keine Umsetzung - reiner Ausblick) - Liefert den Status von
        Aufträgen
      description: >
        Schnittstellenmethode ist initial nicht gefordert und somit weder im
        Shop noch in ProCommerce umzusetzen.


        Erhält ein Anfrageobjekt und liefert die angefragten Auftragsstatus
        zurück.
      security:
        - ApiBasicAuth: []
      parameters:
        - name: orderStatesFilter
          in: body
          description: Das Anfrageobjekt wird übergeben.
          required: true
          schema:
            $ref: '#/definitions/OrderStatesFilter'
      tags:
        - Aufträge
      responses:
        '200':
          description: |
            Liefert die angefragten Auftragsstatusinformationen.
          schema:
            $ref: '#/definitions/OrderStatesReturn'
        default:
          description: Unerwarteter Fehler
          schema:
            $ref: '#/definitions/Error'
  /categories:
    get:
      summary: Kategorien
      description: >
        Liefert strukturierte Kategorien für die Artikel zurück.


        Wird auch für Hauslisten verwendet.


        Die Objekte werden aufsteigend sortiert nach dem letzten Änderungsdatum
        zurückgeliefert um beim gestückelten Abruf Lücken in der Übertragung zu
        verhindern.
      security:
        - ApiBasicAuth: []
      parameters:
        - name: skip
          in: query
          description: >-
            Auch "Offset". Gibt an, wieviele Datensätze aus der Gesamtmenge für
            die Rückgabe übersprungen werden sollen.
          required: false
          type: number
          format: integer
        - name: take
          in: query
          description: >-
            Auch "Limit". Gibt an, wieviele Datensätze zurückgegeben werden
            sollen.
          required: false
          type: number
          format: integer
        - name: since
          in: query
          description: >
            Einschränkung - schränkt auf solche Datensätze ein, deren
            Änderungsdatum gleich oder neuer dem

            übergebenen Wert ist. Das Änderungsdatum muss auf allen in der
            Rückgabe enthaltenen Informationen basieren.

            (Format: "yyyy-MM-dd HH:mm:ss", z.B. 2015-06-15 16:45:23)
          required: false
          type: string
          format: date-time
      tags:
        - Kategorien
      responses:
        '200':
          description: Rückgabeojekt für Kategorien
          schema:
            $ref: '#/definitions/CategoryReturn'
        default:
          description: Unerwarteter Fehler
          schema:
            $ref: '#/definitions/Error'
  /articles:
    get:
      summary: Artikel
      description: >
        Liefert Artikel.


        Artikel sind über categories zu Kategorie-Ids zugeordnet.


        Die Objekte werden aufsteigend sortiert nach dem letzten Änderungsdatum
        zurückgeliefert um beim gestückelten Abruf Lücken in der Übertragung zu
        verhindern.
      security:
        - ApiBasicAuth: []
      parameters:
        - name: skip
          in: query
          description: >-
            Auch "Offset". Gibt an, wieviele Datensätze aus der Gesamtmenge für
            die Rückgabe übersprungen werden sollen.
          required: false
          type: number
          format: integer
        - name: take
          in: query
          description: >-
            Auch "Limit". Gibt an, wieviele Datensätze zurückgegeben werden
            sollen.
          required: false
          type: number
          format: integer
        - name: since
          in: query
          description: >
            Einschränkung - schränkt auf solche Datensätze ein, deren
            Änderungsdatum gleich oder neuer dem

            übergebenen Wert ist. Ändert sich bspw. ein Preis zu einem Artikel
            am 05.07.2016, so ist der Artikel zurückzuliefern, falls mit
            since=2016-07-01 00:00:00 angefragt wird

            (Format: "yyyy-MM-dd HH:mm:ss", z.B. 2015-06-15 16:45:23)
          required: false
          type: string
          format: date-time
      tags:
        - Artikel
      responses:
        '200':
          description: Rückgabeojekt für Artikel
          schema:
            $ref: '#/definitions/ArticleReturn'
        default:
          description: Unerwarteter Fehler
          schema:
            $ref: '#/definitions/Error'
  '/articleAvailibilities/{articleNumbers}':
    get:
      summary: Artikelverfügbarkeiten
      description: |
        Liefert Artikelverfügbarkeiten
      security:
        - ApiBasicAuth: []
      parameters:
        - name: articleNumbers
          in: path
          description: >-
            Die Artikelnummern der Artikel, für die die Verfügbarkeit ermittelt
            werden soll
          required: true
          type: array
          items:
            type: string
          collectionFormat: csv
      tags:
        - Verfügbarkeit
      responses:
        '200':
          description: Rückgabeojekt für Artikel
          schema:
            $ref: '#/definitions/ArticleAvailibilityReturn'
        default:
          description: Unerwarteter Fehler
          schema:
            $ref: '#/definitions/Error'
  /articleZippedImages:
    get:
      summary: Artikelbilder
      produces:
        - application/zip
      description: >
        Liefert die angefragten Artikelbilder in einem zip zurück. Selektion
        erfolgt auf Basis der aufsteigend nach Änderungsdatum sortierten
        Bildmenge.
      security:
        - ApiBasicAuth: []
      parameters:
        - name: skip
          in: query
          description: >-
            Auch "Offset". Gibt an, wieviele Bilder aus der Gesamtmenge für die
            Rückgabe übersprungen werden sollen.
          required: false
          type: number
          format: integer
        - name: take
          in: query
          description: 'Auch "Limit". Gibt an, wieviele Bilder zurückgegeben werden sollen.'
          required: false
          type: number
          format: integer
        - name: since
          in: query
          description: >
            Einschränkung - schränkt auf solche Bilder ein, deren Änderungsdatum
            gleich oder neuer dem

            übergebenen Wert ist. Ändert sich bspw. ein Bild am 05.07.2016, so
            ist das Bild zurückzuliefern, falls mit since=2016-07-01 00:00:00
            angefragt wird

            (Format: "yyyy-MM-dd HH:mm:ss", z.B. 2015-06-15 16:45:23)
          required: false
          type: string
          format: date-time
      tags:
        - Artikelbilder
      responses:
        '200':
          description: Rückgabeobjekt für Artikelbilder
          schema:
            type: file
        '204':
          description: Keine Bilder seit dem gegebenen Zeitpunkt vorhanden oder take = 0
        default:
          description: Unerwarteter Fehler
          schema:
            $ref: '#/definitions/Error'
  /discountGroups:
    get:
      summary: DiscountGroups
      description: >
        Liefert DiscountGroups zurück.


        Die Objekte werden aufsteigend sortiert nach dem letzten Änderungsdatum
        zurückgeliefert um beim gestückelten Abruf Lücken in der Übertragung zu
        verhindern.

        Initial werden die definierten Parameter skip, take und since ignoriert
        und stets alle DiscountGroups zurückgeliefert.
      security:
        - ApiBasicAuth: []
      parameters:
        - name: skip
          in: query
          description: >-
            Auch "Offset". Gibt an, wieviele Datensätze aus der Gesamtmenge für
            die Rückgabe übersprungen werden sollen.
          required: false
          type: number
          format: integer
        - name: take
          in: query
          description: >-
            Auch "Limit". Gibt an, wieviele Datensätze zurückgegeben werden
            sollen.
          required: false
          type: number
          format: integer
        - name: since
          in: query
          description: >
            Einschränkung - schränkt auf solche Datensätze ein, deren
            Änderungsdatum gleich oder neuer dem

            übergebenen Wert ist. Das Änderungsdatum muss auf allen in der
            Rückgabe enthaltenen Informationen basieren.

            (Format: "yyyy-MM-dd HH:mm:ss", z.B. 2015-06-15 16:45:23)
          required: false
          type: string
          format: date-time
      tags:
        - Artikel
      responses:
        '200':
          description: Rückgabeojekt für DiscountGroups
          schema:
            $ref: '#/definitions/DiscountGroupReturn'
        default:
          description: Unerwarteter Fehler
          schema:
            $ref: '#/definitions/Error'
  '/AdrLookup/{AddressNumber}':
    get:
      summary: AdrLookup
      description: |
        Lookup-Felder von Adressen
      security:
        - ApiBasicAuth: []
      parameters:
        - name: AddressNumber
          in: path
          description: 'Die AddressNummunern der Adressen, die nachgeschlagen werden sollen'
          required: true
          type: array
          items:
            type: string
          collectionFormat: csv
      tags:
        - Adressfelder
      responses:
        '200':
          description: Rückgabeojekt für AdrLookup
          schema:
            $ref: '#/definitions/AdrLookupReturn'
        default:
          description: Unerwarteter Fehler
          schema:
            $ref: '#/definitions/Error'
  /Auftraege:
    get:
      summary: Auftraege
      description: >
        Alle Auftraege, die aktualisiert wurden (sortiert nach Anlagedatum,
        ältester zuerst)
      security:
        - ApiBasicAuth: []
      parameters:
        - name: skip
          in: query
          description: >-
            Auch "Offset". Gibt an, wieviele Datensätze aus der Gesamtmenge für
            die Rückgabe übersprungen werden sollen.
          required: false
          type: number
          format: integer
        - name: take
          in: query
          description: >-
            Auch "Limit". Gibt an, wieviele Datensätze zurückgegeben werden
            sollen.
          required: false
          type: number
          format: integer
        - name: since
          in: query
          description: |
            Filter auf Auftragsdatum größer als since
          required: false
          type: string
          format: date-time
        - name: customerNumber
          in: query
          description: >-
            optionale Angabe; falls angegeben, werden nur Auftraege zu angegebenen customernumber zurückgegeben
          required: false
          type: string
        - name: ad_nummer
          in: query
          description: >-
            optionale Angabe; falls angegeben, werden nur Auftraege zu angegebenen ad_nummer (Auftragsnummer im ERP) zurückgegeben
          required: false
          type: string
      tags:
        - Auftraege
      responses:
        '200':
          description: Rückgabeojekt für Auftraege
          schema:
            $ref: '#/definitions/AdAuftraegeReturn'
        default:
          description: Unerwarteter Fehler
          schema:
            $ref: '#/definitions/Error'
  /Belege:
    get:
      summary: PDF-Belege zu einer Rechnungsnummer
      description: |
        Alle Belege zur übergebenen ad_rechnungsnummer
      security:
        - ApiBasicAuth: []
      parameters:
        - name: skip
          in: query
          description: >-
            Auch "Offset". Gibt an, wieviele Datensätze aus der Gesamtmenge für
            die Rückgabe übersprungen werden sollen.
          required: false
          type: number
          format: integer
        - name: take
          in: query
          description: >-
            Auch "Limit". Gibt an, wieviele Datensätze zurückgegeben werden
            sollen.
          required: false
          type: number
          format: integer
        - name: since
          in: query
          description: >
            Einschränkung - schränkt auf solche Datensätze ein, deren
            Änderungsdatum gleich oder neuer dem übergebenen Wert ist. Das
            Änderungsdatum muss auf allen in der Rückgabe enthaltenen
            Informationen basieren.

            (Format: "yyyy-MM-dd HH:mm:ss", z.B. 2015-06-15 16:45:23)
          required: false
          type: string
          format: date-time
        - name: ad_rechnungsnummer
          in: query
          description: >
            ad_Rechnungsnummer, zur der der Beleg zurückgegeben werden soll
          required: false
          type: string
      tags:
        - Belege
      responses:
        '200':
          description: Rückgabeojekt für Belege
          schema:
            $ref: '#/definitions/AdBelegeReturn'
        default:
          description: Unerwarteter Fehler
          schema:
            $ref: '#/definitions/Error'
  /Branding:
    get:
      summary: Branding
      description: |
        Alle Brandings
      security:
        - ApiBasicAuth: []
      tags:
        - Branding
      responses:
        '200':
          description: Rückgabeojekt für AdBranding
          schema:
            $ref: '#/definitions/AdBrandingReturn'
        default:
          description: Unerwarteter Fehler
          schema:
            $ref: '#/definitions/Error'
  /CartTemplate:
    get:
      summary: CartTemplate
      description: |
        Alle CartTemplates, geändert seit...
      security:
        - ApiBasicAuth: []
      parameters:
        - name: skip
          in: query
          description: >-
            Auch "Offset". Gibt an, wieviele Datensätze aus der Gesamtmenge für
            die Rückgabe übersprungen werden sollen.
          required: false
          type: number
          format: integer
        - name: take
          in: query
          description: >-
            Auch "Limit". Gibt an, wieviele Datensätze zurückgegeben werden
            sollen.
          required: false
          type: number
          format: integer
        - name: since
          in: query
          description: >
            Einschränkung - schränkt auf solche Datensätze ein, deren
            Änderungsdatum gleich oder neuer dem übergebenen Wert ist. Das
            Änderungsdatum muss auf allen in der Rückgabe enthaltenen
            Informationen basieren.

            (Format: "yyyy-MM-dd HH:mm:ss", z.B. 2015-06-15 16:45:23)
          required: false
          type: string
          format: date-time
      tags:
        - CartTemplates
      responses:
        '200':
          description: Rückgabeojekt für CartTemplates
          schema:
            $ref: '#/definitions/AdCartTemplateReturn'
        default:
          description: Unerwarteter Fehler
          schema:
            $ref: '#/definitions/Error'
  /Tracking:
    get:
      summary: Tracking
      description: |
        Alle Trackings, geändert seit...
      security:
        - ApiBasicAuth: []
      parameters:
        - name: skip
          in: query
          description: >-
            Auch "Offset". Gibt an, wieviele Datensätze aus der Gesamtmenge für
            die Rückgabe übersprungen werden sollen.
          required: false
          type: number
          format: integer
        - name: take
          in: query
          description: >-
            Auch "Limit". Gibt an, wieviele Datensätze zurückgegeben werden
            sollen.
          required: false
          type: number
          format: integer
        - name: since
          in: query
          description: >
            Einschränkung - schränkt auf solche Datensätze ein, deren
            Änderungsdatum gleich oder neuer dem übergebenen Wert ist. Das
            Änderungsdatum muss auf allen in der Rückgabe enthaltenen
            Informationen basieren.

            (Format: "yyyy-MM-dd HH:mm:ss", z.B. 2015-06-15 16:45:23)
          required: false
          type: string
          format: date-time
      tags:
        - Trackings
      responses:
        '200':
          description: Rückgabeojekt für Trackings
          schema:
            $ref: '#/definitions/AdTrackingReturn'
        default:
          description: Unerwarteter Fehler
          schema:
            $ref: '#/definitions/Error'
  /Statistik:
    get:
      summary: Statistik
      description: |
        Alle Statistiken, geändert seit...
      security:
        - ApiBasicAuth: []
      parameters:
        - name: skip
          in: query
          description: >-
            Auch "Offset". Gibt an, wieviele Datensätze aus der Gesamtmenge für
            die Rückgabe übersprungen werden sollen.
          required: false
          type: number
          format: integer
        - name: take
          in: query
          description: >-
            Auch "Limit". Gibt an, wieviele Datensätze zurückgegeben werden
            sollen.
          required: false
          type: number
          format: integer
        - name: since
          in: query
          description: >
            Einschränkung - schränkt auf solche Datensätze ein, deren
            Änderungsdatum gleich oder neuer dem übergebenen Wert ist. Das
            Änderungsdatum muss auf allen in der Rückgabe enthaltenen
            Informationen basieren.

            (Format: "yyyy-MM-dd HH:mm:ss", z.B. 2015-06-15 16:45:23)
          required: false
          type: string
          format: date-time
        - name: customerNumber     
          in: query
          description: >
            Kundennummer; optionale Angabe.
            Falls angegeben, werden ausschliesslich Statistiken zu diesem Kunden zurückgegeben; 
              Hinweis löscheinträge werden in diesem Fall nicht mit zurückgegeben
          required: false
          type: string
      tags:
        - Statistik
      responses:
        '200':
          description: Rückgabeojekt für Statistiken
          schema:
            $ref: '#/definitions/AdStatistikReturn'
        default:
          description: Unerwarteter Fehler
          schema:
            $ref: '#/definitions/Error'
  /Pricing:
    get:
      summary: Pricing
      description: |
        Alle Preise, geändert seit...
      security:
        - ApiBasicAuth: []
      parameters:
        - name: customer
          in: query
          description: Gibt die Kundennummer an
          required: false
          type: string
        - name: articles
          in: query
          description: Gibt die angefragten Artikel als Array an
          required: true
          type: array
          items:
            type: string
      tags:
        - Pricing
      responses:
        '200':
          description: Rückgabeojekt für AdPricing
          schema:
            $ref: '#/definitions/AdPricingReturn'
        default:
          description: Unerwarteter Fehler
          schema:
            $ref: '#/definitions/Error'
definitions:
  Address:
    type: object
    properties:
      countryId:
        type: string
        description: ISOCode (typischer Wert 'DE')
      stateId:
        type: string
        description: Bundesland; typischerweise mit 0 belegt
      company:
        type: string
        description: Firma
      department:
        type: string
        description: Abteilung
      salutation:
        type: string
        description: Anrede (nur die Werte "Herr" und "Frau" werden unterstützt.)
      titel:
        type: string
        description: Titel ("Prof. Dr.")
      firstName:
        type: string
        description: Vorname
      lastName:
        type: string
        description: Nachname
      street:
        type: string
        description: Straße
      streetNumber:
        type: string
        description: Hausnummer
      zipCode:
        type: string
        description: Postleitzahl
      city:
        type: string
        description: Ort
      phone:
        type: string
        description: Telefon - nur bei billingAddress (Rechnungsadresse) gesetzt
      fax:
        type: string
        description: Fax - nur bei billingAddress (Rechnungsadresse) gesetzt
      vatId:
        type: string
        description: Steuernummer - nur bei billingAddress (Rechnungsadresse) gesetzt
      birthday:
        type: string
        format: date-time
        description: Geburtstag - nur bei billingAddress (Rechnungsadresse) gesetzt
      attribute:
        type: array
        items:
          $ref: '#/definitions/Attribute'
        description: >-
          freie Attribute zum Objekt. Zum Zeitpunkt der Spezifikationserstellung
          nicht relevant.
  OrderDetail:
    type: object
    description: >-
      Warenkorbposition; Member articleAvailibility ist nur gesetzt in der
      Rückgabe der Endpunkte validatedOrders und orders.
    properties:
      tax:
        type: number
        description: Steuersatz in Prozent für diesen Artikel
      articleNumber:
        type: string
        description: Artikelnummer (typischerweise die PZN)
      ad_sprechstundenbedarf:
        type: boolean
        description: 'Gibt an, ob die Auftragsposition als SSB bestellt wird.'
      ad_entnahmematerial:
        type: boolean
        description: 'Gibt an, ob die Auftragsposition als Entnahmematerial bestellt wird.'
      price:
        type: number
        description: Preis eines Artikel im Shop netto
      quantity:
        type: number
        description: bestellte Menge des Artikel
      articleAvailibility:
        $ref: '#/definitions/ArticleAvailibility'
      articleName:
        type: string
        description: Artikelbezeichnung
      unit:
        type: string
        description: >-
          Mengeneinheit des Artikels. Mögliche Werte / Definition siehe Feld
          MainDetail->unit.
      attribute:
        type: array
        items:
          $ref: '#/definitions/Attribute'
        description: >-
          freie Attribute zum Objekt. Zum Zeitpunkt der Spezifikationserstellung
          nicht relevant.
  Order:
    type: object
    properties:
      orderNumber:
        type: string
        description: Auftragsnummer des Shops
      customerNumber:
        type: string
        description: Kundennummer
      customer:
        type: string
        description: >-
          Nutzer-Id (Email-Adresse) der Nutzers, der die Bestellung ausgelöst
          hat
      invoiceShipping:
        type: number
        description: Versandkosten netto
      basketPosition:
        type: array
        items:
          $ref: '#/definitions/OrderDetail'
        description: Ein Array von Warenkorbpositionen
      billingAddress:
        $ref: '#/definitions/Address'
      shippingAddress:
        $ref: '#/definitions/Address'
      comment:
        type: string
        description: 'Kommentar des Nutzers, der bei einer Bestellung übergeben werden kann'
      ad_delivery_ad_search_number:
        type: string
        description: >-
          Sonderfeld ML - Sonderadressen werden nachträglich gekennzeichnet,
          sodass  man "Vertreter"-Bestellungen Referenzierne kann...  Da
          Bestelladressen Adressbuchunabhängig pro Bestellung gespeichert
          werden, ist dieser Schritt wahrscheinlich nicht notwendig, ein Flag
          könnte diese Aufgabe übernehmen...
  ArticleAvailibilityReturn:
    type: object
    properties:
      meta:
        $ref: '#/definitions/MetaReturn'
      articleAvailibilities:
        type: array
        items:
          $ref: '#/definitions/ArticleAvailibility'
        description: Ein Array von Artikelverfügbarkeiten.
  OrderStatesFilter:
    type: object
    properties:
      meta:
        $ref: '#/definitions/MetaReturn'
      since:
        description: >
          Einschränkung - schränkt auf solche Datensätze ein, deren
          Änderungsdatum gleich oder neuer dem

          übergebenen Wert ist.

          (Format: "yyyy-MM-dd HH:mm:ss", z.B. 2015-06-15 16:45:23)
        type: string
        format: date-time
      orderNumber:
        type: string
        description: 'Auftragsnummer des Shops, wie in /orders übergeben'
  OrderStatesReturn:
    type: object
    properties:
      meta:
        $ref: '#/definitions/MetaReturn'
      OrderState:
        type: array
        items:
          $ref: '#/definitions/OrderState'
        description: Ein Array von OrderStates.
  OrderState:
    type: object
    properties:
      orderNumber:
        type: string
        description: 'Auftragsnummer des Shops, wie in /orders übergeben'
      orderStatus:
        type: string
        description: |
          Bestellstatus des Auftrags<br>
          Mögliche Werte:<br>
          - "Offen"<br>
          - "In Bearbeitung (Wartet)"<br>
          - "Komplett abgeschlossen"<br>
          - "Teilweise abgeschlossen"<br>
          - "Storniert / Abgelehnt"<br>
          - "Zur Lieferung bereit"<br>
          - "Teilweise ausgeliefert"<br>
          - "Komplett ausgeliefert"<br>
          - "Klärung notwendig"<br>
      trackingNumbers:
        type: array
        items:
          $ref: '#/definitions/Tracking'
        description: >-
          Trackingnummern der Lieferungen zu diesem Auftrag (optional; zur
          späteren Verwendung; kann vorerst leer bleiben)
  Tracking:
    type: object
    properties:
      trackingUrl:
        type: string
        description: URL zur Lieferungsverfolgung
      trackingNumber:
        type: string
        description: Tracking-Nummer zur Lieferungsverfolgung
  CustomerGroupReturn:
    type: object
    properties:
      meta:
        $ref: '#/definitions/MetaReturn'
      customerGroups:
        type: array
        items:
          $ref: '#/definitions/CustomerGroup'
        description: Ein Array von Kundengruppen.
  CustomerReturn:
    type: object
    properties:
      meta:
        $ref: '#/definitions/MetaReturn'
      customers:
        type: array
        items:
          $ref: '#/definitions/Customer'
        description: Ein Array von Kunden.
  DiscountGroupReturn:
    type: object
    properties:
      meta:
        $ref: '#/definitions/MetaReturn'
      discountGroups:
        type: array
        items:
          $ref: '#/definitions/DiscountGroup'
        description: Ein Array von DiscountGroups.
  DiscountGroup:
    type: object
    properties:
      id:
        type: string
        description: ID der DiscountGroup
      name:
        type: string
        description: Name der DiscountGroup
      articleDiscounts:
        type: array
        items:
          $ref: '#/definitions/ArticleDiscount'
        description: Ein Array von ArticleDiscount (Artikelbezogenen Rabatten)
  ArticleDiscount:
    type: object
    properties:
      articleNumber:
        type: string
        description: Artikelnummer des rabattierten Artikels
      discount:
        type: number
        description: Rabatt des Artikels
  ArticleAvailibility:
    type: object
    properties:
      articleNumber:
        type: string
        description: 'Artikelnummer, auf die sich diese Verfügbarkeitinformation bezieht'
      available:
        type: boolean
        description: >-
          Ist dieser Artikel verfügbar? (ja/nein); gibt an, ob der Artikel
          verfügbar ist. Angabe ist im Shop nur relevant bei procurable=false.
      shippingDate:
        type: string
        format: date-time
        description: >-
          Liefertermin; optional; gibt den vorraussichtlichen Liefertermin an.
          Falls der Artikel nicht verfügbar ist, soll der voraussichtliche
          Termin der Wiederverfügbarkeit zurückgegeben werden, insofern
          vorhanden. Angabe ist im Shop nur relevant bei procurable=false und
          available=false.
  CustomerGroup:
    type: object
    properties:
      groupKey:
        type: string
        description: >-
          ID der Kundengruppe (Preisliste). <br> Maximale Länge 5 Zeichen aus
          a-zA-Z0-9.<br> Ist für die Standardpreisliste mit 'EK' belegt.
      name:
        type: string
        description: Bezeichung der Kundengruppe
      deleted:
        type: boolean
        description: Wurde diese Kundengruppe gelöscht?
      discount:
        description: Rabatt (0.3 => 30%)
        type: number
  Customer:
    type: object
    properties:
      customerNumber:
        type: string
        description: Kundennummer
      active:
        type: boolean
        description: >-
          Status des Kunden. Falls false gilt der Kunde als gesperrt, falls true
          darf der Kunde den Shop benutzen
      deleted:
        type: boolean
        description: >-
          Bei deleted=false oder Fehlen des Attributs deleted gilt der Kunde als
          nicht gelöscht. Bei deleted=true gilt der Kunde als gelöscht und kann
          somit den Shop in Folge nicht mehr benutzen.
      groupKey:
        type: string
        description: >-
          ID der Preisliste/Kundengruppe, der dieser Kunde zugeordnet ist. 
          Maximale Länge 5 Zeichen aus a-zA-Z0-9. Ist für die Standardpreisliste
          mit 'EK' belegt.
      email:
        type: string
        description: E-Mail-Adresse
      hashPassword:
        type: string
        description: >-
          das mit Bcrypt gehashte Passwort für den Kundenlogin (enstprechend der
          PHP Funktion password_hash)
      billingAddress:
        $ref: '#/definitions/Address'
      shippingAddress:
        $ref: '#/definitions/Address'
      ad_branding:
        type: string
        description: 1 Branding pro Kunde möglich
      ad_arztauswahl:
        type: boolean
        description: >-
          Erlaubt dem Zugang weitere Adressen im Checkout auswählen zu können
          (auf Basis der Kundengruppe)
      ad_zusatzemail:
        type: string
        description: Emailadresse für eine Kopie der Bestellbestätigung
      ad_kategorien_view:
        type: string
        description: |
          "default" und "compact" um die letzte Auswahl des Kunden zu speichern
      ad_passwort_manuell:
        type: boolean
        description: >-
          Wenn das Kennwort vom Kunden geändert wurde, soll es nicht aus PC
          erneut übertragen werden!!!
      ad_zahlungsart:
        type: string
        description: Ermittlung der Default-Zahlungsart des Kunden
      pc_KVABR:
        type: boolean
        description: Sprechstundenbedarf erlaubt
      pc_entnahmematerial:
        type: boolean
        description: KOLO erlaubt
      ad_customers_default_shipping_address_id:
        type: number
        format: int32
        description: Standard Versandadresse
      ad_customers_default_invoice_address_id:
        type: number
        format: int32
        description: 'Standard Rechnungsadresse,'
      ad_upd:
        type: boolean
        description: >-
          signalisiert Adressen die durch PC verändert werden sollen, wenn der
          Wert auf false steht, dann erfolgt kein Sync (z.B. für Admins)
      ad_upd_ts:
        type: string
        format: date-time
        description: letztes Aktualisierungsdatum durch PC
      ad_zusatzlisten:
        type: string
        description: >
          Abweichend vom bisherigen Konzept können zusatzlisten nun 0 zu n
          übertragen werden, keine fortlaufenden Felder nötig!  [123, 124, 125]
      ad_cart_templates:
        type: array
        items:
          $ref: '#/definitions/AdCartTemplateToCustomer'
      ad_crm:
        type: array
        items:
          $ref: '#/definitions/AdAddressCRM'
  ArticleReturn:
    type: object
    properties:
      meta:
        $ref: '#/definitions/MetaReturn'
      articles:
        type: array
        items:
          $ref: '#/definitions/Article'
        description: >-
          Ein Array von Artikeln. Artikel werden nach modificationDate
          aufsteigend und nach PZN aufsteigend sortiert zurückgeliefert.
  CategoryReturn:
    type: object
    properties:
      meta:
        $ref: '#/definitions/MetaReturn'
      categories:
        type: array
        items:
          $ref: '#/definitions/Category'
        description: >
          Ein Array von Kategorien.

          In der Schnittstelle zwischen ABDARest zu ProCommerce werden die
          manuell in der Konfiguration definierten Kategorien werdenin den
          ersten Arraypositionen geliefert, in Folge werden die ABDA-basierenden
          Kategorien nach modificationDate aufsteigend und Id aufsteigend
          sortiert zurückgeliefert.
  Article:
    type: object
    properties:
      name:
        type: string
        description: Name / Bezeichnung des Artikels
      active:
        type: boolean
        description: Soll dieser Artikel im Shop gekauft werden können?
      deleted:
        type: boolean
        description: Wurde dieser Artikel gelöscht?
      tax:
        type: number
        description: Steuersatz in Prozent für diesen Artikel
      supplier:
        $ref: '#/definitions/Supplier'
      categories:
        type: array
        items:
          type: string
        description: >-
          IDs der Kategorien in denen der Artikel dargestellt werden soll;
          typischerweise der ATC-Code. <br> Beginnt typischerweise mit X, falls
          die Kategorie per Konfiguration zusätzlich definiert wurde.<br>
          Anmerkung: Führt auch die Hauslisten-Kategorien mit auf, in denen
          dieser Artikel enthalten ist.
      images:
        type: array
        items:
          type: string
        description: >-
          Namen der Bilder, die zum Artikel gehören<br> Endet typischerweise mit
          .jpg<br>
      mainDetail:
        $ref: '#/definitions/MainDetail'
      descriptionLong:
        type: string
        description: Beschreibung des Artikels
      propertyValues:
        type: array
        items:
          $ref: '#/definitions/PropertyValue'
      modificationDate:
        type: string
        format: date-time
        description: Zeitpunkt der letzten Aktualisierung dieses Datensatzes
      ad_folge_articles:
        type: array
        items:
          $ref: '#/definitions/AdFolgeArtikel'
  Supplier:
    type: object
    properties:
      Key_ADR:
        type: number
        description: ID des Suppliers (Hersteller/Lieferant)
      Firmenname:
        type: string
        description: Firmenname/Bezeichnung des Suppliers
  PropertyValue:
    type: object
    properties:
      option:
        type: string
        description: >
          Bezeichnung der Option. Mögliche Werte: 'Apothekenpflicht',
          'Rezeptpflicht', 'Darreichungsform', 'Vertriebsstatus',
          'Verkehrsstatus', 'Reimport', 'Mwst', 'Tierarzneimittel',
          'Arzneimittel', 'Medizinprodukt', 'Kuehlkette', 'BTM',
          'Droge_Chemikalie', 'TFG', 'AMPreisV_AMG', 'AMPreisV_SGB', 'T_Rezept'
      value:
        type: string
        description: >
          Wert der Option ('ja', 'nein' oder 'Globuli', ....)<br>

          Mögliche Werte bei Option 'Apothekenpflicht': 'ja', 'nein',
          'nein/Ausnahmeregel'<br>

          Mögliche Werte bei Option 'Rezeptpflicht': 'ja', 'nein',
          'ja/Ausnahmeregel', 'nein/Ausnahmeregel'<br>

          Mögliche Werte bei Option 'Darreichungsform': freier Text mit bis zu
          60 Zeichen, z.B. 'Globuli'<br>

          Mögliche Werte bei Option 'Vertriebsstatus': 'keine Angabe', 'außer
          Vertrieb', 'im Vertrieb', 'zurückgezogen'<br>

          Mögliche Werte bei Option 'Verkehrsstatus': 'keine Angabe', 'nicht
          verkehrsfähig', 'verkehrsfähig', 'Verkehrsfähigkeit in Prüfung'<br>

          Mögliche Werte bei Option 'Reimport': 'ja', 'nein'<br>

          Mögliche Werte bei Option 'Mwst': 'keine Angabe', 'voll',
          'ermaessigt', 'ohne'<br>

          Mögliche Werte bei Option 'Tierarzneimittel': 'keine Angabe', 'nein',
          'ja'<br>

          Mögliche Werte bei Option 'Arzneimittel': 'keine Angabe', 'nein',
          'ja'<br>

          Mögliche Werte bei Option 'Medizinprodukt': 'keine Angabe', 'nein',
          'ja'<br>

          Mögliche Werte bei Option 'Kuehlkette': 'keine Angabe', 'nein',
          'ja'<br>

          Mögliche Werte bei Option 'BTM': 'keine Angabe', 'nein', 'ja', 'ja,
          ausgenommene Zubereitung'<br>

          Mögliche Werte bei Option 'Droge_Chemikalie': 'keine Angabe', 'nein',
          'ja'<br>

          Mögliche Werte bei Option 'TFG' (Transfusionsgesetz) : 'keine Angabe',
          'nein', 'ja'<br>

          Mögliche Werte bei Option 'AMPreisV_AMG': 'keine Angabe', 'nein',
          'ja', 'Rezepturzuschlag'<br>

          Mögliche Werte bei Option 'AMPreisV_SGB': 'keine Angabe', 'nein',
          'ja', 'Rezepturzuschlag'<br>

          Mögliche Werte bei Option 'T_Rezept': 'keine Angabe', 'nein', 'ja'<br>
      key:
        type: string
        description: Schlüssel zum Wert (~ABDA-Enumerations-Schlüssel)
  MainDetail:
    type: object
    properties:
      number:
        type: string
        description: Artikelnummer (typischerweise die PZN)
      prices:
        type: array
        items:
          $ref: '#/definitions/Price'
      unit:
        type: string
        description: |
          Schlüssel müssen von der ShopWare-Schnittstelle angelegt werden
      purchaseUnit:
        type: string
        description: 'Verpackungsgröße (numerisch, z.B. 50)'
      purchasePrice:
        type: number
        description: Apothekeneinkaufspreis
      referenceUnit:
        type: string
        description: 'kleinste Einheit (für Grundpreisberechnung), typischerweise 1'
      ad_bezeichnung2:
        type: string
        description: Bezeichnung2
      ad_bezeichnung3:
        type: string
        description: Bezeichnung3
      ad_sort:
        type: number
        format: int32
        description : |
          Sortierungsreihenfolge festlegen (integer)
      ad_upd:
        type: boolean
        description : |
          signalisiert Artikel die durch PC verändert werden sollen
      ad_upd_ts:
        type: string
        format: date-time
        description: |
          letzte Aktualisierung durch PC (Timestamp)
      ad_sprechstundenbedarf:
        type: boolean
        description: |
          Sprechstundenbedarf erlaubt (true/false)
      ad_entnahmematerial:
        type: boolean
        description: |
          KOLO erlaubt (true/false)
      ad_pzn:
        type: string
        description : |
          Übertrag der PZN
      ad_auslaufartikel:
        type: boolean
        description : |
          Kennzeichnung ob es sich um ein Auslaufprodukt 
      ad_zertifikat:
        type: string
        description : |
          Dokumentenname für hinterlegtes Zertifikat
      ad_aktion:
        type: boolean
        description : |
          Das Produkt ist zz. ein Aktionsprodukt
      attribute:
        type: array
        items:
          $ref: '#/definitions/Attribute'
        description: |
          Definierte Attibute-Namen sind: |
            Keine
  Attribute:
    type: object
    description: frei definierbares Attribut.
    properties:
      attributename:
        type: string
        description: Name des Attributs.
      attributevalue:
        type: string
        description: Wert des Attributs.
  Price:
    type: object
    description: >-
      Einer einzelner Preis zu einem Artikel. Wird je Staffelstufe (bei
      Staffelpreisen) und Kundengruppe geliefert. Kundenwarengruppenrabatte sind
      in die hier übergebenen Preise bereits eingerechnet.
    properties:
      groupKey:
        type: string
        description: >
          ID der Preisliste/Kundengruppe, für die dieser Preis gilt. 

          Maximale Länge 5 Zeichen aus a-zA-Z0-9.<br> <br>

          Für PC zu Shopware gilt:

          Ist für die Standardpreisliste mit "1" (EK) belegt.

          Ist mit dem Schlüssel der Preisliste/Kundengruppe für alle anderen
          Preislisten/Kundengruppen belegt.

          Die Kundengruppen/Preislisten-Hierarchie 

          (sowie das Mapping der Schlüssel auf den Klarnamen) steht über den
          Service Pricelists zur Verfügung)<br> <br>

          Für ABDA-REST zu PC gilt:

          Ist mit dem Schlüssel der Preisliste/Kundengruppe für alle anderen
          Preislisten/Kundengruppen belegt.<br> <br>

          Mögliche Werte:<br>

          EK       => Prio1: Apothekenverkaufspreis, Prio2: UVP<br>

          ApU      => Abgabepreis pharmazeutischer Unternehmer<br>

          Apo_Ek   => Apothekeneinkaufspreis<br>

          Apo_Vk   => Apothekenverkaufspreis<br>

          UVP      => Unverbindliche Preisempfehlung<br>
      from:
        type: number
        description: >-
          untere Anzahl bei Staffelpreis (wird inkl. gewertet). Wird nicht
          übertragen, falls kein Staffelpreis. Wird bei Abruf aus ABDATA-Quellen
          nicht übertragen.
      to:
        type: number
        description: >-
          obere Anzahl bei Staffelpreis (wird inkl. gewertet). Wird nicht
          übertragen, falls kein Staffelpreis. Wird bei Abruf aus ABDATA-Quellen
          nicht übertragen. Ist mit '-1' zu belegen für höchste Staffel (z.B.
          folgende  Abschnitte (1,10) (11,20) (21,-1)). -1 steht hierbei für
          'beliebig'.
      price:
        type: number
        description: Verkaufspreis in netto
      pseudoprice:
        type: number
        description: Pseudopreis in netto
      baseprice:
        type: number
        description: >-
          Einkaufspreis in netto (Attribut ist nicht verpflichtend bei Übergabe
          in den Shop)
  Category:
    type: object
    properties:
      id:
        type: string
        description: >-
          ID der Kategorie; typischerweise ATC-Code. Beginnt typischerweise mit
          X, falls die Kategorie per Konfiguration zusätzlich definiert wurde.
      name:
        type: string
        description: Bezeichnung und Anzeigename der Kategorie.
      active:
        type: boolean
        description: >-
          Status der Kategorie. Falls true soll diese Kategorie im Shop
          angezeigt werden. Falls false, soll diese Kategorie nicht im Shop
          angezeigt werden.
      deleted:
        type: boolean
        description: Wurde diese Kategorie gelöscht?
      modificationDate:
        type: string
        format: date-time
        description: Zeitpunkt der letzten Aktualisierung dieses Datensatzes
  MetaReturn:
    type: object
    description: Meta-Daten zum Ergebnis.
    properties:
      skip:
        description: >-
          Auch "Offset". Gibt an, wieviele Datensätze aus der Gesamtmenge für
          die Rückgabe übersprungen wurden.
        type: number
        format: integer
      take:
        description: 'Auch "Limit". Gibt an, wieviele Datensätze angefragt wurden.'
        type: number
        format: integer
      since:
        description: |
          Einschränkung - die gewünschte zeitliche Einschränkung aus der Anfrage
        type: string
        format: date-time
      total:
        description: Anzahl der Datensätze insgesamt.
        type: number
        format: integer
      debugInfos:
        description: optionale Debuginformationen
        type: string
  Error:
    type: object
    properties:
      code:
        type: integer
        format: int32
      message:
        type: string
      fields:
        type: string
  AdAddressCRM:
    type: object
    properties:
      ad_customerId:
        description: Kundennummer
        type: string
      ad_fieldName:
        description: Name des Felds
        type: string
      ad_strvalue:
        description: |
          Value, falls Feld String
        type: string
      ad_intvalue:
        description: |
          Value, falls Feld integer
        type: integer
        format: int32
      ad_floatvalue:
        description: |
          Value, falls Feld float
        type: number
      ad_datevalue:
        description: |
          Value, falls Feld timestamp
        type: string
        format: date-time
  AdBrandingReturn:
    type: object
    properties:
      meta:
        $ref: '#/definitions/MetaReturn'
      Branding:
        type: array
        items:
          $ref: '#/definitions/AdBranding'
        description: |
          Ein Array von Brandings.
  AdBranding:
    type: object
    properties:
      ad_name:
        description: |
          Labor / Branding-Name -> key
        type: string
      ad_email:
        description: |
          E-Mail-Adresse für Labormaterial
        type: string
      ad_artid:
        description: |
          Artikel-Prefix zur Laborkennung
        type: string
      ad_farbe:
        description: |
          Farbe zur Darstellung von Laborspezifischen Listen
        type: string
      ad_einzelMail:
        description: >
          Kennzeichen für die Gruppierung von Brandingartikel
          (Brandingunabhängig) und den Versand einer einzelnen Labor-Bestellung
        type: boolean
      ad_immerMail:
        description: >
          Ausnahme für den Parameter "Einzelmail", brandingunabhängig erhält das
          hinterlegte Labor Produkte, welche mit seinem Branding versehen sind
        type: boolean
  AdrLookupReturn:
    type: object
    properties:
      meta:
        $ref: '#/definitions/MetaReturn'
      AdrLookup:
        type: array
        items:
          $ref: '#/definitions/AdrLookup'
        description: |
          Ein Array von AdrLookups.
  AdrLookup:
    type: object
    properties:
      ad_id:
        description: |
          LookupID
        type: string
      ad_art:
        description: |
          akt. 1 für Bereichlookup (Alg med. / Chirugie / etc. )
        type: integer
        format: int32
      ad_bezeichnung:
        description: |
          Anzeigename
        type: string
  AdCartTemplateReturn:
    type: object
    properties:
      meta:
        $ref: '#/definitions/MetaReturn'
      AdCartTemplate:
        type: array
        items:
          $ref: '#/definitions/AdCartTemplate'
        description: |
          Ein Array von CartTemplates.
  AdCartTemplate:
    type: object
    properties:
      ad_id:
        description: |
          Name / Key des Templates
        type: string
      ad_beschreibung:
        description: |
          Beschreibung des Templates
        type: string
      ad_entnahmeliste:
        description: |
          Alle Produkte dieser Liste werden als Kolo-Produkte behandelt
        type: boolean
      ad_bestellliste:
        description: >
          Kennzeichen ob die Liste "übertragen" wurde, oder Kundeneigen erstellt
          wurde
        type: boolean
      ad_deleted:
        description: |
          nur gesetzt, wenn das CartTemplate zu löschen ist.
          Ist dieses Flag  gesetzt, so  wird gilt das Template mit dem gegebenen ad_id (Name / Key des Templates) als gelöscht
        type: boolean
      ad_content:
        type: array
        items:
          $ref: '#/definitions/AdCartTemplateContent'
  AdCartTemplateContent:
    type: object
    properties:
      ad_id:
        description: |
          Name / Key des Templates
        type: string
      ad_articleId:
        description: |
          article -> name
        type: string
      ad_ssb_mode:
        description: |
          0 = HW, 1 = SSB, 2 = KOLO
        type: integer
        format: int32
      ad_menge:
        description: |
          "Vorschlagsmenge" bei Bestellungen (rein informativ!)
        type: integer
        format: int32
      ad_sort:
        description: |
          Sortierzahl
        type: integer
        format: int32
      ad_headline:
        description: |
          Falls die Position eine Reine "Überschrift" darstellen soll
        type: string
      ad_alternativbezeichnung:
        description: >
          Falls die Position innerhalb dieser LIste eine andere Bezeichnung
          haben soll
        type: string
  AdCartTemplateToCustomer:
    type: object
    properties:
      ad_id:
        description: |
          Name / Key des AdCartTemplateToCustomers
        type: string
      ad_customerId:
        description: |
          Kundennummer
        type: string
  AdFolgeArtikel:
    type: object
    properties:
      ad_mainId:
        description: |
          Key des MainProducts -> Article "name"
        type: string
      ad_subId:
        description: |
          Key des SubProducts -> Article "name"
        type: string
      ad_menge:
        description: Menge bei Folgeprodukt-Übernahmen
        type: number
        format: int32
  AdKatalog:
    type: object
    properties:
      ad_id:
        description: |
          Key des Katalogs (PC / SL Name)
        type: string
      ad_verzeichnis:
        description: Ablagepfad
        type: string
  AdAuftraegeReturn:
    type: object
    properties:
      meta:
        $ref: '#/definitions/MetaReturn'
      AdAuftraege:
        type: array
        items:
          $ref: '#/definitions/AdAuftraege'
        description: |
          Ein Array von AdAuftraegen.
  AdAuftraege:
    type: object
    properties:
      ad_nummer:
        description: |
          Auftragsnummer
        type: string
      ad_customerId:
        description: Kundennummer
        type: string
      ad_bestelldatum:
        description: Bestelldatum
        type: string
        format: date-time
      ad_auftragsart:
        description: Flag um Auftragsarten differenziert darzustellen
        type: number
        format: int32
      ad_statustext:
        description: Auftragsstatus
        type: string
      ad_herkunft:
        description: Onlineauftrag / manuell / sonstiges
        type: string
      ad_positionen:
        type: array
        items:
          $ref: '#/definitions/AdAuftraegePos'
  AdAuftraegePos:
    type: object
    properties:
      ad_nummer:
        description: |
          Auftragsnummer
        type: string
      ad_customerId:
        description: Kundennummer
        type: string
      ad_pos:
        description: Auftragsposition
        type: number
        format: int32
      ad_abspos:
        description: Systeminterne laufende Nummer
        type: number
        format: int32
      ad_artikelart:
        description: Systeminterne laufende Nummer
        type: number
        format: int32
      ad_pzn:
        description: PZN
        type: string
      ad_bezeichnung1:
        description: Bezeichnung1
        type: string
      ad_bezeichnung2:
        description: Bezeichnung2
        type: string
      ad_mengeneinheit:
        description: Mengeneinheit
        type: string
      ad_menge:
        description: Auftragsmenge
        type: number
        format: int32
      ad_geliefert:
        description: Menge geliefert
        type: number
        format: int32
      ad_berechnet:
        description: Menge berechnet
        type: number
        format: int32
      ad_gutgeschrieben:
        description: Menge gitgeschrieben
        type: number
        format: int32
      ad_ww_netto:
        description: Netto Warenwert
        type: number
      ad_ww_brutto:
        description: Brutto Warenwert
        type: number
      ad_umsatzart:
        type: number
        format: int32
      ad_statustext:
        description: < "abgeschlossen" / "geliefert" / "berechnet" / "angelegt"
        type: string
      ad_kvabr:
        description: Modus für KV
        type: number
        format: int32
  AdBelegeReturn:
    type: object
    properties:
      meta:
        $ref: '#/definitions/MetaReturn'
      AdBelege:
        type: array
        items:
          $ref: '#/definitions/AdBelege'
        description: |
          Ein Array von AdBelegen.
  AdBelege:
    type: object
    properties:
      ad_nummer:
        description: |
          Rechnungsnummer
        type: string
      ad_customerId:
        description: < Kundennummer
        type: string
      ad_datum:
        description: < Belegdatum
        type: string
        format: date-time
      ad_netto:
        description: < Netto Warenwert
        type: number
      ad_brutto:
        description: < Brutto Warenwert
        type: number
      ad_datei:
        description: < Dateinamen
        type: string
      ad_datei_data:
        description: < Datei als Daten (BLOB)
        type: string
  AdStatistikReturn:
    type: object
    properties:
      meta:
        $ref: '#/definitions/MetaReturn'
      AdStatistik:
        type: array
        items:
          $ref: '#/definitions/AdStatistik'
        description: |
          Ein Array von AdStatistiken.
  AdStatistik:
    type: object
    properties:
      ad_nummer:
        description: |
          Auftragsnummer
        type: string
      ad_datum:
        description: |
          Auftragsdatum
        type: string
        format: date-time
      ad_customerId:
        description: |
          Haupt-Kundennummer (Besteller)
        type: string
      ad_invoiceCustomerId:
        description: |
          Rechnungs-Kundennummer
        type: string
      ad_rechnungsnummer:
        description: |
          Rechnungsnummer/ Gutschriftnummer
        type: string
      ad_rechnungsdatum:
        description: |
          Rechnungsdatum
        type: string
        format: date-time
      ad_letzteaenderung:
        description: |
          letzte Änderung (in Bezug auf die Rechnungsnummer/Gutschriftnummer)
        type: string
        format: date-time
      ad_belegVorhanden:
        description: |
          Gibt an, ob ein  Beleg zur Rechnungsnummer vorhanden ist
        type: boolean
      ad_artikelnummer:
        description: |
          Artikelnummer
        type: string
      ad_bezeichnung1:
        description: |
          Artikelbezeichnung 1
        type: string
      ad_bezeichnung2:
        description: |
          Artikelbezeichnung 2
        type: string
      ad_menge:
        description: |
          Auftragsmenge
        type: number
        format: int32
      ad_mengeneinheit:
        description: |
          Mengeneinheit
        type: string
      ad_netto:
        description: |
          Nettopreis
        type: number
      ad_brutto:
        description: |
          Bruttopreis
        type: number
      ad_katalogpreis:
        description: |
          Katalogpreis
        type: number
      ad_aekp:
        description: |
          Apo-EK
        type: number
      ad_sprechstundenbedarf:
        description: |
          Sprechstundenbedarf/Entnahmematerial
          0=normale Handelsware,
          1=Sprechstundenbedarf,
          2=kostenloses Entnahmematerial
        type: number
        format: int32
      ad_deleted:
        description: |
          nur gesetzt, wenn alle Datensätze zur Rechnungsnummer zu löschen sind.
          Ist dieses Flag  gesetzt, so wird ausschliesslich die Rechnungsnummer benötigt
        type: boolean
      ad_art:
        description: |
          Art
          0=Rechnung
          1=Gutschrift
        type: number
        format: int32
  AdTrackingReturn:
    type: object
    properties:
      meta:
        $ref: '#/definitions/MetaReturn'
      AdTracking:
        type: array
        items:
          $ref: '#/definitions/AdTracking'
        description: |
          Ein Array von AdTrackings.
  AdTracking:
    type: object
    properties:
      ad_nummer:
        description: |
          Auftragsnummer
        type: string
      ad_parcelno:
        description: |
          Paketnummer
        type: string
      ad_event_date_time:
        description: |
          Erstelldatum der Trackingmeldung
        type: string
        format: date-time
      ad_weight:
        description: |
          Gewicht
        type: number
      ad_customerId:
        description: |
          Kundennummer
        type: string
      ad_htmllink:
        description: |
          Link zum Tracking
        type: string
      ad_ref:
        description: |
          Referenz auf  
        type: string
  AdPricingReturn:
    type: object
    properties:
      meta:
        $ref: '#/definitions/MetaReturn'
      AdPricing:
        type: array
        items:
          $ref: '#/definitions/AdPricing'
        description: |
          Ein Array von AdPricings.
  AdPricing:
    type: object
    properties:
      ad_articleId:
        description: |
          Artikelnummer
        type: string
      ad_customerId:
        description: |
          Kundennummer
        type: string
      ad_price:
        description: |
          Preis
        type: number
