Zum Hauptinhalt springen
Alle KollektionenApps & IntegrationenAllgemein
Die offene REST-API von Keyline
Die offene REST-API von Keyline

Berechtigungen erstellen und verwalten mit Beispielen sowie neue Endpunkte

Matthias Prinz avatar
Verfasst von Matthias Prinz
Diese Woche aktualisiert

Die offiziellen Dokus von unseren beiden API findest Du hier:

Die Inbox-API eignet sich dazu von z.B. einem Web2Print-Shop einen Auftrag mit definierten Produktvorlagen in Keyline anzulegen.
Hier wird der virtuelle Einkaufswagen gepackt und mit einem Checkout erstellt Keyline Dir dann direkt eine Order mit Deinen definierten Daten und Produkten.


Mit der Advanced-API kannst du dann weitere Einstellungen vornehmen.

Im Adminbereich unter Accounts/API-Berechtigungen kannst Du neue API-Keys erstellen und verwalten.

Die Keys werden benötigt, um Drittanwendungen wie z.B. Shipcloud, make.com, CRM-Systeme etc. einzubinden.

Wenn Du über den Button “API-Zugangsberechtigung anlegen” einen neuen API-Key erstellt hast, kannst Du diesen an den Dienstleister weitergeben und jederzeit auch wieder sperren.

Vorsicht: API-Keys, die Du auf diese Weise erstellt hast, haben Zugriff auf sämtliche Ressourcen Deines Keyline-Accounts. Du kannst daher API-Keys auch nur für bestimmte Organisationen freigeben, die dann nur unter diesem Namen agieren können. Dazu legst Du den API-Key bitte direkt bei der Organisation an (Vertrieb > Organisation).

Nicht mehr benötigte Keys sollten sofort gesperrt werden.
Jeder API-Key zählt auch zur Gesamtzahl der User dazu.

Bitte beachte, dass ein einmalig gesperrter Key nicht entsperrt werden kann.


Hier findest Du auch noch einige Beispiele, die noch nicht in der offiziellen API dokumentiert sind:

API-Endpunkt um Auflagen pro Sorte zu definieren wie es im UI hier möglich ist:
/production/products/{product_ID}/actual_circulations from wishlist
Endpoints:
GET /api/v2/production/circulations // List all circulations for the product
GET /api/v2/production/products/:product_id/circulations/:id // Get a single circulation
PATCH /api/v2/production/products/:product_id/circulations/:id // Update the actual_amount of a circulation
Payload:

{
"circulation":{
"actual_amount": 32
}
}


API-Endpunkt für Lieferscheine, Auftragstaschen und Etiketten
Endpoints:
with headers set to { "Accept": "application/json"}


GET /api/v2/production/products/:product_id/job_bag.pdf
GET /api/v2/logistics/shipments/:shipment_id/delivery_note.pdf
GET /api/v2/logistics/shipments/:shipment_id/proforma_invoice.pdf
GET /api/v2/logistics/parcels/:parcel_id/label.pdf


with headers set to { "Accept": "application/pdf"}


GET /api/v2/production/products/:product_id/job_bag
GET /api/v2/logistics/shipments/:shipment_id/delivery_note
GET /api/v2/logistics/shipments/:shipment_id/proforma_invoice
GET /api/v2/logistics/parcels/:parcel_id/label


Wenn Du Material vordefinieren willst über die API:

Material Presets:

/api/v2/conception/products/:product_id/components/:component_id/material_presets /api/v2/conception/products/:product_id/components/:component_id/finishings/:finishing_id/material_presets /api/v2/conception/products/:product_id/material_presets /api/v2/conception/products/:product_id/finishings/:finishing_id/material_presets


Beim Verpacken kannst Du dann z.B folgenden Endpunkt nutzen:​
/api/v2/conception/products/:product_id/packagings/:packaging_id/material_presets

{
"material_preset": {
"material_id": 1
}
}

Produktionsmittel wechseln geht einfach mit POST auf:

/conception/products/{product_id}/production_paths/{production_path-ID}/production_flow_modifications

und dann z.B.:

{ 
"production_flow_modification": {
"modification": "preset",
"workable_type": "component",
"workable_id": 1361413,
"stock_task_id": 6579,
"means_of_production_id": 10319
}
}

Workable_ID entspricht der komponenten_ID:

Dann noch ein conceptualize für die erneute Kalkulationsberechnung hinterher: (nicht zwingend notwendig) Aber schadet nicht.

/conception/products/product_ID/production_paths/production_path_ID/conceptualize

