Link Search Menu Expand Document
Inhoudstafel
  1. REST API v1 vs v2
    1. Endpoints
    2. Verschillen tussen REST API v1 en v2
      1. Authenticatie
      2. Responseformaten
        1. Voorbeelden
      3. Van /media resource naar /records
    3. Nieuwe features
    4. Links
      1. Documentatie

REST API v1 vs v2

MediaHaven biedt sinds het begin een REST API aan om bewerkingen uit te kunnen voeren op mediaobjecten. Vanaf MediaHaven versie 21.1 (uitgebracht op 16 april 2021) werd van deze REST API een nieuwe versie uitgerold. We zullen verder in de tekst deze twee versies van elkaar onderscheiden met de aanduidingen “v1” en “v2”.

Hoewel veel van de basisfuncties in de nieuwe REST API (zoals het opvragen van een resource, het uitvoeren van een zoekopdracht,…) quasi onveranderd zijn gebleven, werden er ook wijzigingen ingevoerd die backwards incompatible zijn. Hierdoor zouden bestaande integraties die gebruik maken van de REST API v1 kunnen breken wanneer ze naar het nieuwe endpoint worden overgezet.

De oude REST API v1, op het huidige endpoint, wordt nog ondersteund tot MediaHaven versie 22.1, maar we raden sterk aan om naar de nieuwe REST API v2, op het nieuwe endpoint, over te stappen.

Endpoints

Zeticon koos voor het versiebeheer van hun REST API voor versiebeheer via het URL-pad. Dit betekent dat het versienummer toegevoegd wordt aan het URL-pad om de v2 van de REST API te bereiken. Concreet:

API versie Endpoint
v1 https://archief.viaa.be/mediahaven-rest-api/
v2 https://archief.viaa.be/mediahaven-rest-api/v2/

Note: Dit zijn de endpoints voor de productieomgeving! Voor een beschrijving van de verschillende omgevingen en hun endpoints, zie Alles om te starten met het bouwen van een integratie.

Verschillen tussen REST API v1 en v2

Hieronder lijsten we eerst kort de belangrijkste backwards incompatible verschillen op tussen de REST API v1 en v2. Daarna gaan we dieper in op wat dat concreet inhoudt.

  • authenticatie kan énkel nog via OAuth2: Basic Auth wordt niet meer ondersteund
  • de structuur van de JSON response wijzigt
  • de resource /media is nu /records geworden

Voor een volledig overzicht van de verschillen verwijzen we je naar de links onderaan deze pagina.

Authenticatie

  • Authenticatie is het proces waarbij gebruikers aantonen dat ze werkelijk zijn wie ze beweren te zijn, of liever: dat ze de werkelijke eigenaar zijn van de identiteit die ze beweren te hebben.
  • Autorisatie is het proces waarbij een applicatie, op basis van de vastgestelde en geverifieerde identiteit, bepaalde acties toelaat of net weigert.

De REST API v1 liet twee manieren van authenticatie toe:

  • basic authentication
  • OAuth2

Basic authentication is een heel simpele vorm van authenticatie die deel uitmaakt van het HTTP-protocol. Hierbij worden gebruikersnaam en wachtwoord met elke call naar de API meegegeven in de HTTP Authorization header met de Basic prefix, bijvoorbeeld:

Authorization: Basic ZGVtbzpwQDU1dzByZA==

OAuth2 daarentegen is een “autorisatie framework”, een standaard op zich naast het HTTP-protocol. Hierbij wordt gebruik gemaakt van access tokens met een korte levensduur. Ook deze worden − gewoonlijk − meegegeven in de HTTP-requests via de Authorization header maar met de Bearer prefix, bijvoorbeeld:

Authorization: Bearer RsT5OjbzRn430zqMLgV3Ia

Op deze pagina vind je meer informatie over de OAuth2 authenticatie: Alles om te starten met het bouwen van een integratie.

Waarom is dit belangrijk? Integraties gebaseerd op REST API v1 zullen niet meer werken aangezien ze niet meer geauthenticeerd zijn.

Responseformaten

In REST API v1 was het al mogelijk om de nieuwe responseformaten (zowel voor JSON als voor XML) te verkrijgen via content negotiation in de HTTP Accept header. In de REST API v1 waren volgende responseformaten mogelijk:

Formaat Accept header
JSON v1 application/json
XML v1 application/xml
JSON v2 application/vnd.mediahaven.v2+json
XML v2 application/vnd.mediahaven.v2+xml

De nieuwere responseformaten in de REST API v1 (in de tabel hierboven: JSON v2 en XML v2) worden de standaard in de REST API v2. Dit betekent dat de Accept headers application/vnd.mediahaven.v2+json en application/vnd.mediahaven.v2+xml komen te vervallen. Het standaardformaat van de response in de REST API v2 is nu quasi gelijk aan het v2 formaat in de REST API v1.

Naast een wijziging aan de structuur (i.e. op welk JSON-pad bepaalde data te vinden is) van de response, is ook de casing gewijzigd:

  • de JSON keys in het v1 formaat zijn camelCase (e.g., totalNrOfResults)
  • de JSON keys in het v2 formaat zijn PascalCase (e.g., TotalNrOfResults)

Voorbeelden

  • JSON responseformaat application/json in REST API v1
{
    "totalNrOfResults": 10,
    "startIndex": 0,
    "mediaDataList": [
        {
        ...
        }
    ]
}
  • JSON responseformaat application/vnd.mediahaven.v2+json in REST API v1
{
    "TotalNrOfResults": 10,
    "StartIndex": 0,
    "MediaDataList": [
        {
        ...
        }
      ]
}
  • JSON responseformaat application/json in REST API v2
{
    "NrOfResults" : 5
    "TotalNrOfResults": 10,
    "StartIndex": 0,
    "Results": [
        {
        ...
        }
    ]
}

Zo zien we hier ook dat de array die de resultaten bevat in de REST API v2 nu altijd Results is.

Waarom is dit belangrijk? Integraties zijn meestal hoofdlettergevoelig en verwachten bepaalde data op een bepaalde plaats te vinden, deze assumpties zouden niet meer gelden in de REST API v2.

Van /media resource naar /records

De belangrijkste resource, de mediaobjecten, heetten in de REST API v1 media. Dit is nu gewijzigd naar records.

Nieuwe features

Zie MediaHaven Customer Support > REST API > Rest V2 vs v1 changes > New-features

Documentatie

De documentatie van beide versies is hier te vinden:

Raadpleeg hier de MediaHaven-documentatie over de verschillen tussen REST API v1 en v2:


Page last modified: Apr 19 2021 at 09:27 AM.