WP-04 exchange
Contract types Account, Role, Clinic. Envelope: envelope.md.
Workflow
- An
ADMINsession lists accounts under/api/v1/afia/admin. - The API returns existing
Accountrows. It does not create a second user table. - The client assigns a
Rolethat already exists onAccount. - The client reads and writes one clinic resource (
name,timezone). - A non-admin session is forbidden. The Flutter admin shell does not open.
Wire
GET /api/v1/afia/admin/users
res { data: [ { "id", "phone", "email", "roles" } ], ... }
POST or PATCH role assignment:
req { "accountId", "role" }
res { data: { "id", "phone", "email", "roles" }, ... }
Clinic under /api/v1/afia/admin (one resource):
req { "name", "timezone" }
res { data: { "name", "timezone" }, ... }
Errors: not admin, unknown account, unknown role, validation on clinic fields.
Ownership
WP-04 writes health.afia.app.admin and lib/*/admin/. Shared language is Clinic plus identity Account and Role.
Does not do
Class internals. Invented admin screens. afia-web as an admin console.