Documentazione API Mokapen

Autenticazione

Tutte le richieste API richiedono un access token Bearer. Il modo in cui ottieni il token dipende dal tipo di applicazione (public o private).

Header Bearer token

Includi l'access token in ogni richiesta API:

Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...
Accept: application/json

App public — OAuth 2.0 authorization code

Le app public usano il grant standard OAuth 2.0 authorization code.

Richiesta di autorizzazione

Reindirizza l'utente all'endpoint di autorizzazione:

GET https://mokapen.com/oauth/authorize

Parametri query:
  client_id      (obbligatorio) Il tuo Client ID
  redirect_uri   (obbligatorio) Deve corrispondere a un redirect URL registrato
  response_type  (obbligatorio) Deve essere "code"
  scope          (obbligatorio) Scope separati da spazio, es. tasks.read tasks.write
  state          (obbligatorio) Valore casuale (min. 16 caratteri) anti-CSRF
Durante l'autorizzazione l'utente seleziona l'organizzazione a cui concedere l'accesso. L'access token emesso è vincolato a quell'organizzazione.

Esempio richiesta autorizzazione (PHP)

$params = [
    'client_id'     => 'YOUR_CLIENT_ID',
    'redirect_uri'  => 'https://example.com/oauth/callback',
    'response_type' => 'code',
    'scope'         => 'tasks.read tasks.write',
    'state'         => bin2hex(random_bytes(8)),
];

$url = 'https://mokapen.com/oauth/authorize?' . http_build_query($params);
header('Location: ' . $url);

Scambia il codice di autorizzazione con i token

Dopo l'approvazione, Mokapen reindirizza al tuo redirect_uri con il parametro code. Scambialo con i token:

POST https://mokapen.com/oauth/token
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&client_id=YOUR_CLIENT_ID
&client_secret=YOUR_CLIENT_SECRET
&redirect_uri=https://example.com/oauth/callback
&code=AUTHORIZATION_CODE_FROM_CALLBACK

Esempio risposta token

{
  "token_type": "Bearer",
  "expires_in": 31536000,
  "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...",
  "refresh_token": "def50200...",
  "organization_id": 849,
  "organization_name": "Your Organization"
}
Il campo organization_id nella risposta riflette l'organizzazione scelta dall'utente in autorizzazione. Usa lo stesso ID negli URL API (vedi Organizzazioni).

Refresh token

Quando l'access token scade, richiedine uno nuovo con il refresh token:

POST https://mokapen.com/oauth/token
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token
&client_id=YOUR_CLIENT_ID
&client_secret=YOUR_CLIENT_SECRET
&refresh_token=YOUR_REFRESH_TOKEN

App private — Client credentials

Le app private non richiedono redirect OAuth. Dalla dashboard Developer, apri l'applicazione, vai su Credentials e clicca Generate Token.

Il token viene creato con il grant client_credentials ed è legato all'organizzazione attiva in sessione. Conservalo in modo sicuro e non condividerlo pubblicamente.

POST https://mokapen.com/oauth/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
&client_id=YOUR_CLIENT_ID
&client_secret=YOUR_CLIENT_SECRET
&scope=tasks.read tasks.write contacts.read
&organization_id=849
Passa sempre organization_id quando richiedi un token per app private. L'ID organizzazione viene salvato nel token e verificato sulle chiamate API successive.

Prima richiesta API

$url = 'https://mokapen.com/api/v1/849/contacts';
$token = 'YOUR_ACCESS_TOKEN';

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $token,
        'Accept: application/json',
    ],
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

Hai bisogno di aiuto?