D
API Reference

Authentication & Token API

Endpoint autentikasi dazo-whitelist-api — GET /api/application, GET /api/application/token (RSA handshake), GET /api/application/graph, POST /api/application/token/check, POST /api/application/token/exchange. Verifikasi signature di ApplicationController.

Endpoints autentikasi aplikasi klien. Ini jalur masuk dazo-whitelist untuk mendapatkan Passport Bearer Token via RSA signature. Sebagian besar endpoint di grup ini publik (tidak butuh Bearer token), karena justru untuk mendapat token.

GET /api/application — Info aplikasi klien

Handler: ApplicationController::index (dazo-whitelist-api)

GEThttp://127.0.0.1:8081/api/application
curl --request GET \
  --url http://127.0.0.1:8081/api/application

Ambil info aplikasi klien. Memakai header x-user, x-app, x-signature (berbeda dari handshake token).

Request headers

HeaderWajibTipeKeterangan
x-user✅UUIDID user API engine
x-app✅UUIDID aplikasi (Application.id)
x-signature✅stringRSA signature dari payload [user.id, user.created_at, app.id, app.secret]

Response

json
{
  "status": true,
  "data": {
    "x-client-key": "UUID",
    "x-client-secret": "secret",
    "private_key": "-----BEGIN PRIVATE KEY-----",
    "public_key": "-----BEGIN PUBLIC KEY-----"
  }
}

Error

StatusKondisi
400Validasi header gagal
401User tidak ditemukan
404Invalid app / Invalid Signature

GET /api/application/token — RSA Handshake (mendapat token)

Handler: ApplicationController::token (dazo-whitelist-api)

GEThttp://127.0.0.1:8081/api/application/token
curl --request GET \
  --url http://127.0.0.1:8081/api/application/token

Endpoint kunci — tukar RSA signature menjadi Passport Bearer Token. Ini dipanggil oleh App\Src\MyApi::get_token() di web app.

Middleware: Publik (tidak butuh Bearer token — ini jalur untuk mendapatkannya).

Request headers

HeaderWajibTipeKeterangan
x-client-key✅UUIDID aplikasi (Application.id)
x-signature✅stringRSA SHA-256 signature
x-timestamp✅stringISO8601 Y-m-d\TH:i:sP — toleransi ±10 menit

Payload signature (client side)

php
$data = implode('|', [
    $client_key,     // Application.id
    $private_key,    // Application.private_key (BUKAN public_key!)
    $client_secret,  // Application.secret
    $timestamp,      // x-timestamp
]);
openssl_sign($data, $sig, private_key.pem, OPENSSL_ALGO_SHA256);
$x_signature = base64_encode($sig);

Response sukses

json
{
  "status": true,
  "data": {
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOi..."
  }
}

Error

StatusKondisi
400Validasi input gagal / Invalid Timestamp (di luar ±10 min)
404Invalid app / Invalid Signature

Aksi server (ApplicationController::token)

  1. Validasi x-client-key (uuid), x-signature (required), x-timestamp (ISO8601)
  2. Parse timestamp & cek between(now-10min, now)
  3. Lookup Application by x-client-key; pastikan public_key ada
  4. Rebuild payload server-side & openssl_verify
  5. Issue Passport Personal Access Token (2 jam TTL), revoke token lama

GET /api/application/graph — Info Graph API

Handler: ApplicationController::graph

GEThttp://127.0.0.1:8081/api/application/graph
curl --request GET \
  --url http://127.0.0.1:8081/api/application/graph

Ambil info konfigurasi Graph API (version & related config).

Middleware: Publik

Response

json
{
  "status": true,
  "data": {
    "graph_version": "v20.0"
  }
}

POST /api/application/token/check — Validasi token

Handler: ApplicationController::checkToken

POSThttp://127.0.0.1:8081/api/application/token/check
curl --request POST \
  --url http://127.0.0.1:8081/api/application/token/check

Cek keaktifan access token.

Middleware: Publik

Request body

FieldWajibTipe
token✅string

Response

json
{
  "status": true,
  "valid": true
}

POST /api/application/token/exchange — Tukar kredensial

Handler: ApplicationController::exchangeToken

POSThttp://127.0.0.1:8081/api/application/token/exchange
curl --request POST \
  --url http://127.0.0.1:8081/api/application/token/exchange

Menukar kredensial token.

Middleware: auth:api, myapi — membutuhkan Bearer token yang valid + header public-key.

Request headers

HeaderWajibKeterangan
Authorization✅Bearer {token}
public-key✅File contents public_key.pem

Ringkasan dasar auth

EndpointMethodMiddlewareFungsi
/api/applicationGETPublikInfo aplikasi (x-user/x-app/x-signature)
/api/application/tokenGETPublikRSA handshake → Bearer token
/api/application/graphGETPublikInfo Graph version
/api/application/token/checkPOSTPublikValidasi token aktif
/api/application/token/exchangePOSTauth:api, myapiTukar kredensial

Langkah berikutnya