Todas las solicitudes de la API requieren un access token Bearer. La forma de obtener el token depende del tipo de aplicación (public o private).
Incluye el access token en cada solicitud de la API:
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...
Accept: application/json
Las apps public usan el grant estándar OAuth 2.0 authorization code.
Redirige al usuario al endpoint de autorización:
GET https://mokapen.com/oauth/authorize
Parámetros query:
client_id (obligatorio) Tu Client ID
redirect_uri (obligatorio) Debe coincidir con un redirect URL registrado
response_type (obligatorio) Debe ser "code"
scope (obligatorio) Scopes separados por espacio, ej. tasks.read tasks.write
state (obligatorio) Valor aleatorio (mín. 16 caracteres) anti-CSRF
$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);
Después de la aprobación, Mokapen redirige a tu redirect_uri con el parámetro code. Cámbialo por los tokens:
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
{
"token_type": "Bearer",
"expires_in": 31536000,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...",
"refresh_token": "def50200...",
"organization_id": 849,
"organization_name": "Your Organization"
}
organization_id en la respuesta refleja la organización elegida por el usuario en la autorización. Usa el mismo ID en las URLs de la API (ver Organizaciones).Cuando el access token expire, pide uno nuevo con el 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
Las apps private no requieren redirect OAuth. En el dashboard Developer, abre la aplicación, ve a Credentials y haz clic en Generate Token.
El token se crea con el grant client_credentials y queda ligado a la organización activa en la sesión. Guárdalo de forma segura y no lo compartas en público.
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
organization_id al pedir un token para apps private. El ID de la organización se guarda en el token y se verifica en las llamadas siguientes de la 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);
¿Necesitas ayuda?