eID Service Proxy¶
A citizen's eID PKI profile — linked organisations, certificates, registered devices and activity history — is reachable two ways:
- For the platform's own users (
/v1/users/me/eid/*) — Gerege App fetches it with its own eID RP credentials or through the SSO proxy. - For registered apps (
/v1/eid/*,/v1/eid-org/*) — Gerege App acts as a proxy and exposes the data to RPs.
1. The user's own eID console¶
UI: /me/eid/{id, certificates, devices, logs, security, sign}.
| Endpoint | What |
|---|---|
GET /v1/users/me/eid/summary |
Console totals |
GET /v1/users/me/eid/certificates |
Certificates and status |
GET /v1/users/me/eid/devices |
Registered devices |
GET /v1/users/me/eid/activity |
Authentication / signing history |
GET/POST /v1/users/me/eid/organizations |
Linked organisations |
DELETE /v1/users/me/eid/organizations/{regNo} |
Unlink |
GET/POST /v1/users/me/eid/organizations/{regNo}/signers |
Authorised signers |
POST /v1/users/me/eid/organizations/{regNo}/signers/resend |
Resend the invite |
DELETE /v1/users/me/eid/organizations/{regNo}/signers |
Remove a signer |
Write operations are rate limited to ~30/min.
SSO proxy mode
With SSO_EID_PROXY_BASE_URL set, this data arrives through the SSO's
proxy — Gerege App then needs no eID RP credentials of its own. Without
it, the app's own EID_* credentials are used.
2. The proxy for apps¶
Gerege App exposes eID data to registered RPs read-only, so those apps never have to hold eID credentials.
| Service | Path | Endpoints |
|---|---|---|
eid-proxy (individual) |
/v1/eid/* |
summary · certificates · devices · activity |
eid-org-proxy (organisation) |
/v1/eid-org/* |
organizations · organizations/{regNo}/signers |
Individual and organisation services are grouped separately so an admin can enable or disable them independently.
Calling it¶
Authorization checks¶
For every request the middleware performs three checks:
- Introspection (RFC 7662) — is the token
active, and what issub? - Scope check — load the client by the token's
client_idand verify the service scope (svc:eid-proxy/svc:eid-org-proxy). The current grant is checked, so granting and revoking take effect immediately. - Gateway state — is the service enabled in the catalogue?
| Condition | Response |
|---|---|
| No token / expired | 401 |
| Service not granted to the app | 403 |
| Service disabled in the gateway | 503 |
| Success | 200 + data |
How to grant it
Admin → Applications → the app → tick eid-proxy / eid-org-proxy →
Save. An app without the tick gets 403.
Runtime toggle¶
Both services are registered in the API gateway catalogue. Enabling or disabling them in the admin gateway UI has a real effect on the routes — you can turn off individual eID while organisation eID keeps working.
Additional organisation operations¶
| Endpoint | What |
|---|---|
GET/PUT /v1/me/orgstamp/{regNo} |
Organisation stamp image |
DELETE /v1/me/orgstamp/{regNo} |
Remove the stamp |
PUT /v1/me/org-name-latin/{regNo} |
Set the Latin name |
GET/PUT/DELETE /v1/me/signature |
Personal signature image |
PUT /v1/me/latin-name |
Personal Latin name |
These belong to the assets module; images live in external storage and their
URLs in the database.
Organisation registry¶
The org module is the platform's own organisation registry, separate from eID:
| Endpoint | What |
|---|---|
GET/POST /v1/org |
List / create |
GET /v1/org/lookup/{regNo} |
Look up in the state registry (Gerege Verify / XYP) |
GET /v1/org/{id} |
Details |
GET/POST /v1/org/{id}/members |
Members |
PUT/DELETE /v1/org/{id}/members/{userID} |
Member role / removal |
All tables are RLS-protected — a user only sees the organisations they belong to.