# oAuth Authenticatie voor productiekoppelingen
Het gebruik van oAuth bij het initieren van de koppeling voorkomt dat de eindgebruikers handmatig sleutels hoeft aan te maken en uit te wisselen. Hiermee wordt het instellen van de koppeling voor gebruikers simpeler.
Partners die een productiekoppeling maken kunnen een activeringslink sturen in hun applicatie om te koppelen met SnelStart.
Om een oAuth koppeling tot stand te brengen dien je een WebhookURL met SnelStart te overleggen en van ons heb je de "AppShortName" nodig als onderdeel van de activeringslink. De Shortname wordt per mail verzonden in de aanmeldingsmail.
## Werking oAuth
### Activatielink
Via de onderstaande link kan de koppeling geïnitieerd worden. Je eigen `{appShortName}` heb je via SnelStart verkregen in de aanmeldingsmail.
```
https://web.snelstart.nl/couplings/activate/JouwappShortName
```
Roep je de link aan dan zie je, na inloggen, een melding dat er geen koppeling gelegd kan worden zonder dat er een referencekey meegegeven wordt.
### Querystring parameters
| Parameter | Verplicht | Beschrijving |
|-----------|-----------|--------------|
| `referenceKey` | Ja (bij webhook) | Bevat een waarde die met de webhook mee verstuurd wordt richting de partner zodat context bepaald kan worden. Hier kun je bijvoorbeeld klantnummers of andere herkenningswaardes in meegeven. De referenceKey kan niet meer dan 500 tekens bevatten. |
| `successUrl` | Nee | Moet urlencoded zijn. Wanneer het opzetten van de koppeling voltooid is wordt de gebruiker doorgestuurd naar deze url. |
### Voorbeeld
```
https://web.snelstart.nl/couplings/activate/{JouwAppShortName}?referenceKey={JouwReferentieSleutel}&successUrl=https%3A%2F%2Fweb.snelstart.nl
```
Als er een referenceKey wordt meegegeven dan zie je, na het inloggen, stap 2 van het koppelen.
## Webhook
Het opgeven van je webhook is verplicht voor productiekoppelingen anders kan de koppeling niet tot stand komen en zal de koppeling niet gecertificeerd kunnen worden.
Nadat de SnelStart gebruiker bij stap 4 gekozen heeft voor de optie koppeling instellen dan zullen we een POST sturen naar de door de ontwikkelaar opgegeven webhookURL.
### Request formaat
```http
POST https://{PartnerWebhook}
Content-Type: application/json
```
### Request body
```json
{
"KoppelSleutel": "string",
"ActionType": "Create" | "Regenerate" | "Delete",
"ReferenceKey": "string"
}
```
### Response
Wanneer de url een statuscode van 200 t/m 299 teruggeeft wordt het request als succesvol beschouwt. Wanneer er een andere status terugkomt of de aanvraag mislukt wordt er op dit moment geen retry gedaan.
## ActionTypes
| ActionType | Beschrijving |
|------------|--------------|
| `Create` | Nieuwe koppeling aangemaakt |
| `Regenerate` | Bestaande koppelsleutel opnieuw gegenereerd |
| `Delete` | Koppeling verwijderd |