4.1 Basics

Het basisconcept achter REST (REpresentational State Transfer) is tweeledig:

  1. Een resource (bron) wordt uniek geïdentificeerd door een URL.
  2. Operaties worden geïmplementeerd als HTTP-verzoeken met behulp van een specifieke methode.

Door correct samengestelde verzoeken naar een specifieke URL te sturen met de juiste HTTP-verzoeksmethode, kunnen alle operaties die door de API worden aangeboden, worden uitgevoerd.

4.1.1 REST URLs

De basis URL voor de Deployteq Data Model REST API is:https://login.myclang.com/app/api

De domeinnaam is afhankelijk van het portaal en het merk waarvoor je verzoeken wilt doen. Dus als je inlogt op https://login.myclang.com, gebruik je de eerste URL. Als je inlogt op je portaal op https://secure.myclang.com, gebruik je de tweede URL.

Het adresseren van resources in het gegevensmodel gebeurt door de resourcenaam en, indien nodig, de resourcenaam toe te voegen aan de URL. Bijvoorbeeld, de URL:

https://.../dataextension/pizzas

geeft toegang tot alle resources in de pizzatabel. In dit voorbeeld en alle onderstaande voorbeelden wordt de URL verkort weergegeven, maar uiteraard moeten alle verzoeken worden uitgevoerd met de volledige URL.

De URL:

https://.../dataextension/pizzas/clang_523ae306ee3bf

identificeert alleen de pizza met id clang_523ae306ee3bf in de pizzatabel. Alle resources in tabellen in het gegevensmodel ontvangen automatisch een id-veld met de naam clang_id met een unieke inhoud die wordt gegenereerd met het voorvoegsel 'clang_'.

Het is niet mogelijk om ids toe te wijzen via de API of op enige andere manier. Voor de klantentabel wordt een speciale id gebruikt. Klanten krijgen de Deployteq CRM-klant-id, voorafgegaan door 'clang_'. Als voorbeeld wordt het record voor de Deployteq-klant met klant-id 42 als volgt aangesproken:

https://.../dataextension/customer/clang_42

Wanneer tabellen aan elkaar zijn gerelateerd met behulp van een "bevat" relatie, worden ze aangesproken als subresources binnen de resource die ze bevat.

Bijvoorbeeld:

https://.../dataextension/customer/clang_42/order

geeft toegang tot alle bestellingen van de klant met id 42.

https://.../dataextension/customer/clang_42/order/clang_523ae3385d12c/orderedpizza

Een stap dieper gaat naar alle pizza's in de bestelling met id clang_523ae3385d12c voor de klant met id 42. Wanneer een subresource wordt aangevraagd, moet de URL alle bevattende resources identificeren.

Het is bijvoorbeeld niet mogelijk om toegang te krijgen tot bestelgegevens zonder de klant op te geven. De volgende URL zal een foutmelding opleveren:

https://.../dataextension/customer/order/

Belangrijk: de klantentabel is altijd gedefinieerd. Ongeacht de locatie waarin je werkt in Deployteq, herkent de REST API alleen de naam 'klant' (customer).


4.1.2. REST methodes

De REST API ondersteunt de volgende methoden. De resultaten van het verzoek kunnen variëren, afhankelijk van of je een id opgeeft in de resource-URL.


HTTP methodwithoud idwith id
GETreturn all recourcesreturn identified resource
POSTadd new resourceinvalid request
PUTinvalid requestupdate identified resource
DELETEinvalid requestdelete identified resource

4.2 REST responses

4.3.1 Response codes

De REST API reageert met de volgende reactiecodes:

CodeMessageMeaning
200OkThe request completed succesfully
304Not ModifiedThe request returns the same data as a previous GET request with the same properties
400Bad requestThe request is incorrectly formulated
401UnauthorizedThe request is not done with sufficient authorization
403ForbiddenThe request is not allowed access to the response
404Not foundThe requested resource is not present
405Method not allowedThe requested operation is not allowed.
410GoneThe requested resource is not present, and no alternative location is known.
423LockedThe requested resource is present, but access to the resource is not possible at the time of the request.
500Internal server errorAn error occurred while processing the request.
501Not implementedThe request method is not implemented in the API
503Service unavailableThe REST interface is not accessible at the time of the request

De precieze aard van fouten (codes in het 400-bereik) kan afhangen van het specifieke verzoek dat wordt ingediend.

4.3.2 Headers

REST-reacties bevatten de gebruikelijke HTTP-reactieheaders, en de REST-interface kan aangepaste headers toevoegen.

HeaderContent
X-ResourceThe URL of the resource that was created or modified
X-Deployteq-API-ErrorAdditional information in case an error was returned

Bij POST- en PUT-verzoeken wordt er geen gegevens in de respons geretourneerd. Als de ingevoegde of bijgewerkte gegevens vereist zijn, moet er een aanvullend GET-verzoek worden uitgevoerd naar de URL die wordt verstrekt in de X-Resource-header.

4.3.3 Body

Alleen in het geval van GET-verzoeken zal een REST-reactie gegevens bevatten in de responsbody, in de vorm van JSON. De gegevens die worden geretourneerd door de REST-interface zullen de informatie bevatten zoals beschreven in het gegevensmodel en metagegevens toevoegen die kunnen worden herkend aan de voorvoegsel 'clang_' bij de veldnamen.

De volgende metagegevens kunnen aanwezig zijn in de gegevens:

FieldValue
clang_idThe id of the resource, which may be used in request URLs
clang_createdatThe timestamp of creation of the resource
clang_createdbyThe Deployteq user that created the resource, often the user associated with the API token.
clang_modifiedatThe timestamp of the last modification of the resource.
clang_modifiedbyThe Deployteq user that last modified the resource, often the user associated with the API token.

Je kunt metagegevens niet instellen of wijzigen; deze worden automatisch door de API beheerd.