Authenticatie v2

Voor communicatie met de api zijn een koppeling sleutel en subscription key nodig. Hieronder zal worden uitgelegd hoe een bearer token opgehaald kan worden van de OAuth server en hoe daarmee een request naar SnelStart gestuurd kan worden.

Koppeling sleutel

Deze sleutel kunnen gebruikers van de partner applicatie beheren met SnelStart Web, deze geeft toegang tot de administratie waar deze sleutel bij hoort.
De sleutels kunnen ook geautomatiseerd verkregen worden, voor meer informatie over onze koppelsleutel webhook kijk hier .

Access token opvragen bij AuthServer

Het access token kan op twee manieren worden opgevraagd bij de auth server. De manier wordt gekozen door het grant_type op te geven. De waarde van grant_type kan zijn:
  1. clientkey
  2. password
De eenvoudigste manier is om het grant_type op "clientkey" te zetten en de koppelingssleutel in het property clientkey mee te sturen. Hieronder volgt een voorbeeld van een request met grant_type "clientkey". Een voorbeeld voor het grant_type "password" is hier te vinden
. Let op: het is belangrijk dat de credentials in de body worden gezet.
POST https://auth.snelstart.nl/b2b/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded

grant_type=clientkey&clientkey={sleutel}
Het acces_token uit de response body is nodig voor communicatie met de api.
{
    "access_token":"acces_token",
    "token_type":"bearer",
    "expires_in":3599
}

Subscription key

Deze sleutel kan een partner beheren bij het menuitem Producten en geeft toegang tot de api.

Data opvragen bij de API

Voorbeeld request
GET https://b2bapi.snelstart.nl/v2/relaties?$top=1 HTTP/1.1
Authorization: Bearer {acces_token}
Ocp-Apim-Subscription-Key: {subscription_key}

Voorbeeld code

In het volgende voorbeeld wordt een Bearer token opgehaald en wordt dit token gebruikt om de eigen relatie op te halen. Deze code is ook hier te downloaden.

 class Program
{
    static void Main(string[] args)
    {
        var clientKey = ""; // Vul dit met de koppelingsleutel verkregen op https://web.snelstart.nl
        string subscriptionKey = ""; // Vul dit met uw eigen key verkregen op https://b2bapi-developer.snelstart.nl 

        if (string.IsNullOrEmpty(clientKey) || string.IsNullOrEmpty(subscriptionKey))
        {
            Console.WriteLine("De variabelen apiKey en de clientkey moeten een waarde hebben");
        }
        else
        {
            var bearerToken = GetBearerToken(clientKey);
            GetEigenRelatie(subscriptionKey, bearerToken);
        }

        Console.ReadLine();
    }

    private static string GetBearerToken(string clientkey)
    {
        using (var httpClient = new HttpClient())
        {
            var requestBody = new Dictionary<string, string>
            {
                { "grant_type", "clientkey" },
                { "clientkey", clientkey }
            };

            Uri requestUri = new Uri("https://auth.snelstart.nl/b2b/token");

            var message = httpClient.PostAsync(requestUri, new FormUrlEncodedContent(requestBody)).Result;
            var json = message.Content.ReadAsStringAsync().Result;
            dynamic response = JObject.Parse(json);
          
            return response.access_token;
        }
    }

    private static void GetEigenRelatie(string subscriptionKey, string bearerToken)
    {
        using (var httpClient = new HttpClient())
        {
            httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
            httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {bearerToken}");
            var result = httpClient.GetAsync(new Uri("https://b2bapi.snelstart.nl/v2/relaties?$filter=Relatiesoort/any(r:r eq 'Eigen')")).Result;
            var json = result.Content.ReadAsStringAsync().Result;
            dynamic response = JArray.Parse(json);
            Console.WriteLine(response[0].naam);
        }
    }
}