Falzschema anpassen geht mir einem PATCH
auf:

/conception/products/product_ID/components/component_ID/imposings/imposing_ID

mit z.B.:

"imposing": { 
"default_stock_folding_pattern_id": 983
}
}

Die default_stock_folding_pattern_id bekommst wie Deine Arbeitsvorgänge aus dem Adminbereich also über

/configuration/stock_folding_patterns

Achte aber drauf, dass Du von Einzelseiten auf zusammenhängend stellst.

"page_arrangement": "standalone"

auf

"page_arrangement": "crossover"

oder bei Paralellfalz:

"page_arrangement": "parallel"


Außerdem gibt es noch Suchfilter wie z.B.:

/accounting/invoices?billed_from=2024-08-28&billed_to=2024-08-28

Bei Rechnungen außerdem:

billed_from/billed_to und created_from/created_to
und bei Tasks:
updated_from und updated_until

Gleiches gibt es aus auch für Orders:

/sales/orders?state=draft

/sales/orders?created_from=2024-08-12&created_to=2024-09-12

/sales/orders?updated_from=2024-08-12&updated_to=2024-09-12

Oder auch für die Tasks:

/production/tasks?search_term=offset/production/tasks?state=running (completed, running, ready)

/production/tasks?created_from=2018-06-27&created_to=2018-06-27

/production/tasks?updated_from=2018-11-13&updated_to=2018-11-13

oder auch kombiniert:

/production/tasks?search_term=offsetdruck&state=ready


Produktinfos können auch über die API erstellt werden:
GET, POST, PATCH, DEL

/products/{product_id}/messages/new /conception/{product_id}/messages/new 

{
"text": "Ich bin die Produktinfo über die API"
}


Wenn Du Assignment (also den Kundenberater in einer Order setzen willst), dann musst du folgenden Endpunkt nutzen:

/sales/orders/{order_ID/assignments
und dann POST:

{
"assignment": {
"user_id": 4033,
"role": "customer_consultant"
}
}

Usser ID ist dann jeweils die ID, die du in der Benutzerverwaltung siehts.

Folgende Rollen können gesetzt werden:

  • customer_consultant

  • sales_representative

  • media_designer

  • prepress_employee

  • production_employee

  • accounting_employee



Lieferschein kannst Du während der Produktion hier abrufen:
/production/products/{production_ID} da die Shipment-ID raussuchen und dann:
/api/v2/logistics/shipments/:id/delivery_note

Dort bekommst Dudann auch den Lieferschein


Mit Document-Callbacks kannst du z.B. deine eigene Job-Bag hinterlegen:

Du machst einfach ein POST

/conception/products/{product_id}/document_callbacks

Mit dem Payload:

{
"document_callback": {
"kind": "job_bag",
"url": "http://deine_dokumenten_URL"
}
}


Die AB kannst du einfach unter folgender URL abrufen:


/sales/orders/{order_ID}/confirmation.pdf


Falls Du die Produktbeschreibung manuell anpassen willst, kannst Du das mit einem einfachen PATCH auf:

/conception/product/Product_ID

mit z.B.:

{
"custom_description": "Neue Produktbeschreibung über die API!"
}


Ein Produkt komplett beenden kannst du mit:


PATCH auf
/production/products/{product_ID}/complete


Fremdbeschaffungen erreichst Du unter:
GET auf:

/logistics/outsourcings


Und wenn Du Adressen schon einmal announcen willst, kannst Du das unter:

/api/v2/customer_relations/organizations/:organization_id/address_announcements

Die Adressen werden dann über die Schnell suche gefunden. Sobald die einmal verwendet wurden, sind diese dann auch bei der jeweiligen Organisation zu sehen.


Wenn Du über die API verpacken willst, dann gehst du folgendermaßen vor:


Man startet beim Verpacken mit einem POST um ein Packaging zu erstellen auf:

/conception/products/{product_id}/packagings


Dann PATCH auf

/conception/products/{product_id}/packagings/{packaging_id} 

(um zu definieren wie verpackt wird, Label, etc. )
dann ein POST auf


um Dein "Pick" zu erstellen in dem definiert wird was dann alles im nächsten Packaging verpackt wird,
Wenn Du mehrere Sorten oder Packagings hast, dann werden die alle in das JSON gepackt.

Also immer Packaging --> Pick --> Packaging.

Wenn direkt versendet wird, braucht es kein Pick, da das Packaging gleich die "deposition": "shipment" kommt.



Hat dies Ihre Frage beantwortet?