La procédure d'authentification diffère selon si vous souhaitez lire ou éditer des contenus

Authentification en lecture

L'authentification en lecture se fait en ajoutant un paramètre key à toutes vos requêtes de recherche: soit en la plaçant dans la query (`?key=votreclé`) soit dans un paramètre key en entête de votre requête.

Votre clé d'accès en lecture est disponible dans le segment Clés API de la page de paramétrage de votre compte (https://openagenda.com/settings/apiKey), accessible depuis votre onglet de profil dans l'entête de toute page sur OpenAgenda.

Un exemple:

https://api.openagenda.com/v2/agendas/{agendaUID}/events?key={VOTRECLE}&lang=fr

Authentification en écriture

La procédure d'authentification à suivre pour éditer du contenu sur OpenAgenda consiste à utiliser votre clé secrète pour récupérer un token d'accès qui vous servira pendant toute votre session. Celui-ci a une durée de vie limitée.

Votre clé secrète sera mise à disposition sur votre compte OA sur demande à support@openagenda.com

Une fois activée, la clé est disponible dans la section Clés API de la page de paramétrage de votre compte: https://openagenda.com/settings/apiKey

Dès que vous avez la clé, postez la sur: https://api.openagenda.com/v2/requestAccessToken

Precisez votre clé dans une variable 'code' et fixez la valeur 'grant_type' en face d'un champ 'authorization_code', les deux en corps de requête. Vous recevrez alors dans la réponse votre token d'accès et une indication sur sa durée de vie en secondes ( respectivement sous les noms access_token et expires_in )

Exemples

php - curl

Dans l'exemple suivant, les données d'authentification sont passées en corps de requête.

$ch = curl_init('https://api.openagenda.com/v2/requestAccessToken'); 
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
  'grant_type' => 'authorization_code',
  'code' => '--yoursecretgoeshere--'
));

$received_content = curl_exec($ch);
        
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 200) {
  $data = json_decode($received_content, true);
  $accessToken = $data['access_token'];
}

php - Guzzle

$client = new GuzzleHttp\Client();
$res = 'https://api.openagenda.com/v2/requestAccessToken';

$response = $client->post($res, [
  'multipart' => [
    [
      'name' => 'grant_type',
      'contents' => 'authorization_code'
    ],
    [
      'name' => 'code',
      'contents' => 'secret_key'
    ],
  ]
]);

$content = json_decode($response->getBody()->getContents());

$accessToken = $content['access_token'];

node.js

const https = require('https');
const querystring = require('querystring');


const post_data = querystring.stringify({
  'grant-type' : 'authorization_code',
  'code': '--yoursecretgoeshere--',
});

const options = {
  host: 'api.openagenda.com',
  path: '/v2/requestAccessToken',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': post_data.length
  }
};

const request = https.request(options, function (response) {
  let str = '';

  response.on('data', function (chunk) { str += chunk; });
  response.on('end', function () {
    if (response.statusCode == 200) {
      const access_token = JSON.parse(str).access_token;
      console.log(access_token);
    }
  });
});

request.write(post_data);
request.end();