API Pengguna Saat Ini
GET /api/external/me mengembalikan profile third-party user yang sudah authenticated dalam stable external API shape. Response difilter berdasarkan scopes yang diberikan ke OIDC access token.
URL endpoint produksi: https://api.muhajirstudio.com/api/external/me.
Endpoint
GET /api/external/me
Authorization: Bearer ACCESS_TOKEN
Authentication wajib. Cookie-only sessions ditolak; endpoint ini hanya menerima OIDC bearer access tokens.
Required Scope
Endpoint ini membutuhkan openid.
Jika access token valid tetapi tidak menyertakan openid, response adalah:
HTTP/1.1 403 Forbidden
Content-Type: application/json
{
"error": "FORBIDDEN",
"missingScopes": ["openid"]
}
Response Fields
Response selalu menyertakan sub saat openid diberikan. Field lain hanya disertakan ketika token memiliki scope yang sesuai.
| Field | Type | Scope | Catatan |
|---|---|---|---|
sub | string | openid | Stable user identifier. |
name | string | profile | User display name. |
picture | string | null | profile | User profile image URL jika tersedia, jika tidak null. |
email | string | email | User email address. |
emailVerified | boolean | email | Email verification status. |
permissions | string[] | permissions | Effective permission keys yang difilter ke known permissions. |
Response schema:
{
"sub": "user-id",
"name": "Jane Doe",
"picture": null,
"email": "jane@example.com",
"emailVerified": true,
"permissions": ["manage-applications", "login-web-admin"]
}
Field untuk scopes yang tidak diberikan dihilangkan, bukan dikembalikan sebagai null, kecuali picture, yang dapat bernilai null saat profile diberikan tetapi image tidak tersedia.
Scope Examples
openid
{
"sub": "user-id"
}
openid profile
{
"sub": "user-id",
"name": "Jane Doe",
"picture": null
}
openid email
{
"sub": "user-id",
"email": "jane@example.com",
"emailVerified": true
}
openid permissions
{
"sub": "user-id",
"permissions": ["manage-applications", "login-web-admin"]
}
Errors
| Status | Error | Arti |
|---|---|---|
401 | UNAUTHORIZED | Bearer token tidak ada, malformed, expired, tidak dikenal, atau tanpa user. |
403 | FORBIDDEN | Bearer token valid tetapi tidak memiliki openid. |
404 | USER_NOT_FOUND | Token subject tidak terhubung ke user yang ada. |
500 | INTERNAL_ERROR | Unexpected lookup atau response validation failure. |
CORS
GET /api/external/me dicakup oleh dynamic third-party CORS karena berada di bawah /api/external/*.
Untuk browser clients:
- Browser origin harus terdaftar di
allowedWebOriginsmilik aplikasi. - Kirim access token di
Authorization: Bearer ACCESS_TOKEN. - Jangan bergantung pada cookies; third-party CORS bersifat non-credentialed.
Kapan Menggunakan Endpoint Ini
Gunakan /api/external/me ketika aplikasi pihak ketiga membutuhkan identity atau profile pengguna Muhajir Studio saat ini setelah OIDC login.
Jangan gunakan /api/me/permissions atau /api/me/access untuk third-party integrations. Endpoint tersebut adalah first-party app/session APIs dan bukan stable external current-user contract.