booklooker_client/openapi.yaml
claudi 1d8ee1bba6 feat: Add Booklooker client configuration and exception handling
- 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.
2026-04-16 14:42:19 +02:00

1620 lines
66 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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&nbsp;POST und Sie erhalten einen <strong>Token</strong>,
welcher für alle folgenden Aufrufe benötigt wird.
Sofern Sie 10&nbsp;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 &middot; Bestellnummer</li>
<li>isbn &middot; ISBN</li>
<li>ean &middot; 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 &middot; nein</li>
<li>1 &middot; 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 &middot; nein</li>
<li>1 &middot; 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 &middot; Bücher</li>
<li>1 &middot; Filme</li>
<li>2 &middot; Musik</li>
<li>3 &middot; Hörbücher</li>
<li>4 &middot; 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 &middot; Bilddatei</li>
<li>article &middot; 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 &middot; Hinzufügen/ändern/Löschen</li>
<li>1 &middot; Ersetzen</li>
<li>2 &middot; 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 &middot; Bücher</li>
<li>1 &middot; Filme</li>
<li>2 &middot; Musik</li>
<li>3 &middot; Hörbücher</li>
<li>4 &middot; 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 &middot; nur der Status wird zurückgeliefert</li>
<li>1 &middot; 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> &middot; Das Element ist immer vorhanden.<br>
normal &middot; 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 &middot; Banküberweisung (Vorkasse)</li>
<li>2 &middot; Offene Rechnung</li>
<li>11 &middot; Offene Rechnung (Vorkasse vorbehalten)</li>
<li>3 &middot; Lastschrift (Vorkasse)</li>
<li>4 &middot; Kreditkarte (Vorkasse)</li>
<li>5 &middot; Nachnahme</li>
<li>6 &middot; PayPal (Vorkasse)</li>
<li>8 &middot; Skrill (Vorkasse)</li>
<li>9 &middot; Selbstabholung und Barzahlung</li>
<li>10 &middot; 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 &middot; Autor/in</li>
<li>Hörbuch &middot; Autor/in</li>
<li>Film &middot; Regisseur/in</li>
<li>Tonträger &middot; Interpret/in</li>
<li>Spiel &middot; 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 &middot; Buch</li>
<li>3 &middot; Hörbuch</li>
<li>1 &middot; Film</li>
<li>2 &middot; Tonträger</li>
<li>4 &middot; 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 &middot; Bücher</li>
<li>1 &middot; Filme</li>
<li>2 &middot; Musik</li>
<li>3 &middot; Hörbücher</li>
<li>4 &middot; 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 &amp; 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 &amp; 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