- Introduced BooklookerConfig class for runtime configuration management. - Created custom exceptions for API errors, including authentication and validation errors. - Generated API contracts from OpenAPI specification, including endpoints and security schemes. - Implemented models for articles, orders, and webhooks to facilitate data handling. - Developed a webhook helper for processing and enriching webhook events. - Added tests for configuration defaults, token expiration, and webhook enrichment.
1620 lines
66 KiB
YAML
1620 lines
66 KiB
YAML
openapi: 3.1.0
|
||
info:
|
||
title: booklooker REST API
|
||
description: |
|
||
<p>
|
||
Die <strong>Booklooker REST API</strong> ermöglicht die sichere und einfache Kommunikation mit verschiedenen
|
||
Booklooker-Schnittstellen. Es besteht die Möglichkeit, Artikel und Aufträge abzufragen, zu ändern, zu stornieren
|
||
etc. Auch der automatische Import neuer oder geänderter Artikel ist ohne Weiteres möglich.
|
||
</p>
|
||
<p>
|
||
Diese API basiert auf REST. Zur Benutzung führen Sie bitte die folgenden Schritte durch:
|
||
</p>
|
||
<ol>
|
||
<li>
|
||
Sie benötigen Ihren persönlichen <strong>API Key</strong>, diesen erhalten Sie im Bereich
|
||
<a href="https://www.booklooker.de/app/priv/api_key.php">Persönliche Daten</a>
|
||
</li>
|
||
<li>
|
||
Benutzen Sie anschließend die Schnittstelle
|
||
<a href="https://www.booklooker.de/pages/rest_api.php?interface=authenticate">authenticate</a>
|
||
via HTTP POST und Sie erhalten einen <strong>Token</strong>,
|
||
welcher für alle folgenden Aufrufe benötigt wird.
|
||
Sofern Sie 10 Minuten keine Schnittstelle aufrufen,
|
||
verfällt der Token und Sie müssen sich erneut authentifizieren.
|
||
</li>
|
||
<li>
|
||
Verwenden Sie eine der unten aufgelisteten Schnittstellen.
|
||
Die Beschreibung jeder Schnittstelle enthält die benötigten Parameter und die möglichen Rückgabewerte.
|
||
</li>
|
||
</ol>
|
||
<p>
|
||
Zur Kommunikation können verschiedene Programmiersprachen zum Einsatz kommen. Wir stellen Ihnen hier ein
|
||
<a href="https://www.booklooker.de/pages/rest_api.php?do=download&filename=booklooker_rest_api.php&path=booklooker_rest_api.php">Beispiel in PHP</a>
|
||
zur Verfügung.
|
||
</p>
|
||
<p>
|
||
Weiterhin bieten wir hier eine <a href="https://www.booklooker.de/download/openapi.yaml">OpenAPI Spezifikation</a> an.
|
||
</p>
|
||
version: '2.0'
|
||
servers:
|
||
- url: 'https://api.booklooker.de/2.0'
|
||
tags:
|
||
- name: authentication
|
||
- name: article
|
||
- name: upload
|
||
- name: image
|
||
- name: order
|
||
paths:
|
||
/authenticate:
|
||
post:
|
||
tags:
|
||
- authentication
|
||
summary: Authentifizierung via API Key
|
||
description: |
|
||
Authentifizierung via API Key. Ihren persönlichen API Key erhalten Sie
|
||
<a href="https://www.booklooker.de/app/priv/api_key.php">hier</a>.
|
||
parameters:
|
||
- name: apiKey
|
||
description: Ihr persönlicher API Key
|
||
in: query
|
||
required: true
|
||
schema:
|
||
type: string
|
||
responses:
|
||
'200':
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
status:
|
||
type: string
|
||
returnValue:
|
||
type: mixed
|
||
examples:
|
||
SUCCESS:
|
||
description: Der Token, welcher für alle weiteren Aufrufe benötigt wird.
|
||
value:
|
||
status: OK
|
||
returnValue: REST_API_TOKEN
|
||
API_KEY_MISSING:
|
||
description: Der API Key ist leer oder nicht vorhanden.
|
||
value:
|
||
status: NOK
|
||
returnValue: API_KEY_MISSING
|
||
AUTHENTICATION_FAILED:
|
||
description: Der API Key ist nicht bekannt.
|
||
value:
|
||
status: NOK
|
||
returnValue: AUTHENTICATION_FAILED
|
||
ENCODING_ERROR:
|
||
$ref: '#/components/responses/ENCODING_ERROR'
|
||
INVALID_INTERFACE:
|
||
$ref: '#/components/responses/INVALID_INTERFACE'
|
||
INVALID_REQUEST_METHOD:
|
||
$ref: '#/components/responses/INVALID_REQUEST_METHOD'
|
||
QUOTA_EXCEEDED:
|
||
$ref: '#/components/responses/QUOTA_EXCEEDED'
|
||
SERVER_DOWN:
|
||
$ref: '#/components/responses/SERVER_DOWN'
|
||
TEMPORARILY_BLOCKED:
|
||
$ref: '#/components/responses/TEMPORARILY_BLOCKED'
|
||
/article:
|
||
delete:
|
||
tags:
|
||
- article
|
||
summary: Einzelnen Artikel zum Löschen vormerken
|
||
description: Einzelnen Artikel zum Löschen vormerken. Der Artikel wird innerhalb der nächsten 2 Stunden gelöscht.
|
||
security:
|
||
- tokenAuth: [ ]
|
||
parameters:
|
||
- $ref: '#/components/parameters/orderNoParam'
|
||
responses:
|
||
'200':
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
status:
|
||
type: string
|
||
returnValue:
|
||
type: mixed
|
||
examples:
|
||
SUCCESS:
|
||
description: Der Artikel wurde erfolgreich für den Löschvorgang vorgemerkt.
|
||
value:
|
||
status: OK
|
||
returnValue: SUCCESS
|
||
INVALID_PARAMETERS:
|
||
$ref: '#/components/responses/INVALID_PARAMETER_ORDERNO'
|
||
NOT_FOUND:
|
||
$ref: '#/components/responses/NOT_FOUND_ORDERNO'
|
||
ENCODING_ERROR:
|
||
$ref: '#/components/responses/ENCODING_ERROR'
|
||
INVALID_INTERFACE:
|
||
$ref: '#/components/responses/INVALID_INTERFACE'
|
||
INVALID_REQUEST_METHOD:
|
||
$ref: '#/components/responses/INVALID_REQUEST_METHOD'
|
||
QUOTA_EXCEEDED:
|
||
$ref: '#/components/responses/QUOTA_EXCEEDED'
|
||
SERVER_DOWN:
|
||
$ref: '#/components/responses/SERVER_DOWN'
|
||
TEMPORARILY_BLOCKED:
|
||
$ref: '#/components/responses/TEMPORARILY_BLOCKED'
|
||
TOKEN_EXPIRED:
|
||
$ref: '#/components/responses/TOKEN_EXPIRED'
|
||
TOKEN_MISSING:
|
||
$ref: '#/components/responses/TOKEN_MISSING'
|
||
TOKEN_UNKNOWN:
|
||
$ref: '#/components/responses/TOKEN_UNKNOWN'
|
||
/article_list:
|
||
get:
|
||
tags:
|
||
- article
|
||
summary: Liste aller eigenen aktiven Artikelnummern
|
||
description: |
|
||
Liste aller eigenen aktiven Artikelnummern.
|
||
<p>
|
||
<strong>Bitte beachten:</strong> Wird ein Artikel gelöscht, so wird dieser nicht sofort aus den aktuell
|
||
angebotenen Artikel gelöscht, sondern mit einer Verzögerung von im Schnitt 1-2 Stunden.
|
||
Um den aktuellen Status eines Artikels zu ermitteln, benutzen Sie bitte die Schnittstelle
|
||
<a href="https://www.booklooker.de/pages/rest_api.php?interface=article_status">article_status</a>.
|
||
</p>
|
||
security:
|
||
- tokenAuth: [ ]
|
||
parameters:
|
||
- name: field
|
||
description: |
|
||
Rückgabefeld, mögliche Werte:
|
||
<ul class="default-list">
|
||
<li>orderNo · Bestellnummer</li>
|
||
<li>isbn · ISBN</li>
|
||
<li>ean · EAN</li>
|
||
</ul>
|
||
in: query
|
||
schema:
|
||
type: string
|
||
default: orderNo
|
||
enum:
|
||
- orderNo
|
||
- isbn
|
||
- ean
|
||
- name: showPrice
|
||
description: |
|
||
Übermittlung des Preises, mögliche Werte:
|
||
<ul class="default-list">
|
||
<li>0 · nein</li>
|
||
<li>1 · ja</li>
|
||
</ul>
|
||
<p>
|
||
Wird der Parameter <q>showPrice</q> mit dem Wert <q>1</q> übergeben,
|
||
so werden die Artikelpreise TAB-getrennt zurückgegeben.
|
||
</p>
|
||
in: query
|
||
schema:
|
||
type: integer
|
||
default: 0
|
||
minimum: 0
|
||
maximum: 1
|
||
- name: showStock
|
||
description: |
|
||
Übermittlung des Bestands, mögliche Werte:
|
||
<ul class="default-list">
|
||
<li>0 · nein</li>
|
||
<li>1 · ja</li>
|
||
</ul>
|
||
<p>
|
||
Wird der Parameter <q>showStock</q> mit dem Wert <q>1</q> übergeben,
|
||
so werden ausschließlich die Bestellnummern und Bestandsangaben der Artikel zurückgegeben,
|
||
die einen Bestand >1 besitzen.
|
||
Alle übrigen Parameter (field, showPrice, mediaType) werden in diesem Fall ignoriert.
|
||
</p>
|
||
in: query
|
||
schema:
|
||
type: integer
|
||
default: 0
|
||
minimum: 0
|
||
maximum: 1
|
||
- name: mediaType
|
||
description: |
|
||
Einschränkung nach Medientyp, mögliche Werte:
|
||
<ul class="default-list">
|
||
<li>0 · Bücher</li>
|
||
<li>1 · Filme</li>
|
||
<li>2 · Musik</li>
|
||
<li>3 · Hörbücher</li>
|
||
<li>4 · Spiele</li>
|
||
</ul>
|
||
in: query
|
||
schema:
|
||
type: integer
|
||
default: n/a
|
||
minimum: 0
|
||
maximum: 4
|
||
responses:
|
||
'200':
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
status:
|
||
type: string
|
||
returnValue:
|
||
type: mixed
|
||
examples:
|
||
SUCCESS:
|
||
description: |
|
||
Eine Liste der Artikelnummern (bzw. ISBN/EAN) aller vom Anbieter aktuell angebotenen Artikel,
|
||
getrennt mit einem einfachen Zeilenumbruch (\n).
|
||
value:
|
||
status: OK
|
||
returnValue: ""
|
||
INVALID_PARAMETERS:
|
||
description: |
|
||
Einer der Parameter <q>field</q> oder <q>mediaType</q> wurde mit einem falschen Wert übergeben.
|
||
value:
|
||
status: NOK
|
||
returnValue: INVALID_PARAMETERS
|
||
PARAMETER_MISMATCH:
|
||
description: |
|
||
Der Parameter <q>field</q> mit Wert <q>isbn</q> oder <q>ean</q> kann nur verwendet werden,
|
||
wenn der Parameter <q>mediaType</q> vorhanden ist.
|
||
value:
|
||
status: NOK
|
||
returnValue: PARAMETER_MISMATCH
|
||
ENCODING_ERROR:
|
||
$ref: '#/components/responses/ENCODING_ERROR'
|
||
INVALID_INTERFACE:
|
||
$ref: '#/components/responses/INVALID_INTERFACE'
|
||
INVALID_REQUEST_METHOD:
|
||
$ref: '#/components/responses/INVALID_REQUEST_METHOD'
|
||
QUOTA_EXCEEDED:
|
||
$ref: '#/components/responses/QUOTA_EXCEEDED'
|
||
SERVER_DOWN:
|
||
$ref: '#/components/responses/SERVER_DOWN'
|
||
TEMPORARILY_BLOCKED:
|
||
$ref: '#/components/responses/TEMPORARILY_BLOCKED'
|
||
TOKEN_EXPIRED:
|
||
$ref: '#/components/responses/TOKEN_EXPIRED'
|
||
TOKEN_MISSING:
|
||
$ref: '#/components/responses/TOKEN_MISSING'
|
||
TOKEN_UNKNOWN:
|
||
$ref: '#/components/responses/TOKEN_UNKNOWN'
|
||
/article_status:
|
||
get:
|
||
tags:
|
||
- article
|
||
summary: Abfragen des Status eines Artikels
|
||
description: Abfragen des Status eines Artikels
|
||
security:
|
||
- tokenAuth: [ ]
|
||
parameters:
|
||
- $ref: '#/components/parameters/orderNoParam'
|
||
responses:
|
||
'200':
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
status:
|
||
type: string
|
||
returnValue:
|
||
type: mixed
|
||
examples:
|
||
SOLD:
|
||
description: Der Artikel wurde verkauft und steht nicht mehr zum Verkauf.
|
||
value:
|
||
status: OK
|
||
returnValue: SOLD
|
||
DELETED:
|
||
description: Der Artikel wurde gelöscht, ist aber noch in der Datenbank.
|
||
value:
|
||
status: OK
|
||
returnValue: DELETED
|
||
ACTIVE:
|
||
description: Der Artikel steht zum Verkauf.
|
||
value:
|
||
status: OK
|
||
returnValue: ACTIVE
|
||
INVALID_PARAMETERS:
|
||
$ref: '#/components/responses/INVALID_PARAMETER_ORDERNO'
|
||
NOT_FOUND:
|
||
$ref: '#/components/responses/NOT_FOUND_ORDERNO'
|
||
ENCODING_ERROR:
|
||
$ref: '#/components/responses/ENCODING_ERROR'
|
||
INVALID_INTERFACE:
|
||
$ref: '#/components/responses/INVALID_INTERFACE'
|
||
INVALID_REQUEST_METHOD:
|
||
$ref: '#/components/responses/INVALID_REQUEST_METHOD'
|
||
QUOTA_EXCEEDED:
|
||
$ref: '#/components/responses/QUOTA_EXCEEDED'
|
||
SERVER_DOWN:
|
||
$ref: '#/components/responses/SERVER_DOWN'
|
||
TEMPORARILY_BLOCKED:
|
||
$ref: '#/components/responses/TEMPORARILY_BLOCKED'
|
||
TOKEN_EXPIRED:
|
||
$ref: '#/components/responses/TOKEN_EXPIRED'
|
||
TOKEN_MISSING:
|
||
$ref: '#/components/responses/TOKEN_MISSING'
|
||
TOKEN_UNKNOWN:
|
||
$ref: '#/components/responses/TOKEN_UNKNOWN'
|
||
/search:
|
||
get:
|
||
tags:
|
||
- article
|
||
summary: Suche in der booklooker-Datenbank
|
||
description: Suche in der booklooker-Datenbank
|
||
security:
|
||
- tokenAuth: [ ]
|
||
responses:
|
||
'200':
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
status:
|
||
type: string
|
||
returnValue:
|
||
type: mixed
|
||
examples:
|
||
SUCCESS:
|
||
description: |
|
||
Es wird eine selbsterklärende Liste mit den gefundenen Artikeln zurückgeliefert.
|
||
value:
|
||
status: OK
|
||
returnValue: ""
|
||
ENCODING_ERROR:
|
||
$ref: '#/components/responses/ENCODING_ERROR'
|
||
INVALID_INTERFACE:
|
||
$ref: '#/components/responses/INVALID_INTERFACE'
|
||
INVALID_REQUEST_METHOD:
|
||
$ref: '#/components/responses/INVALID_REQUEST_METHOD'
|
||
QUOTA_EXCEEDED:
|
||
$ref: '#/components/responses/QUOTA_EXCEEDED'
|
||
SERVER_DOWN:
|
||
$ref: '#/components/responses/SERVER_DOWN'
|
||
TEMPORARILY_BLOCKED:
|
||
$ref: '#/components/responses/TEMPORARILY_BLOCKED'
|
||
TOKEN_EXPIRED:
|
||
$ref: '#/components/responses/TOKEN_EXPIRED'
|
||
TOKEN_MISSING:
|
||
$ref: '#/components/responses/TOKEN_MISSING'
|
||
TOKEN_UNKNOWN:
|
||
$ref: '#/components/responses/TOKEN_UNKNOWN'
|
||
/file_import:
|
||
post:
|
||
tags:
|
||
- upload
|
||
summary: Upload von Angebots- oder Bilddateien
|
||
description: Upload von Angebots- oder Bilddateien
|
||
security:
|
||
- tokenAuth: [ ]
|
||
requestBody:
|
||
require: true
|
||
description: |
|
||
<p>
|
||
Die hochzuladende Datei.
|
||
</p>
|
||
<p>
|
||
Ihre Angebotsdatei können Sie entweder als Textdatei oder als komprimiertes ZIP-Archiv übergeben.
|
||
Standardmäßig müssen die Textdateien in der Kodierung <q>ISO 8859-1</q> vorliegen.
|
||
Wenn Ihre Daten in einer anderen Kodierung, bspw. <q>UTF-8</q> vorliegen,
|
||
verwenden Sie sich bitte den Parameter <q>encoding</q>.
|
||
</p>
|
||
<p>
|
||
Bilddateien müssen als ZIP-Archiv übergeben werden.
|
||
Weitere Hinweise finden Sie auf der Seite zum
|
||
<a href="https://www.booklooker.de/app/priv/upload/upload_pic.php">manuellen Hochladen</a>.
|
||
Die hochgeladenen Dateien werden in der Reihenfolge des Uploads verarbeitet.
|
||
</p>
|
||
<p>
|
||
Maximale Dateigröße: 80 MB.
|
||
</p>
|
||
content:
|
||
application/octet-stream:
|
||
schema:
|
||
type: string
|
||
format: binary
|
||
parameters:
|
||
- name: fileType
|
||
description: |
|
||
Dateityp, mögliche Werte:
|
||
<ul class="default-list">
|
||
<li>pic · Bilddatei</li>
|
||
<li>article · Angebotsdatei</li>
|
||
</ul>
|
||
in: query
|
||
schema:
|
||
type: string
|
||
default: article
|
||
enum:
|
||
- pic
|
||
- article
|
||
- name: dataType
|
||
description: |
|
||
Art des Uploads, mögliche Werte:
|
||
<ul class="default-list">
|
||
<li>0 · Hinzufügen/ändern/Löschen</li>
|
||
<li>1 · Ersetzen</li>
|
||
<li>2 · Löschen</li>
|
||
</ul>
|
||
in: query
|
||
required: true
|
||
schema:
|
||
type: integer
|
||
default: n/a
|
||
minimum: 0
|
||
maximum: 2
|
||
- name: mediaType
|
||
description: |
|
||
Medientyp, mögliche Werte:
|
||
<ul class="default-list">
|
||
<li>0 · Bücher</li>
|
||
<li>1 · Filme</li>
|
||
<li>2 · Musik</li>
|
||
<li>3 · Hörbücher</li>
|
||
<li>4 · Spiele</li>
|
||
</ul>
|
||
in: query
|
||
schema:
|
||
type: integer
|
||
default: 0
|
||
minimum: 0
|
||
maximum: 4
|
||
- name: formatID
|
||
description: |
|
||
Interne ID des Formats, legt Feldreihenfolge und Texttrenner fest.
|
||
Für das booklooker-Format verwenden Sie bitte den Wert <q>1</q>,
|
||
für mehr Informationen wenden Sie sich bitte an daten@booklooker.de
|
||
in: query
|
||
schema:
|
||
type: integer
|
||
default: n/a (Es wird das Format des letzten Uploads verwendet.)
|
||
- name: encoding
|
||
description: |
|
||
Character Encoding der Datei, mögliche Werte:
|
||
<ul class="default-list">
|
||
<li>IBMPC/CR (= CP-437)</li>
|
||
<li>macintosh (= Mac OS Roman)</li>
|
||
<li>UTF-8</li>
|
||
</ul>
|
||
in: query
|
||
schema:
|
||
type: string
|
||
default: Es wird das Encoding des letzten Uploads verwendet, beim Erst-Upload CP-1252.
|
||
responses:
|
||
'200':
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
status:
|
||
type: string
|
||
returnValue:
|
||
type: mixed
|
||
examples:
|
||
SUCCESS:
|
||
description: Upload erfolgreich.
|
||
value:
|
||
status: OK
|
||
returnValue: SUCCESS
|
||
INVALID_PARAMETERS:
|
||
description: |
|
||
Einer der Parameter <q>fileType</q>, <q>dataType</q> oder <q>mediaType</q>
|
||
wurde nicht oder mit einem falschen Wert übergeben.
|
||
value:
|
||
status: NOK
|
||
returnValue: INVALID_PARAMETERS
|
||
FORMAT_ID_MISMATCH:
|
||
description: |
|
||
Die Kombination der Werte der Parameter <q>formatID</q> und <q>mediaType</q>
|
||
kann nicht verarbeitet werden.
|
||
value:
|
||
status: NOK
|
||
returnValue: FORMAT_ID_MISMATCH
|
||
FILE_MISSING:
|
||
description: Es wurde keine Datei übertragen.
|
||
value:
|
||
status: NOK
|
||
returnValue: FILE_MISSING
|
||
MAX_SIZE_EXCEEDED:
|
||
description: Die maximal erlaubte Dateigröße wurde überschritten.
|
||
value:
|
||
status: NOK
|
||
returnValue: MAX_SIZE_EXCEEDED
|
||
INVALID_FILE_TYPE:
|
||
description: Falscher Dateityp.
|
||
value:
|
||
status: NOK
|
||
returnValue: INVALID_FILE_TYPE
|
||
UPLOAD_FAILED:
|
||
description: Der Upload der Datei ist fehlgeschlagen.
|
||
value:
|
||
status: NOK
|
||
returnValue: UPLOAD_FAILED
|
||
REPLACE_AMOUNT_EXCEEDED:
|
||
description: |
|
||
Uploads im Ersetzen-Modus sind bei einem Angebotsbestand
|
||
> 1.000.000 Artikel nur in Absprache möglich. Bitte wenden Sie sich an daten@booklooker.de
|
||
value:
|
||
status: NOK
|
||
returnValue: REPLACE_AMOUNT_EXCEEDED
|
||
IDENTICAL_FILE_UPLOADED:
|
||
description: Die Datei ist bereits im System vorhanden.
|
||
value:
|
||
status: NOK
|
||
returnValue: IDENTICAL_FILE_UPLOADED
|
||
QUEUE_FULL:
|
||
description: |
|
||
Die Warteschlange der hochgeladenen Dateien ist voll
|
||
– entweder mehr als 200 Dateien oder mehr als 250 MB.
|
||
value:
|
||
status: NOK
|
||
returnValue: QUEUE_FULL
|
||
ENCODING_ERROR:
|
||
$ref: '#/components/responses/ENCODING_ERROR'
|
||
INVALID_INTERFACE:
|
||
$ref: '#/components/responses/INVALID_INTERFACE'
|
||
INVALID_REQUEST_METHOD:
|
||
$ref: '#/components/responses/INVALID_REQUEST_METHOD'
|
||
QUOTA_EXCEEDED:
|
||
$ref: '#/components/responses/QUOTA_EXCEEDED'
|
||
SERVER_DOWN:
|
||
$ref: '#/components/responses/SERVER_DOWN'
|
||
TEMPORARILY_BLOCKED:
|
||
$ref: '#/components/responses/TEMPORARILY_BLOCKED'
|
||
TOKEN_EXPIRED:
|
||
$ref: '#/components/responses/TOKEN_EXPIRED'
|
||
TOKEN_MISSING:
|
||
$ref: '#/components/responses/TOKEN_MISSING'
|
||
TOKEN_UNKNOWN:
|
||
$ref: '#/components/responses/TOKEN_UNKNOWN'
|
||
/file_status:
|
||
get:
|
||
tags:
|
||
- upload
|
||
summary: Abfragen des Status einer hochgeladenen Angebotsdatei
|
||
description: Abfragen des Status einer hochgeladenen Angebotsdatei
|
||
security:
|
||
- tokenAuth: [ ]
|
||
parameters:
|
||
- name: filename
|
||
description: |
|
||
Name der hochgeladenen Datei.
|
||
<p>
|
||
Existieren mehrere hochgeladene Dateien mit diesem Namen,
|
||
bezieht sich der zurückgegebene Wert auf die zuletzt hochgeladene Datei.
|
||
</p>
|
||
in: query
|
||
required: true
|
||
schema:
|
||
type: string
|
||
- name: showErrors
|
||
description: |
|
||
Der Rückgabewert ist eine Liste von Fehlern, die beim Import der Datei identifiziert wurden.
|
||
|
||
<p>Mögliche Werte:</p>
|
||
|
||
<ul class="default-list">
|
||
<li>0 · nur der Status wird zurückgeliefert</li>
|
||
<li>1 · Liste von Fehlern, siehe <q>Rückgabe</q></li>
|
||
</ul>
|
||
|
||
<p>
|
||
<strong>Achtung:</strong> Die Liste der Fehler kann nur für komplett verarbeitete Dateien abgefragt werden!
|
||
</p>
|
||
in: query
|
||
required: false
|
||
schema:
|
||
type: integer
|
||
default: 0
|
||
minimum: 0
|
||
maximum: 1
|
||
responses:
|
||
'200':
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
status:
|
||
type: string
|
||
returnValue:
|
||
type: mixed
|
||
examples:
|
||
FILE_RECEIVED:
|
||
description: Die Datei wurde vollständig hochgeladen, aber noch nicht verarbeitet.
|
||
value:
|
||
status: OK
|
||
returnValue: FILE_RECEIVED
|
||
UPLOAD_IN_PROGRESS:
|
||
description: Die Datei befindet sich aktuell in Verarbeitung.
|
||
value:
|
||
status: OK
|
||
returnValue: UPLOAD_IN_PROGRESS
|
||
UPLOAD_DONE:
|
||
description: Die Datei komplett verarbeitet.
|
||
value:
|
||
status: OK
|
||
returnValue: UPLOAD_DONE
|
||
SHOW_ERRORS:
|
||
description: |
|
||
<p>
|
||
Sofern der Parameter <q>showErrors</q> mit dem Wert <q>1</q> übergeben wurde, ist die Rückgabe
|
||
eine Liste von Fehlern, welche je Zeile einen Artikel mit diesen Werten enthält:
|
||
</p>
|
||
|
||
<table class="table-padding-5 grid">
|
||
<tr><th>Spalte</th><th>Beschreibung</th></tr>
|
||
<tr><td>errorID</td><td>ID des Fehlers (siehe unten)</td></tr>
|
||
<tr><td>record</td><td>Datensatz</td></tr>
|
||
<tr><td>orderNo</td><td>Bestellnummer</td></tr>
|
||
<tr><td>title</td><td>Titel (sofern vorhanden)</td></tr>
|
||
<tr><td>details</td><td>weitere Informationen, warum der Artikel abgelehnt wurde (sofern vorhanden)</td></tr>
|
||
</table>
|
||
|
||
<p>
|
||
<q>errorID</q> kann folgende Werte annehmen:</q>
|
||
</p>
|
||
|
||
<table class="table-padding-5 grid">
|
||
<tr><th>errorID</th><th>Beschreibung</th></tr>
|
||
<tr><td>1</td><td>Mehrfach vergebene Bestellnummer</td></tr>
|
||
<tr><td>2</td><td>Mehrfach vorhandene identische Angebote (Dubletten)</td></tr>
|
||
<tr><td>3</td><td>(wird nicht mehr verwendet)</td></tr>
|
||
<tr><td>4</td><td>Neubücher in privatem Account</td></tr>
|
||
<tr><td>5</td><td>Fehlende Formatangabe (z. B. CD, DVD, LP etc.)</td></tr>
|
||
<tr><td>6</td><td>Hörbuch in Bücherdatei</td></tr>
|
||
<tr><td>7</td><td>Fehlende oder ungültige FSK-Angabe</td></tr>
|
||
<tr><td>8</td><td>Nicht unterstützter Artikeltyp</td></tr>
|
||
<tr><td>9</td><td>(wird nicht mehr verwendet)</td></tr>
|
||
<tr><td>10</td><td>Das Feld <q>Titel</q> ist leer</td></tr>
|
||
<tr><td>11</td><td>Das Feld <q>Preis</q> oder <q>Währung</q> ist leer oder wurde nicht gefunden</td></tr>
|
||
<tr><td>12</td><td>Preis von Neubuch weicht ab vom gebundenen Preis</td></tr>
|
||
<tr><td>13</td><td>Grenze von 5000 VLB-Artikel überschritten, gesamte Datei wird nicht verarbeitet</td></tr>
|
||
<tr><td>14</td><td>E-Books sind nicht erlaubt</td></tr>
|
||
<tr><td>15</td><td>Keine Daten zur ISBN vorhanden</td></tr>
|
||
<tr><td>16</td><td>FSK 18</td></tr>
|
||
<tr><td>17</td><td>Maximale Artikelanzahl überschritten</td></tr>
|
||
<tr><td>18</td><td>Erscheinungsdatum liegt in der Zukunft</td></tr>
|
||
<tr><td>19</td><td>Preisangaben von 100.000 EUR und darüber werden nicht unterstützt</td></tr>
|
||
<tr><td>20</td><td>Unerwünschter Verlag</td></tr>
|
||
<tr><td>21</td><td>Nicht-westeuropäisches Zeichen in Bestellnummer</td></tr>
|
||
</table>
|
||
value:
|
||
status: OK
|
||
returnValue: ""
|
||
INVALID_PARAMETERS:
|
||
description: Der Parameter <q>filename</q> ist leer oder nicht vorhanden.
|
||
value:
|
||
status: NOK
|
||
returnValue: INVALID_PARAMETERS
|
||
FILE_NOT_FOUND:
|
||
description: Die Datei wurde nicht gefunden.
|
||
value:
|
||
status: NOK
|
||
returnValue: FILE_NOT_FOUND
|
||
UPLOAD_FAILED:
|
||
description: Datei konnte nicht eingelesen werden (es wurde kein gültiger Datensatz gefunden).
|
||
value:
|
||
status: NOK
|
||
returnValue: UPLOAD_FAILED
|
||
ENCODING_ERROR:
|
||
$ref: '#/components/responses/ENCODING_ERROR'
|
||
INVALID_INTERFACE:
|
||
$ref: '#/components/responses/INVALID_INTERFACE'
|
||
INVALID_REQUEST_METHOD:
|
||
$ref: '#/components/responses/INVALID_REQUEST_METHOD'
|
||
QUOTA_EXCEEDED:
|
||
$ref: '#/components/responses/QUOTA_EXCEEDED'
|
||
SERVER_DOWN:
|
||
$ref: '#/components/responses/SERVER_DOWN'
|
||
TEMPORARILY_BLOCKED:
|
||
$ref: '#/components/responses/TEMPORARILY_BLOCKED'
|
||
TOKEN_EXPIRED:
|
||
$ref: '#/components/responses/TOKEN_EXPIRED'
|
||
TOKEN_MISSING:
|
||
$ref: '#/components/responses/TOKEN_MISSING'
|
||
TOKEN_UNKNOWN:
|
||
$ref: '#/components/responses/TOKEN_UNKNOWN'
|
||
/image:
|
||
delete:
|
||
tags:
|
||
- image
|
||
summary: Einzelne oder alle Bilder eines Artikels löschen
|
||
description: Einzelne oder alle Bilder eines Artikels löschen
|
||
security:
|
||
- tokenAuth: [ ]
|
||
parameters:
|
||
- $ref: '#/components/parameters/orderNoParam'
|
||
- name: position
|
||
description: |
|
||
<p>
|
||
Position des Bildes, falls nicht vorhanden werden alle (!) Bilder des Artikels gelöscht.
|
||
</p>
|
||
<p>
|
||
<strong>Achtung:</strong> Beim Löschen mehrerer (aber nicht aller) Bilder eines Artikels muss
|
||
berücksichtigt werden, dass sich beim Aufruf dieser Schnittstelle die Position der nachfolgenden Bilder
|
||
ändert: Wenn ein Artikel z.B. 5 Bilder hat und das Bild an Position <q>2</q> gelöscht wird,
|
||
ändert sich die Position der Bilder 3, 4, 5 in 2, 3, 4.
|
||
</p>
|
||
in: query
|
||
schema:
|
||
type: integer
|
||
default: n/a
|
||
responses:
|
||
'200':
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
status:
|
||
type: string
|
||
returnValue:
|
||
type: mixed
|
||
examples:
|
||
SUCCESS:
|
||
description: Das Bild wurde bzw. die Bilder wurden erfolgreich gelöscht.
|
||
value:
|
||
status: OK
|
||
returnValue: SUCCESS
|
||
INVALID_PARAMETERS:
|
||
$ref: '#/components/responses/INVALID_PARAMETER_ORDERNO'
|
||
ARTICLE_NOT_FOUND:
|
||
description: Die Bestellnummer wurde nicht gefunden.
|
||
value:
|
||
status: NOK
|
||
returnValue: ARTICLE_NOT_FOUND
|
||
IMAGE_NOT_FOUND:
|
||
description: Das Bild wurde nicht gefunden.
|
||
value:
|
||
status: NOK
|
||
returnValue: IMAGE_NOT_FOUND
|
||
IMAGE_NOT_DELETED:
|
||
description: Das Bild konnte nicht gelöscht werden.
|
||
value:
|
||
status: NOK
|
||
returnValue: IMAGE_NOT_DELETED
|
||
IMAGES_NOT_DELETED:
|
||
description: Die Bilder konnten nicht gelöscht werden.
|
||
value:
|
||
status: NOK
|
||
returnValue: IMAGES_NOT_DELETED
|
||
ENCODING_ERROR:
|
||
$ref: '#/components/responses/ENCODING_ERROR'
|
||
INVALID_INTERFACE:
|
||
$ref: '#/components/responses/INVALID_INTERFACE'
|
||
INVALID_REQUEST_METHOD:
|
||
$ref: '#/components/responses/INVALID_REQUEST_METHOD'
|
||
QUOTA_EXCEEDED:
|
||
$ref: '#/components/responses/QUOTA_EXCEEDED'
|
||
SERVER_DOWN:
|
||
$ref: '#/components/responses/SERVER_DOWN'
|
||
TEMPORARILY_BLOCKED:
|
||
$ref: '#/components/responses/TEMPORARILY_BLOCKED'
|
||
TOKEN_EXPIRED:
|
||
$ref: '#/components/responses/TOKEN_EXPIRED'
|
||
TOKEN_MISSING:
|
||
$ref: '#/components/responses/TOKEN_MISSING'
|
||
TOKEN_UNKNOWN:
|
||
$ref: '#/components/responses/TOKEN_UNKNOWN'
|
||
/import_status:
|
||
get:
|
||
tags:
|
||
- upload
|
||
summary: Abfragen der Anzahl unverarbeiteter hochgeladener Angebotsdateien
|
||
description: Abfragen der Anzahl unverarbeiteter hochgeladener Angebotsdateien
|
||
security:
|
||
- tokenAuth: [ ]
|
||
responses:
|
||
'200':
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
status:
|
||
type: string
|
||
returnValue:
|
||
type: mixed
|
||
examples:
|
||
SUCCESS:
|
||
description: Anzahl der aktuell unverarbeiteten Dateien
|
||
value:
|
||
status: OK
|
||
returnValue: ""
|
||
ENCODING_ERROR:
|
||
$ref: '#/components/responses/ENCODING_ERROR'
|
||
INVALID_INTERFACE:
|
||
$ref: '#/components/responses/INVALID_INTERFACE'
|
||
INVALID_REQUEST_METHOD:
|
||
$ref: '#/components/responses/INVALID_REQUEST_METHOD'
|
||
QUOTA_EXCEEDED:
|
||
$ref: '#/components/responses/QUOTA_EXCEEDED'
|
||
SERVER_DOWN:
|
||
$ref: '#/components/responses/SERVER_DOWN'
|
||
TEMPORARILY_BLOCKED:
|
||
$ref: '#/components/responses/TEMPORARILY_BLOCKED'
|
||
TOKEN_EXPIRED:
|
||
$ref: '#/components/responses/TOKEN_EXPIRED'
|
||
TOKEN_MISSING:
|
||
$ref: '#/components/responses/TOKEN_MISSING'
|
||
TOKEN_UNKNOWN:
|
||
$ref: '#/components/responses/TOKEN_UNKNOWN'
|
||
/order:
|
||
get:
|
||
tags:
|
||
- order
|
||
summary: Download aller Bestellungen eines bestimmten Tages
|
||
description: Download aller Bestellungen eines bestimmten Tages bzw. Zeitintervalls
|
||
security:
|
||
- tokenAuth: [ ]
|
||
parameters:
|
||
- name: orderId
|
||
description: |
|
||
Interne booklooker <q>orderId</q> der Bestellung, wird von der Schnittstelle
|
||
<a href="https://www.booklooker.de/pages/rest_api.php?interface=order">order</a> zurückgeliefert.
|
||
in: query
|
||
required: true
|
||
schema:
|
||
type: integer
|
||
- name: date
|
||
description: |
|
||
Datum, zu dem Bestellungen angefordert werden, im Format YYYY-MM-DD.
|
||
Wenn übergeben, hat dieser Parameter Vorrang vor <q>dateFrom</q> und <q>dateTo</q>
|
||
in: query
|
||
required: false
|
||
schema:
|
||
type: string
|
||
- name: dateFrom
|
||
description: Startdatum, zu dem Bestellungen angefordert werden, im Format YYYY-MM-DD
|
||
in: query
|
||
required: false
|
||
schema:
|
||
type: string
|
||
- name: dateTo
|
||
description: Enddatum, zu dem Bestellungen angefordert werden, im Format YYYY-MM-DD
|
||
in: query
|
||
required: false
|
||
schema:
|
||
type: string
|
||
responses:
|
||
'200':
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
status:
|
||
type: string
|
||
returnValue:
|
||
type: mixed
|
||
examples:
|
||
SUCCESS:
|
||
description: |
|
||
<p>Alle Bestellungen des angeforderten Tages bzw. Zeitintervalls.</p>
|
||
<p>
|
||
<strong>fett</strong> · Das Element ist immer vorhanden.<br>
|
||
normal · Das Element ist nur dann vorhanden, wenn ein Wert existiert.
|
||
</p>
|
||
|
||
<table class="table-padding-5 grid">
|
||
<tr>
|
||
<th>Element</th>
|
||
<th>Bedeutung</th>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>orderId</strong></td>
|
||
<td>Interne Booklooker <q>orderId</q> der Bestellung</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<strong>orderDate</strong><br>
|
||
<strong>orderTime</strong>
|
||
</td>
|
||
<td>Datum und Uhrzeit der Bestellung</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
accountHolder<br>
|
||
accountIban<br>
|
||
accountBic
|
||
</td>
|
||
<td>
|
||
Falls der Besteller als Zahlungsart Lastschrift gewählt hat und eine Bankverbindung
|
||
angegeben hat, stehen in diesen Feldern die Kontodaten: Kontoinhaber, IBAN und BIC.
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>buyerPositiveRatingPercentage</strong></td>
|
||
<td>
|
||
Prozentzahl der positiven Bewertungen des Käufers
|
||
(0.0 - falls der Käufer noch keine Bewertung erhalten hat)
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>buyerTotalRatingNumber</strong></td>
|
||
<td>Anzahl der erhaltenen Bewertungen des Käufers</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>buyerUsername</strong></td>
|
||
<td>Benutzername des Käufers, bei Händlern der Firmenname</td>
|
||
</tr>
|
||
<tr>
|
||
<td>calculatedShippingCost</td>
|
||
<td>
|
||
Dieses Element wird nur übergeben, wenn die Versandkosten berechnet werden konnten,
|
||
bspw. bei vorhandener Gewichtsangabe und Nutzung der Gewichts-Staffel-Tabelle zur
|
||
Portoberechnung, oder bei Nutzung von Pauschalpreisen
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>comments</td>
|
||
<td>Freitextfeld, in das Kunden bei Bestellung spezielle Wünsche eintragen können</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>currentProvisionNet</strong></td>
|
||
<td>
|
||
Aktuelle Provision ohne MwSt. unter Berücksichtigung von Stornierungen - siehe auch
|
||
<q>originalProvisionNet</q>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>email</strong></td>
|
||
<td>E-Mail-Adresse des Käufers</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>originalProvisionNet</strong></td>
|
||
<td>
|
||
Ursprüngliche Provision ohne MwSt. ohne Berücksichtigung von Stornierungen - siehe auch
|
||
<q>currentProvisionNet</q>.
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
paymentConfirmed<br>
|
||
transactionId
|
||
</td>
|
||
<td>
|
||
Aktuell nur für Zahlungsart PayPal: Falls uns der Zeitpunkt der erfolgreichen Bezahlung vom
|
||
Zahlungsdienstleister gemeldet wurde, steht hier der Zeitpunkt im Format
|
||
YYYY-MM-DD HH:MM:SS. Weiterhin die von PayPal übermittelte <q>txn_id</q> der zugehörigen
|
||
Bezahlung.
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>paymentId</td>
|
||
<td>
|
||
Die vom Besteller gewählte Zahlungsart. Folgende Werte sind möglich:
|
||
<ul class="default-list">
|
||
<li>1 · Banküberweisung (Vorkasse)</li>
|
||
<li>2 · Offene Rechnung</li>
|
||
<li>11 · Offene Rechnung (Vorkasse vorbehalten)</li>
|
||
<li>3 · Lastschrift (Vorkasse)</li>
|
||
<li>4 · Kreditkarte (Vorkasse)</li>
|
||
<li>5 · Nachnahme</li>
|
||
<li>6 · PayPal (Vorkasse)</li>
|
||
<li>8 · Skrill (Vorkasse)</li>
|
||
<li>9 · Selbstabholung und Barzahlung</li>
|
||
<li>10 · Sofortüberweisung</li>
|
||
</ul>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>status</strong></td>
|
||
<td>
|
||
Mögliche Rückgabewerte siehe
|
||
<a href="https://www.booklooker.de/pages/rest_api.php?interface=order_status">order_status</a>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>tel</td>
|
||
<td>Telefonnummer des Käufers</td>
|
||
</tr>
|
||
<tr>
|
||
<td>ustIdNr</td>
|
||
<td>Umsatzsteuer-Identifikationsnummer des Käufers</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<strong>invoiceAddress</strong><br>
|
||
deliveryAddress
|
||
</td>
|
||
<td>
|
||
Rechnungs- und ggf. Lieferanschrift
|
||
<table class="table-padding-5 grid">
|
||
<tr><td><strong>title</strong></td><td>Anrede</td></tr>
|
||
<tr><td><strong>name</strong></td><td>Nachname</td></tr>
|
||
<tr><td><strong>firstName</strong></td><td>Vorname</td></tr>
|
||
<tr><td>company</td><td>Firma</td></tr>
|
||
<tr><td>addressSupplement</td><td>Zusatz</td></tr>
|
||
<tr><td><strong>street</strong></td><td>Straße und Hausnummer</td></tr>
|
||
<tr><td><strong>zip</strong></td><td>PLZ</td></tr>
|
||
<tr><td><strong>city</strong></td><td>Ort</td></tr>
|
||
<tr><td><strong>country</strong></td><td>Land</td></tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>orderItems</strong></td>
|
||
<td>
|
||
<table class="table-padding-5 grid">
|
||
<tr>
|
||
<td><strong>amount</strong></td>
|
||
<td>Bestellmenge</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>author</strong></td>
|
||
<td>
|
||
Geistiger Schöpfer des Artikels, abhängig vom <q>mediaType</q> (s.u.):
|
||
<ul class="default-list">
|
||
<li>Buch · Autor/in</li>
|
||
<li>Hörbuch · Autor/in</li>
|
||
<li>Film · Regisseur/in</li>
|
||
<li>Tonträger · Interpret/in</li>
|
||
<li>Spiel · Autor/in</li>
|
||
</ul>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>infotext</td>
|
||
<td>
|
||
Beschreibungstext des Artikels (diese Option muss von unserem Kundendienst aktiviert
|
||
werden, bitte schreiben Sie bei Bedarf eine E-Mail an support@booklooker.de
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>mediaType</strong></td>
|
||
<td>
|
||
<ul class="default-list">
|
||
<li>0 · Buch</li>
|
||
<li>3 · Hörbuch</li>
|
||
<li>1 · Film</li>
|
||
<li>2 · Tonträger</li>
|
||
<li>4 · Spiel</li>
|
||
</ul>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>note</td>
|
||
<td>Persönliche Notiz/Lagerort (nur wenn vorhanden)</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>orderItemId</strong></td>
|
||
<td>
|
||
Interne booklooker <q>orderItemId</q> des Artikels, wichtig bei Nutzung der Schnittstelle
|
||
<a href="https://www.booklooker.de/pages/rest_api.php?interface=order_item_cancel">order_item_cancel</a>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>orderNo</strong></td>
|
||
<td>Ihre Bestellnummer</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>orderTitle</strong></td>
|
||
<td>Titel des Artikels</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>singlePrice</td>
|
||
<td>Preis des einzelnen Bestellpostens (unabhängig von Amount)</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>status</strong></td>
|
||
<td>
|
||
<ul class="default-list">
|
||
<li>Ordered</li>
|
||
<li>Canceled</li>
|
||
</ul>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>totalPriceRebated</strong></td>
|
||
<td>Gesamtpreis des Bestellpostens abzgl. evtl. Rabatte</td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
value:
|
||
status: OK
|
||
returnValue: ""
|
||
INVALID_ORDERID:
|
||
description: Der Parameter <q>orderId</q> hat ein falsches Format.
|
||
value:
|
||
status: NOK
|
||
returnValue: INVALID_ORDERID
|
||
INVALID_DATE:
|
||
description: Der Parameter <q>date</q> hat ein falsches Datumsformat.
|
||
value:
|
||
status: NOK
|
||
returnValue: INVALID_DATE
|
||
INVALID_DATE_FROM:
|
||
description: Der Parameter <q>dateFrom</q> hat ein falsches Datumsformat.
|
||
value:
|
||
status: NOK
|
||
returnValue: INVALID_DATE_FROM
|
||
INVALID_DATE_TO:
|
||
description: Der Parameter <q>dateTo</q> hat ein falsches Datumsformat.
|
||
value:
|
||
status: NOK
|
||
returnValue: INVALID_DATE_TO
|
||
INVALID_DATE_INTERVAL:
|
||
description: Das maximal erlaubte Intervall beträgt 1 Monat.
|
||
value:
|
||
status: NOK
|
||
returnValue: INVALID_DATE_INTERVAL
|
||
ENCODING_ERROR:
|
||
$ref: '#/components/responses/ENCODING_ERROR'
|
||
INVALID_INTERFACE:
|
||
$ref: '#/components/responses/INVALID_INTERFACE'
|
||
INVALID_REQUEST_METHOD:
|
||
$ref: '#/components/responses/INVALID_REQUEST_METHOD'
|
||
QUOTA_EXCEEDED:
|
||
$ref: '#/components/responses/QUOTA_EXCEEDED'
|
||
SERVER_DOWN:
|
||
$ref: '#/components/responses/SERVER_DOWN'
|
||
TEMPORARILY_BLOCKED:
|
||
$ref: '#/components/responses/TEMPORARILY_BLOCKED'
|
||
TOKEN_EXPIRED:
|
||
$ref: '#/components/responses/TOKEN_EXPIRED'
|
||
TOKEN_MISSING:
|
||
$ref: '#/components/responses/TOKEN_MISSING'
|
||
TOKEN_UNKNOWN:
|
||
$ref: '#/components/responses/TOKEN_UNKNOWN'
|
||
/order_cancel:
|
||
put:
|
||
tags:
|
||
- order
|
||
summary: Stornieren einer kompletten Bestellung
|
||
description: Stornieren einer kompletten Bestellung
|
||
security:
|
||
- tokenAuth: [ ]
|
||
parameters:
|
||
- $ref: '#/components/parameters/orderIdParam'
|
||
responses:
|
||
'200':
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
status:
|
||
type: string
|
||
returnValue:
|
||
type: mixed
|
||
examples:
|
||
SUCCESS:
|
||
description: Die Bestellung wurde erfolgreich storniert.
|
||
value:
|
||
status: OK
|
||
returnValue: SUCCESS
|
||
INVALID_PARAMETERS:
|
||
description: Der Parameter <q>orderId</q> ist leer oder nicht vorhanden.
|
||
value:
|
||
status: NOK
|
||
returnValue: INVALID_PARAMETERS
|
||
NOT_FOUND:
|
||
$ref: '#/components/responses/NOT_FOUND_ORDERID'
|
||
NO_ARTICLES_FOUND:
|
||
description: Es wurden keine zu stornierenden Artikel gefunden.
|
||
value:
|
||
status: NOK
|
||
returnValue: NO_ARTICLES_FOUND
|
||
SIX_WEEKS_EXCEEDED:
|
||
$ref: '#/components/responses/SIX_WEEKS_EXCEEDED'
|
||
ENCODING_ERROR:
|
||
$ref: '#/components/responses/ENCODING_ERROR'
|
||
INVALID_INTERFACE:
|
||
$ref: '#/components/responses/INVALID_INTERFACE'
|
||
INVALID_REQUEST_METHOD:
|
||
$ref: '#/components/responses/INVALID_REQUEST_METHOD'
|
||
QUOTA_EXCEEDED:
|
||
$ref: '#/components/responses/QUOTA_EXCEEDED'
|
||
SERVER_DOWN:
|
||
$ref: '#/components/responses/SERVER_DOWN'
|
||
TEMPORARILY_BLOCKED:
|
||
$ref: '#/components/responses/TEMPORARILY_BLOCKED'
|
||
TOKEN_EXPIRED:
|
||
$ref: '#/components/responses/TOKEN_EXPIRED'
|
||
TOKEN_MISSING:
|
||
$ref: '#/components/responses/TOKEN_MISSING'
|
||
TOKEN_UNKNOWN:
|
||
$ref: '#/components/responses/TOKEN_UNKNOWN'
|
||
/order_item_cancel:
|
||
put:
|
||
tags:
|
||
- order
|
||
summary: Stornieren der Bestellung eines Einzelartikels
|
||
description: Stornieren der Bestellung eines Einzelartikels
|
||
security:
|
||
- tokenAuth: [ ]
|
||
parameters:
|
||
- name: orderItemId
|
||
description: |
|
||
Interne booklooker "orderItemId" des Artikels, wird von der Schnittstelle
|
||
<a href="https://www.booklooker.de/pages/rest_api.php?interface=order">order</a> zurückgeliefert.
|
||
in: query
|
||
required: true
|
||
schema:
|
||
type: integer
|
||
- name: mediaType
|
||
description: |
|
||
Medientyp, mögliche Werte:
|
||
<ul class="default-list">
|
||
<li>0 · Bücher</li>
|
||
<li>1 · Filme</li>
|
||
<li>2 · Musik</li>
|
||
<li>3 · Hörbücher</li>
|
||
<li>4 · Spiele</li>
|
||
</ul>
|
||
in: query
|
||
required: true
|
||
schema:
|
||
type: integer
|
||
minimum: 0
|
||
maximum: 4
|
||
responses:
|
||
'200':
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
status:
|
||
type: string
|
||
returnValue:
|
||
type: mixed
|
||
examples:
|
||
SUCCESS:
|
||
description: Die Artikel wurde erfolgreich storniert.
|
||
value:
|
||
status: OK
|
||
returnValue: SUCCESS
|
||
INVALID_PARAMETERS:
|
||
description: |
|
||
Einer der Parameter <q>orderItemId</q> oder <q>mediaType</q> ist leer oder nicht vorhanden.
|
||
Auch ein falscher Wert für den Parameter <q>mediaType</q> erzeugt diesen Fehler.
|
||
value:
|
||
status: NOK
|
||
returnValue: INVALID_PARAMETERS
|
||
NOT_FOUND:
|
||
description: |
|
||
Die <q>orderItemId</q> wurde nicht gefunden.
|
||
Bitte achten Sie darauf, ausschließlich die <q>orderItemId</q> zu verwenden,
|
||
die Sie über die Schnittstelle
|
||
<a href="https://www.booklooker.de/pages/rest_api.php?interface=order">order</a> ausgelesen haben.
|
||
value:
|
||
status: NOK
|
||
returnValue: NOT_FOUND
|
||
SIX_WEEKS_EXCEEDED:
|
||
$ref: '#/components/responses/SIX_WEEKS_EXCEEDED'
|
||
ENCODING_ERROR:
|
||
$ref: '#/components/responses/ENCODING_ERROR'
|
||
INVALID_INTERFACE:
|
||
$ref: '#/components/responses/INVALID_INTERFACE'
|
||
INVALID_REQUEST_METHOD:
|
||
$ref: '#/components/responses/INVALID_REQUEST_METHOD'
|
||
QUOTA_EXCEEDED:
|
||
$ref: '#/components/responses/QUOTA_EXCEEDED'
|
||
SERVER_DOWN:
|
||
$ref: '#/components/responses/SERVER_DOWN'
|
||
TEMPORARILY_BLOCKED:
|
||
$ref: '#/components/responses/TEMPORARILY_BLOCKED'
|
||
TOKEN_EXPIRED:
|
||
$ref: '#/components/responses/TOKEN_EXPIRED'
|
||
TOKEN_MISSING:
|
||
$ref: '#/components/responses/TOKEN_MISSING'
|
||
TOKEN_UNKNOWN:
|
||
$ref: '#/components/responses/TOKEN_UNKNOWN'
|
||
/order_message:
|
||
put:
|
||
tags:
|
||
- order
|
||
summary: Versand einer Nachricht an den Kunden
|
||
description: Versand einer Nachricht an den Kunden
|
||
security:
|
||
- tokenAuth: [ ]
|
||
parameters:
|
||
- $ref: '#/components/parameters/orderIdParam'
|
||
- name: messageType
|
||
description: |
|
||
<p>Art der Nachricht, mögliche Werte</p>
|
||
<table class="table-padding-5 grid">
|
||
<tr><th>Wert</th><th>Beschreibung</th></tr>
|
||
<tr><td>PAYMENT_INFORMATION</td><td>Zahlungsinformationen senden</td></tr>
|
||
<tr><td>PAYMENT_REMINDER</td><td>Zahlungserinnerung senden</td></tr>
|
||
<tr><td>SHIPPING_NOTICE</td><td>Versandmitteilung senden</td></tr>
|
||
</table>
|
||
in: query
|
||
required: true
|
||
schema:
|
||
type: string
|
||
enum:
|
||
- PAYMENT_INFORMATION
|
||
- PAYMENT_REMINDER
|
||
- SHIPPING_NOTICE
|
||
- name: additionalText
|
||
description: Zusätzlicher Text, der in die Nachricht aufgenommen wird
|
||
in: query
|
||
schema:
|
||
type: string
|
||
responses:
|
||
'200':
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
status:
|
||
type: string
|
||
returnValue:
|
||
type: mixed
|
||
examples:
|
||
SUCCESS:
|
||
description: Zurückgegeben wird der Nachrichtentext, der an den Kunden per Mail versandt wurde.
|
||
value:
|
||
status: OK
|
||
returnValue: ""
|
||
INVALID_ORDERID:
|
||
description: Der Parameter <q>orderId</q> fehlt oder ist nicht korrekt angegeben.
|
||
value:
|
||
status: NOK
|
||
returnValue: INVALID_ORDERID
|
||
INVALID_MESSAGE_TYPE:
|
||
description: Der Parameter <q>messageType</q> fehlt oder ist nicht korrekt angegeben.
|
||
value:
|
||
status: NOK
|
||
returnValue: INVALID_MESSAGE_TYPE
|
||
ORDER_NOT_FOUND:
|
||
$ref: '#/components/responses/NOT_FOUND_ORDERID'
|
||
NO_RECIPIENT:
|
||
description: Es ist kein Handelspartner für diesen Verkauf eingetragen.
|
||
value:
|
||
status: NOK
|
||
returnValue: NO_RECIPIENT
|
||
NO_ARTICLES:
|
||
description: Alle im Verkauf enthaltenen Artikel sind storniert.
|
||
value:
|
||
status: NOK
|
||
returnValue: NO_ARTICLES
|
||
ALREADY_SENT:
|
||
description: Die Nachricht dieses Typs wurde bereits versandt (nur bei Versandmitteilungen).
|
||
value:
|
||
status: NOK
|
||
returnValue: ALREADY_SENT
|
||
TIME_RESTRICTION:
|
||
description: |
|
||
Zeitliche Beschränkungen verhindern den Versand der Nachricht. Es gelten folgende Regeln:
|
||
<ul class="default-list">
|
||
<li>Zahlungsinformationen können nur alle 7 Tage verschickt werden.</li>
|
||
<li>Zahlungserinnerungen können nur alle 7 Tage verschickt werden.</li>
|
||
<li>Eine Zahlungserinnerung kann frühestens am 7. Tag nach der Bestellung verschickt werden.</li>
|
||
</ul>
|
||
value:
|
||
status: NOK
|
||
returnValue: TIME_RESTRICTION
|
||
ENCODING_ERROR:
|
||
$ref: '#/components/responses/ENCODING_ERROR'
|
||
INVALID_INTERFACE:
|
||
$ref: '#/components/responses/INVALID_INTERFACE'
|
||
INVALID_REQUEST_METHOD:
|
||
$ref: '#/components/responses/INVALID_REQUEST_METHOD'
|
||
QUOTA_EXCEEDED:
|
||
$ref: '#/components/responses/QUOTA_EXCEEDED'
|
||
SERVER_DOWN:
|
||
$ref: '#/components/responses/SERVER_DOWN'
|
||
TEMPORARILY_BLOCKED:
|
||
$ref: '#/components/responses/TEMPORARILY_BLOCKED'
|
||
TOKEN_EXPIRED:
|
||
$ref: '#/components/responses/TOKEN_EXPIRED'
|
||
TOKEN_MISSING:
|
||
$ref: '#/components/responses/TOKEN_MISSING'
|
||
TOKEN_UNKNOWN:
|
||
$ref: '#/components/responses/TOKEN_UNKNOWN'
|
||
/order_status:
|
||
put:
|
||
tags:
|
||
- order
|
||
summary: Setzen des Status einer Bestellung
|
||
description: Setzen des Status einer Bestellung
|
||
security:
|
||
- tokenAuth: [ ]
|
||
parameters:
|
||
- $ref: '#/components/parameters/orderIdParam'
|
||
- name: status
|
||
in: query
|
||
required: true
|
||
schema:
|
||
type: string
|
||
enum:
|
||
- BUYER_NO_REACTION
|
||
- CANCELED
|
||
- PAID_WAITING_FOR_SHIPMENT
|
||
- READY_FOR_SHIPMENT
|
||
- SHIPPED_AND_PAID
|
||
- SHIPPED_WAITING_FOR_PAYMENT
|
||
- TO_BE_PAID
|
||
- VENDOR_NO_REACTION
|
||
- WAITING_FOR_PAYMENT
|
||
- WAITING_FOR_SHIPMENT
|
||
description: |
|
||
<p>Neuer Status der Bestellung</p>
|
||
|
||
<p>
|
||
<strong>Achtung:</strong> Das Setzen des Status <strong>CANCELED</strong>
|
||
ist nicht gleichbedeutend mit dem Aufruf der Schnittstelle
|
||
<a href="https://www.booklooker.de/pages/rest_api.php?interface=order_item_cancel">order_item_cancel</a>.
|
||
Der Status <strong>CANCELED</strong> dient lediglich der
|
||
Eigenorganisation des Verkäufers. Um eine Bestellung so zu
|
||
stornieren, dass keine Provision anfällt, <strong>muss</strong>
|
||
<a href="https://www.booklooker.de/pages/rest_api.php?interface=order_item_cancel">order_item_cancel</a>
|
||
aufgerufen werden.
|
||
</p>
|
||
|
||
<h4>Bei Verkäufen sind die folgenden Status möglich</h4>
|
||
|
||
<table class="table-padding-5 grid">
|
||
<tr><th>Status</th><th>Bedeutung</th></tr>
|
||
<tr><td>WAITING_FOR_PAYMENT</td><td>warte auf Zahlung</td></tr>
|
||
<tr><td>READY_FOR_SHIPMENT</td><td>fertig zum Versand</td></tr>
|
||
<tr><td>SHIPPED_WAITING_FOR_PAYMENT</td><td>versendet, warte auf Zahlung</td></tr>
|
||
<tr><td>SHIPPED_AND_PAID</td><td>versendet & bezahlt</td></tr>
|
||
<tr><td>BUYER_NO_REACTION</td><td>Kunde reagiert nicht</td></tr>
|
||
<tr><td>CANCELED</td><td>storniert</td></tr>
|
||
</table>
|
||
|
||
<h4>Bei Käufen sind die folgenden Status möglich</h4>
|
||
|
||
<table class="table-padding-5 grid">
|
||
<tr><th>Status</th><th>Bedeutung</th></tr>
|
||
<tr><td>TO_BE_PAID</td><td>Zahlung offen</td></tr>
|
||
<tr><td>WAITING_FOR_PAYMENT_INFO</td><td>warte auf Zahlungsinformationen</td></tr>
|
||
<tr><td>WAITING_FOR_SHIPMENT</td><td>warte auf Lieferung</td></tr>
|
||
<tr><td>PAID_WAITING_FOR_SHIPMENT</td><td>bezahlt, warte auf Lieferung</td></tr>
|
||
<tr><td>RECEIVED_AND_PAID</td><td>erhalten & bezahlt </td></tr>
|
||
<tr><td>VENDOR_NO_REACTION</td><td>Verkäufer reagiert nicht</td></tr>
|
||
<tr><td>CANCELED</td><td>storniert</td></tr>
|
||
</table>
|
||
responses:
|
||
'200':
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
status:
|
||
type: string
|
||
returnValue:
|
||
type: mixed
|
||
examples:
|
||
SUCCESS:
|
||
description: Der Status wurde erfolgreich gesetzt.
|
||
value:
|
||
status: OK
|
||
returnValue: SUCCESS
|
||
INVALID_PARAMETERS:
|
||
description: Einer der Parameter <q>orderId</q> oder <q>status</q> ist leer oder nicht vorhanden.
|
||
value:
|
||
status: NOK
|
||
returnValue: INVALID_PARAMETERS
|
||
NOT_FOUND:
|
||
$ref: '#/components/responses/NOT_FOUND_ORDERID'
|
||
STATUS_NOT_VALID:
|
||
description: Kein gültiger Wert für den Parameter <q>status</q>.
|
||
value:
|
||
status: NOK
|
||
returnValue: STATUS_NOT_VALID
|
||
ENCODING_ERROR:
|
||
$ref: '#/components/responses/ENCODING_ERROR'
|
||
INVALID_INTERFACE:
|
||
$ref: '#/components/responses/INVALID_INTERFACE'
|
||
INVALID_REQUEST_METHOD:
|
||
$ref: '#/components/responses/INVALID_REQUEST_METHOD'
|
||
QUOTA_EXCEEDED:
|
||
$ref: '#/components/responses/QUOTA_EXCEEDED'
|
||
SERVER_DOWN:
|
||
$ref: '#/components/responses/SERVER_DOWN'
|
||
TEMPORARILY_BLOCKED:
|
||
$ref: '#/components/responses/TEMPORARILY_BLOCKED'
|
||
TOKEN_EXPIRED:
|
||
$ref: '#/components/responses/TOKEN_EXPIRED'
|
||
TOKEN_MISSING:
|
||
$ref: '#/components/responses/TOKEN_MISSING'
|
||
TOKEN_UNKNOWN:
|
||
$ref: '#/components/responses/TOKEN_UNKNOWN'
|
||
components:
|
||
securitySchemes:
|
||
tokenAuth:
|
||
type: apiKey
|
||
in: query
|
||
name: token
|
||
parameters:
|
||
orderNoParam:
|
||
name: orderNo
|
||
description: Ihre Bestellnummer
|
||
in: query
|
||
required: true
|
||
schema:
|
||
type: string
|
||
orderIdParam:
|
||
name: orderId
|
||
description: |
|
||
Interne booklooker <q>orderId</q> der Bestellung, wird von der Schnittstelle
|
||
<a href="https://www.booklooker.de/pages/rest_api.php?interface=order">order</a> zurückgeliefert.
|
||
in: query
|
||
required: true
|
||
schema:
|
||
type: integer
|
||
responses:
|
||
SERVER_DOWN:
|
||
description: Aufgrund von Wartungsarbeiten ist die REST API momentan nicht verfügbar.
|
||
value:
|
||
status: NOK
|
||
returnValue: SERVER_DOWN
|
||
INVALID_INTERFACE:
|
||
description: Es wurde eine ungültige Schnittstelle verwendet.
|
||
value:
|
||
status: NOK
|
||
returnValue: INVALID_INTERFACE
|
||
INVALID_REQUEST_METHOD:
|
||
description: Die Schnittstelle wurde mit einer ungültigen HTTP-Methode aufgerufen.
|
||
value:
|
||
status: NOK
|
||
returnValue: INVALID_REQUEST_METHOD
|
||
TOKEN_MISSING:
|
||
description: Der Token ist leer oder nicht vorhanden.
|
||
value:
|
||
status: NOK
|
||
returnValue: TOKEN_MISSING
|
||
TOKEN_UNKNOWN:
|
||
description: Der Token wurde nicht gefunden.
|
||
value:
|
||
status: NOK
|
||
returnValue: TOKEN_UNKNOWN
|
||
TOKEN_EXPIRED:
|
||
description: Der Token ist nicht mehr gültig, eine erneute Authentifizierung ist notwendig.
|
||
value:
|
||
status: NOK
|
||
returnValue: TOKEN_EXPIRED
|
||
TEMPORARILY_BLOCKED:
|
||
description: Der Zugang wurde vorübergehend gesperrt, bitte wenden Sie sich an unseren Kundensupport.
|
||
value:
|
||
status: NOK
|
||
returnValue: TEMPORARILY_BLOCKED
|
||
QUOTA_EXCEEDED:
|
||
description: Die maximale Anzahl Abfragen/Minute wurde überschritten.
|
||
value:
|
||
status: NOK
|
||
returnValue: QUOTA_EXCEEDED
|
||
ENCODING_ERROR:
|
||
description: Die Rückgabe enthält ungültige Zeichen.
|
||
value:
|
||
status: NOK
|
||
returnValue: ENCODING_ERROR
|
||
SIX_WEEKS_EXCEEDED:
|
||
description: Eine Stornierung ist nur 6 Wochen nach Bestelleingang möglich.
|
||
value:
|
||
status: NOK
|
||
returnValue: SIX_WEEKS_EXCEEDED
|
||
INVALID_PARAMETER_ORDERNO:
|
||
description: Der Parameter <q>orderNo</q> ist leer oder nicht vorhanden.
|
||
value:
|
||
status: NOK
|
||
returnValue: INVALID_PARAMETERS
|
||
NOT_FOUND_ORDERNO:
|
||
description: Die Bestellnummer wurde nicht gefunden.
|
||
value:
|
||
status: NOK
|
||
returnValue: NOT_FOUND
|
||
NOT_FOUND_ORDERID:
|
||
description: Die <q>orderId</q> wurde nicht gefunden.
|
||
value:
|
||
status: NOK
|
||
returnValue: NOT_FOUND
|