# Axum Route Matrix Report

- Implemented routes: 114
- Documented routes: 111
- Exercised routes: 114
- Passed scenarios: 116
- Failed scenarios: 0

## Implemented But Undocumented Routes

- DELETE /delete-user
- GET /admin/email-event-type/list
- POST /get-session

## Exercised Undocumented Routes

- DELETE /delete-user
- GET /admin/email-event-type/list
- POST /get-session

## Scenario Results

| Status | Method | Route | Mode | Expected | Actual | Note |
| --- | --- | --- | --- | --- | --- | --- |
| PASS | GET | `/health` | success | `200` | `200` | health check |
| PASS | GET | `/reference/openapi.json` | success | `200` | `200` | openapi document |
| PASS | GET | `/ok` | success | `200` | `200` | core ok endpoint |
| PASS | GET | `/error` | success | `200` | `200` | core error endpoint |
| PASS | POST | `/sign-up/email` | success | `200` | `200` | email/password signup |
| PASS | POST | `/sign-in/email` | success | `200` | `200` | email/password sign-in |
| PASS | GET | `/get-session` | success | `200` | `200` | session lookup |
| PASS | POST | `/get-session` | success | `200` | `200` | session lookup via POST |
| PASS | POST | `/update-user` | success | `200` | `200` | update profile and set username |
| PASS | POST | `/sign-in/username` | success | `200` | `200` | username sign-in |
| PASS | GET | `/list-sessions` | success | `200` | `200` | list active sessions |
| PASS | POST | `/revoke-session` | success | `200` | `200` | revoke a specific session |
| PASS | POST | `/revoke-other-sessions` | success | `200` | `200` | revoke every session except the current one |
| PASS | POST | `/revoke-sessions` | success | `200` | `200` | revoke every session for current user |
| PASS | POST | `/send-verification-email` | success | `200` | `200` | issue verification token |
| PASS | GET | `/verify-email` | success | `200` | `200` | consume email verification token |
| PASS | POST | `/change-email` | success | `200` | `200` | request change-email verification |
| PASS | GET | `/change-email/verify` | success | `200` | `200` | confirm pending email change |
| PASS | POST | `/forget-password` | success | `200` | `200` | issue password reset token |
| PASS | GET | `/reset-password/{token}` | success | `200|302` | `302` | inspect password reset token |
| PASS | POST | `/reset-password` | success | `200` | `200` | consume password reset token |
| PASS | POST | `/set-password` | success | `200` | `200` | set password for a social-only account |
| PASS | POST | `/change-password` | success | `200` | `200` | change the authenticated user's password |
| PASS | GET | `/list-accounts` | success | `200` | `200` | list linked accounts |
| PASS | POST | `/unlink-account` | success | `200` | `200` | unlink a secondary account |
| PASS | GET | `/email/list` | success | `200` | `200` | list current user's emails |
| PASS | POST | `/delete-user` | success | `200` | `200` | request plugin delete-user verification flow |
| PASS | GET | `/delete-user/verify` | success | `200` | `200` | consume plugin delete-user verification token |
| PASS | GET | `/delete-user/callback` | success | `200` | `200` | consume core delete-user callback token |
| PASS | POST | `/delete-user` | success | `200` | `200` | delete account via POST |
| PASS | DELETE | `/delete-user` | success | `200` | `200` | delete account via DELETE |
| PASS | POST | `/sign-out` | success | `200` | `200` | sign out current session |
| PASS | POST | `/sign-in/social` | success | `200` | `200` | start social sign-in redirect flow |
| PASS | GET | `/callback/{provider}` | success | `200` | `200` | complete social sign-in callback |
| PASS | POST | `/get-access-token` | success | `200` | `200` | read decrypted oauth access token |
| PASS | POST | `/refresh-token` | success | `200` | `200` | refresh oauth access token |
| PASS | POST | `/link-social` | success | `200` | `200` | start account linking redirect flow |
| PASS | POST | `/two-factor/enable` | success | `200` | `200` | enable two-factor and issue backup codes |
| PASS | POST | `/two-factor/get-totp-uri` | success | `200` | `200` | fetch current TOTP URI |
| PASS | POST | `/two-factor/generate-backup-codes` | success | `200` | `200` | rotate backup codes |
| PASS | POST | `/two-factor/send-otp` | success | `200` | `200` | issue an email OTP for pending sign-in |
| PASS | POST | `/two-factor/verify-otp` | success | `200` | `200` | complete pending sign-in with OTP |
| PASS | POST | `/two-factor/verify-backup-code` | success | `200` | `200` | complete pending sign-in with backup code |
| PASS | POST | `/two-factor/verify-totp` | success | `200` | `200` | complete pending sign-in with current TOTP code |
| PASS | POST | `/two-factor/disable` | success | `200` | `200` | disable two-factor |
| PASS | GET | `/.well-known/webauthn` | success | `200` | `200` | fetch webauthn well-known metadata |
| PASS | GET | `/passkey/generate-register-options` | success | `200` | `200` | generate passkey registration options |
| PASS | POST | `/passkey/generate-authenticate-options` | success | `200` | `200` | generate passkey authentication options |
| PASS | POST | `/passkey/verify-registration` | handled-error | `400-499` | `400` | reject fake passkey registration payload |
| PASS | POST | `/passkey/verify-authentication` | handled-error | `400-499` | `400` | reject fake passkey authentication payload |
| PASS | GET | `/passkey/list-user-passkeys` | success | `200` | `200` | list current user's passkeys |
| PASS | POST | `/passkey/update-passkey` | handled-error | `200|400|404` | `404` | attempt to update a non-existent passkey |
| PASS | POST | `/passkey/delete-passkey` | handled-error | `200|400|404` | `404` | attempt to delete a non-existent passkey |
| PASS | POST | `/api-key/create` | success | `200` | `200` | create an API key |
| PASS | POST | `/api-key/verify` | success | `200` | `200` | verify a valid API key |
| PASS | GET | `/api-key/list` | success | `200` | `200` | list owned API keys |
| PASS | GET | `/api-key/get` | success | `200` | `200` | fetch API key by id |
| PASS | POST | `/api-key/update` | success | `200` | `200` | update API key metadata |
| PASS | POST | `/api-key/delete-all-expired-api-keys` | success | `200` | `200` | delete expired API keys |
| PASS | POST | `/api-key/delete` | success | `200` | `200` | delete API key by id |
| PASS | GET | `/admin/list-users` | success | `200` | `200` | list users as global admin |
| PASS | POST | `/admin/list-user-sessions` | success | `200` | `200` | list sessions for a target user |
| PASS | POST | `/admin/set-role` | success | `200` | `200` | change a user's global role |
| PASS | POST | `/admin/has-permission` | success | `200` | `200` | evaluate admin permission access |
| PASS | POST | `/admin/create-user` | success | `200` | `200` | create a user as admin |
| PASS | POST | `/admin/set-user-password` | success | `200` | `200` | set a target user's password |
| PASS | POST | `/admin/ban-user` | success | `200` | `200` | ban a user and revoke sessions |
| PASS | POST | `/admin/unban-user` | success | `200` | `200` | remove a user's ban |
| PASS | POST | `/admin/revoke-user-session` | success | `200` | `200` | revoke one specific target session |
| PASS | POST | `/admin/revoke-user-sessions` | success | `200` | `200` | revoke every session for a target user |
| PASS | POST | `/admin/impersonate-user` | success | `200` | `200` | create an impersonation session |
| PASS | POST | `/admin/stop-impersonating` | success | `200` | `200` | restore a normal admin session |
| PASS | POST | `/admin/api-key/create` | success | `200` | `200` | create admin-scoped API key |
| PASS | POST | `/admin/athena-client/create` | success | `200` | `200` | create athena client metadata |
| PASS | GET | `/admin/athena-client/list` | success | `200` | `200` | list athena clients |
| PASS | POST | `/admin/oauth-client/create` | success | `200` | `200` | create oauth client registration |
| PASS | GET | `/admin/oauth-client/list` | success | `200` | `200` | list oauth clients |
| PASS | GET | `/admin/audit-log/list` | success | `200` | `200` | list admin audit records |
| PASS | POST | `/admin/email/create` | success | `200` | `200` | create an email admin record |
| PASS | GET | `/admin/email/list` | success | `200` | `200` | list email admin records |
| PASS | GET | `/admin/email/get` | success | `200` | `200` | get email admin record |
| PASS | POST | `/admin/email/update` | success | `200` | `200` | update email admin record |
| PASS | POST | `/admin/email/delete` | success | `200` | `200` | delete email admin record |
| PASS | POST | `/admin/email-failure/create` | success | `200` | `200` | create email failure record |
| PASS | GET | `/admin/email-failure/list` | success | `200` | `200` | list email failures |
| PASS | GET | `/admin/email-failure/get` | success | `200` | `200` | get email failure record |
| PASS | POST | `/admin/email-failure/update` | success | `200` | `200` | update email failure resolution |
| PASS | POST | `/admin/email-failure/delete` | success | `200` | `200` | delete email failure record |
| PASS | POST | `/admin/email-template/create` | success | `200` | `200` | create email template |
| PASS | GET | `/admin/email-template/list` | success | `200` | `200` | list email templates |
| PASS | GET | `/admin/email-template/get` | success | `200` | `200` | get email template by id |
| PASS | POST | `/admin/email-template/update` | success | `200` | `200` | update email template |
| PASS | POST | `/admin/email-template/delete` | success | `200` | `200` | delete email template |
| PASS | GET | `/admin/email-event-type/list` | success | `200` | `200` | list email event type catalog |
| PASS | POST | `/admin/remove-user` | success | `200` | `200` | delete a user via admin endpoint |
| PASS | POST | `/organization/create` | success | `200` | `200` | create organization |
| PASS | POST | `/organization/check-slug` | success | `200` | `200` | check organization slug availability |
| PASS | GET | `/organization/list` | success | `200` | `200` | list organizations for current user |
| PASS | POST | `/organization/update` | success | `200` | `200` | update organization metadata |
| PASS | POST | `/organization/set-active` | success | `200` | `200` | activate organization context for owner |
| PASS | GET | `/organization/get-full-organization` | success | `200` | `200` | load full organization view |
| PASS | GET | `/organization/get-active-member` | success | `200` | `200` | get active member for current user |
| PASS | POST | `/organization/has-permission` | success | `200` | `200` | check owner organization permissions |
| PASS | POST | `/organization/invite-member` | success | `200` | `200` | invite member into organization |
| PASS | GET | `/organization/get-invitation` | success | `200` | `200` | get invitation details |
| PASS | GET | `/organization/list-invitations` | success | `200` | `200` | list active organization invitations |
| PASS | GET | `/organization/list-user-invitations` | success | `200` | `200` | list invitations visible to invitee |
| PASS | POST | `/organization/accept-invitation` | success | `200` | `200` | accept organization invitation |
| PASS | GET | `/organization/list-members` | success | `200` | `200` | list organization members |
| PASS | POST | `/organization/update-member-role` | success | `200` | `200` | promote accepted member |
| PASS | POST | `/organization/remove-member` | success | `200` | `200` | remove another member from organization |
| PASS | POST | `/organization/reject-invitation` | success | `200` | `200` | reject organization invitation |
| PASS | POST | `/organization/cancel-invitation` | success | `200` | `200` | cancel a pending organization invitation |
| PASS | POST | `/organization/set-active` | success | `200` | `200` | activate organization context for accepted member |
| PASS | POST | `/organization/leave` | success | `200` | `200` | leave active organization |
| PASS | POST | `/organization/delete` | success | `200` | `200` | delete organization |

## Response Previews

- `GET` `/health` -> `/health` [200] {"service":"athena-auth","status":"ok"}
- `GET` `/reference/openapi.json` -> `/reference/openapi.json` [200] {"info":{"description":"Authentication API","title":"Athena Auth","version":"1.12.0"},"openapi":"3.1.0","paths":{"/admin/api-key/create":{"post":{"operationId":...
- `GET` `/ok` -> `/ok` [200] {"ok":true}
- `GET` `/error` -> `/error` [200] {"ok":false}
- `POST` `/sign-up/email` -> `/sign-up/email` [200] {"user":{"email":"matrix_auth_signup_0_179155@test.com","id":"0dac6cea-0373-4b71-bb56-74d9f09a2c46"}}
- `POST` `/sign-in/email` -> `/sign-in/email` [200] {"redirect":false,"session":{"activeOrganizationId":null,"createdAt":"2026-06-26T23:15:02.325072208Z","expiresAt":"2026-07-03T23:15:02.324928200Z","id":"c3e23a2...
- `GET` `/get-session` -> `/get-session` [200] {"session":{"activeOrganizationId":null,"createdAt":"2026-06-26T23:15:02.325072208Z","expiresAt":"2026-07-03T23:15:02.324928200Z","id":"c3e23a21-a2e6-4f2b-b031-...
- `POST` `/get-session` -> `/get-session` [200] {"session":{"activeOrganizationId":null,"createdAt":"2026-06-26T23:15:02.325072208Z","expiresAt":"2026-07-03T23:15:02.324928200Z","id":"c3e23a21-a2e6-4f2b-b031-...
- `POST` `/update-user` -> `/update-user` [200] {"status":true}
- `POST` `/sign-in/username` -> `/sign-in/username` [200] {"redirect":false,"session":{"activeOrganizationId":null,"createdAt":"2026-06-26T23:15:02.346076692Z","expiresAt":"2026-07-03T23:15:02.345955886Z","id":"abd6116...
- `GET` `/list-sessions` -> `/list-sessions` [200] [{"activeOrganizationId":null,"createdAt":"2026-06-26T23:15:02.325072208Z","expiresAt":"2026-07-03T23:15:02.324928200Z","id":"c3e23a21-a2e6-4f2b-b031-7afe146cb8...
- `POST` `/revoke-session` -> `/revoke-session` [200] {"status":true}
- `POST` `/revoke-other-sessions` -> `/revoke-other-sessions` [200] {"status":true}
- `POST` `/revoke-sessions` -> `/revoke-sessions` [200] {"status":true}
- `POST` `/send-verification-email` -> `/send-verification-email` [200] {"status":true}
- `GET` `/verify-email` -> `/verify-email?token=verify_f075b5b2-f8bd-41dc-ab29-e07a096734ef` [200] {"status":true,"user":{"banExpires":null,"banReason":null,"banned":false,"createdAt":"2026-06-26T23:15:02.412356414Z","displayUsername":null,"email":"matrix_ver...
- `POST` `/change-email` -> `/change-email` [200] {"message":"Verification email sent to your new email address","status":true}
- `GET` `/change-email/verify` -> `/change-email/verify?token=ce_14d56c5f-5c10-464b-b981-885bb38b6492` [200] {"message":"Email updated successfully","status":true}
- `POST` `/forget-password` -> `/forget-password` [200] {"status":true}
- `GET` `/reset-password/{token}` -> `/reset-password/reset_651f51ed-52ff-4bf9-9e00-96ae1b1e63e5` [302] ""
- `POST` `/reset-password` -> `/reset-password` [200] {"status":true}
- `POST` `/set-password` -> `/set-password` [200] {"status":true}
- `POST` `/change-password` -> `/change-password` [200] {"token":null,"user":{"banExpires":null,"banReason":null,"banned":false,"createdAt":"2026-06-26T23:15:02.503225805Z","displayUsername":null,"email":"matrix_chan...
- `GET` `/list-accounts` -> `/list-accounts` [200] [{"accountId":"manual-account-9-179155","createdAt":"2026-06-26T23:15:02.552236035+00:00","id":"adad5dcf-3aed-427f-bb07-76802e01eae0","provider":"manual-seconda...
- `POST` `/unlink-account` -> `/unlink-account` [200] {"status":true}
- `GET` `/email/list` -> `/email/list` [200] {"emails":[],"limit":100,"offset":0,"total":0}
- `POST` `/delete-user` -> `/delete-user` [200] {"message":"Verification email sent. Please confirm to delete your account.","success":true}
- `GET` `/delete-user/verify` -> `/delete-user/verify?token=del_6dc7ac51-074f-4490-89a5-192cdec39a9e` [200] {"message":"Account deleted successfully","success":true}
- `GET` `/delete-user/callback` -> `/delete-user/callback?token=delete_callback_token-12-179155` [200] {"message":"User account successfully deleted","success":true}
- `POST` `/delete-user` -> `/delete-user` [200] {"message":"Verification email sent. Please confirm to delete your account.","success":true}
- `DELETE` `/delete-user` -> `/delete-user` [200] {"message":"User account successfully deleted","success":true}
- `POST` `/sign-out` -> `/sign-out` [200] {"success":true}
- `POST` `/sign-in/social` -> `/sign-in/social` [200] {"redirect":true,"url":"http://127.0.0.1:42427/auth/test?client_id=test-client&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fsession&response_type=code&scope=ema...
- `GET` `/callback/{provider}` -> `/callback/test?code=mock-code&state=9aad51ac-00a0-4200-ab35-8ab4171c4b5d` [200] {"token":"session_e239b898-4690-4190-84a7-e1f5dd7b4586","user":{"banExpires":null,"banReason":null,"banned":false,"createdAt":"2026-06-26T23:15:02.655215352Z","...
- `POST` `/get-access-token` -> `/get-access-token` [200] {"accessToken":"mock-access-token-test","accessTokenExpiresAt":"2026-06-27T00:15:02.655184350+00:00","scope":"email profile"}
- `POST` `/refresh-token` -> `/refresh-token` [200] {"accessToken":"mock-access-token-test","accessTokenExpiresAt":"2026-06-27T00:15:02.657015045+00:00","refreshToken":"mock-refresh-token-test","scope":"email pro...
- `POST` `/link-social` -> `/link-social` [200] {"redirect":true,"url":"http://127.0.0.1:42427/auth/testlink?client_id=testlink-client&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fsession&response_type=code&s...
- `POST` `/two-factor/enable` -> `/two-factor/enable` [200] {"backupCodes":["U45EAVHK","KDH7VJY9","90A5MPRU","C6L14CEY","P4YPNTDP","L3EEOSPA","2ZNH2PIJ","DJKGJTY5","W2JXU237","S2DF9NS5"],"totpURI":"otpauth://totp/AthenaA...
- `POST` `/two-factor/get-totp-uri` -> `/two-factor/get-totp-uri` [200] {"totpURI":"otpauth://totp/AthenaAuth:matrix_2fa_17_179155%40test.com?secret=NV46F6TZ7OXABBZ4PCSTYOCJWKK6UV56&issuer=AthenaAuth"}
- `POST` `/two-factor/generate-backup-codes` -> `/two-factor/generate-backup-codes` [200] {"backupCodes":["MNLX2ILX","HM04EJ5U","FO660YZX","ERCSQKOU","I8TBHCCB","AZFL5QKU","A2YGXFES","4DABEGAK","64BAQNSU","Z3QCPKHR"],"status":true}
- `POST` `/two-factor/send-otp` -> `/two-factor/send-otp` [200] {"status":true}
- `POST` `/two-factor/verify-otp` -> `/two-factor/verify-otp` [200] {"status":true,"token":"session_b655269c-3b56-4918-8545-d7b988ddfeb3","user":{"banExpires":null,"banReason":null,"banned":false,"createdAt":"2026-06-26T23:15:02...
- `POST` `/two-factor/verify-backup-code` -> `/two-factor/verify-backup-code` [200] {"session":{"activeOrganizationId":null,"createdAt":"2026-06-26T23:15:03.118875690Z","expiresAt":"2026-07-03T23:15:03.118758484Z","id":"68c4b3a8-30cc-4f7e-b549-...
- `POST` `/two-factor/verify-totp` -> `/two-factor/verify-totp` [200] {"status":true,"token":"session_8ea480bb-2733-46e8-b62d-b621842a1b33","user":{"banExpires":null,"banReason":null,"banned":false,"createdAt":"2026-06-26T23:15:02...
- `POST` `/two-factor/disable` -> `/two-factor/disable` [200] {"status":true}
- `GET` `/.well-known/webauthn` -> `/.well-known/webauthn` [200] {"origins":["http://localhost:3000"]}
- `GET` `/passkey/generate-register-options` -> `/passkey/generate-register-options` [200] {"attestation":"none","authenticatorSelection":{"requireResidentKey":false,"residentKey":"preferred","userVerification":"preferred"},"challenge":"5URXWEkImqMoQB...
- `POST` `/passkey/generate-authenticate-options` -> `/passkey/generate-authenticate-options` [200] {"allowCredentials":[],"challenge":"iFdSd5UkkwMkXjy1RWScwesy0OVD5igIUIF1pUIaDDc","rpId":"localhost","timeout":60000,"userVerification":"preferred"}
- `POST` `/passkey/verify-registration` -> `/passkey/verify-registration` [400] {"message":"Serialization error: expected value at line 1 column 1","traceId":"7113668c-b8a7-49fe-baec-5b552114c9cb","version":"1.12.0"}
- `POST` `/passkey/verify-authentication` -> `/passkey/verify-authentication` [400] {"message":"Serialization error: expected value at line 1 column 1","traceId":"bbe8ee32-ec7b-4d66-80bd-3dc783af3a37","version":"1.12.0"}
- `GET` `/passkey/list-user-passkeys` -> `/passkey/list-user-passkeys` [200] []
- `POST` `/passkey/update-passkey` -> `/passkey/update-passkey` [404] {"message":"Passkey not found","traceId":"bf61373e-e4db-4832-9d8c-1b5f7cd91649","version":"1.12.0"}
- `POST` `/passkey/delete-passkey` -> `/passkey/delete-passkey` [404] {"message":"Passkey not found","traceId":"fc902bce-cf49-4c26-8a27-88bb2f1dc3ca","version":"1.12.0"}
- `POST` `/api-key/create` -> `/api-key/create` [200] {"createdAt":"2026-06-26T23:15:03.187444830+00:00","enabled":true,"expiresAt":null,"id":"9bd78d72-69c0-4391-9e0b-cf4bbb96dcf3","key":"mk_OMoxrs45CeQUrohJIhehtzS...
- `POST` `/api-key/verify` -> `/api-key/verify` [200] {"key":{"createdAt":"2026-06-26T23:15:03.187444830+00:00","enabled":true,"expiresAt":null,"id":"9bd78d72-69c0-4391-9e0b-cf4bbb96dcf3","lastRefillAt":null,"lastR...
- `GET` `/api-key/list` -> `/api-key/list` [200] [{"createdAt":"2026-06-26T23:15:03.187444830+00:00","enabled":true,"expiresAt":null,"id":"9bd78d72-69c0-4391-9e0b-cf4bbb96dcf3","lastRefillAt":null,"lastRequest...
- `GET` `/api-key/get` -> `/api-key/get?id=9bd78d72-69c0-4391-9e0b-cf4bbb96dcf3` [200] {"createdAt":"2026-06-26T23:15:03.187444830+00:00","enabled":true,"expiresAt":null,"id":"9bd78d72-69c0-4391-9e0b-cf4bbb96dcf3","lastRefillAt":null,"lastRequest"...
- `POST` `/api-key/update` -> `/api-key/update` [200] {"createdAt":"2026-06-26T23:15:03.187444830+00:00","enabled":true,"expiresAt":null,"id":"9bd78d72-69c0-4391-9e0b-cf4bbb96dcf3","lastRefillAt":null,"lastRequest"...
- `POST` `/api-key/delete-all-expired-api-keys` -> `/api-key/delete-all-expired-api-keys` [200] {"deleted":1}
- `POST` `/api-key/delete` -> `/api-key/delete` [200] {"status":true}
- `GET` `/admin/list-users` -> `/admin/list-users` [200] {"limit":100,"offset":0,"total":17,"users":[{"banExpires":null,"banReason":null,"banned":false,"createdAt":"2026-06-26T23:15:02.634048759Z","displayUsername":nu...
- `POST` `/admin/list-user-sessions` -> `/admin/list-user-sessions` [200] {"sessions":[{"activeOrganizationId":null,"createdAt":"2026-06-26T23:15:03.226352739Z","expiresAt":"2026-07-03T23:15:03.226239233Z","id":"88f73d8f-b352-4e51-8a8...
- `POST` `/admin/set-role` -> `/admin/set-role` [200] {"user":{"banExpires":null,"banReason":null,"banned":false,"createdAt":"2026-06-26T23:15:03.226193030Z","displayUsername":null,"email":"matrix_admin_target_21_1...
- `POST` `/admin/has-permission` -> `/admin/has-permission` [200] {"success":true}
- `POST` `/admin/create-user` -> `/admin/create-user` [200] {"user":{"banExpires":null,"banReason":null,"banned":false,"createdAt":"2026-06-26T23:15:03.247430927Z","displayUsername":null,"email":"matrix_admin_created_22_...
- `POST` `/admin/set-user-password` -> `/admin/set-user-password` [200] {"status":true}
- `POST` `/admin/ban-user` -> `/admin/ban-user` [200] {"user":{"banExpires":null,"banReason":"matrix-test","banned":true,"createdAt":"2026-06-26T23:15:03.226193030Z","displayUsername":null,"email":"matrix_admin_tar...
- `POST` `/admin/unban-user` -> `/admin/unban-user` [200] {"user":{"banExpires":null,"banReason":null,"banned":false,"createdAt":"2026-06-26T23:15:03.226193030Z","displayUsername":null,"email":"matrix_admin_target_21_1...
- `POST` `/admin/revoke-user-session` -> `/admin/revoke-user-session` [200] {"success":true}
- `POST` `/admin/revoke-user-sessions` -> `/admin/revoke-user-sessions` [200] {"success":true}
- `POST` `/admin/impersonate-user` -> `/admin/impersonate-user` [200] {"session":{"activeOrganizationId":null,"createdAt":"2026-06-26T23:15:03.350241735Z","expiresAt":"2026-07-03T23:15:03.350239535Z","id":"f30ad848-6cfb-4c7f-8fc7-...
- `POST` `/admin/stop-impersonating` -> `/admin/stop-impersonating` [200] {"session":{"activeOrganizationId":null,"createdAt":"2026-06-26T23:15:03.350446345Z","expiresAt":"2026-07-03T23:15:03.350444245Z","id":"ef8276f5-fba1-4515-ab8a-...
- `POST` `/admin/api-key/create` -> `/admin/api-key/create` [200] {"apiKey":{"createdAt":"2026-06-26T23:15:03.350661256+00:00","enabled":true,"expiresAt":null,"id":"e335b62f-1732-45cd-912d-6e69818fb997","metadata":{},"name":"m...
- `POST` `/admin/athena-client/create` -> `/admin/athena-client/create` [200] {"clientName":"matrix-athena-client","createdAt":"2026-06-26T23:15:03.351099379Z","description":null,"id":"d438bdb1-85ec-4a32-8041-6cef437ac647","isActive":true...
- `GET` `/admin/athena-client/list` -> `/admin/athena-client/list` [200] {"athenaClients":[{"clientName":"matrix-athena-client","createdAt":"2026-06-26T23:15:03.351099379Z","description":null,"id":"d438bdb1-85ec-4a32-8041-6cef437ac64...
- `POST` `/admin/oauth-client/create` -> `/admin/oauth-client/create` [200] {"clientName":"matrix-admin-oauth-client","clientUrl":null,"createdAt":"2026-06-26T23:15:03.351698010Z","description":null,"grantType":"authorization_code","id"...
- `GET` `/admin/oauth-client/list` -> `/admin/oauth-client/list` [200] {"oauthClients":[{"clientName":"matrix-admin-oauth-client","clientUrl":null,"createdAt":"2026-06-26T23:15:03.351698010Z","description":null,"grantType":"authori...
- `GET` `/admin/audit-log/list` -> `/admin/audit-log/list` [200] {"auditLogs":[{"action":"admin.oauth_client.list","actorSessionToken":"session_391ac134-6989-4767-a244-507eafa7bffe","actorUserId":"0d0cf935-ea81-4787-a719-fdd1...
- `POST` `/admin/email/create` -> `/admin/email/create` [200] {"email":{"createdAt":"2026-06-26T23:15:03.353152085Z","flow":null,"fromAddress":"noreply@example.com","fromName":"Matrix","htmlBody":null,"id":"ca6af4b3-9386-4...
- `GET` `/admin/email/list` -> `/admin/email/list` [200] {"emails":[{"createdAt":"2026-06-26T23:15:03.353152085Z","flow":null,"fromAddress":"noreply@example.com","fromName":"Matrix","htmlBody":null,"id":"ca6af4b3-9386...
- `GET` `/admin/email/get` -> `/admin/email/get?id=ca6af4b3-9386-49a6-b6f2-dc8b8fa36b79` [200] {"email":{"createdAt":"2026-06-26T23:15:03.353152085Z","flow":null,"fromAddress":"noreply@example.com","fromName":"Matrix","htmlBody":null,"id":"ca6af4b3-9386-4...
- `POST` `/admin/email/update` -> `/admin/email/update` [200] {"email":{"createdAt":"2026-06-26T23:15:03.353152085Z","flow":null,"fromAddress":"noreply@example.com","fromName":"Matrix","htmlBody":null,"id":"ca6af4b3-9386-4...
- `POST` `/admin/email/delete` -> `/admin/email/delete` [200] {"success":true}
- `POST` `/admin/email-failure/create` -> `/admin/email-failure/create` [200] {"emailSendFailure":{"createdAt":"2026-06-26T23:15:03.354137936Z","errorMessage":"simulated failure","flow":"matrix_flow","id":"167ece73-574a-4358-a87c-12abcc6a...
- `GET` `/admin/email-failure/list` -> `/admin/email-failure/list` [200] {"emailSendFailures":[{"createdAt":"2026-06-26T23:15:03.354137936Z","errorMessage":"simulated failure","flow":"matrix_flow","id":"167ece73-574a-4358-a87c-12abcc...
- `GET` `/admin/email-failure/get` -> `/admin/email-failure/get?id=167ece73-574a-4358-a87c-12abcc6a41cc` [200] {"emailSendFailure":{"createdAt":"2026-06-26T23:15:03.354137936Z","errorMessage":"simulated failure","flow":"matrix_flow","id":"167ece73-574a-4358-a87c-12abcc6a...
- `POST` `/admin/email-failure/update` -> `/admin/email-failure/update` [200] {"emailSendFailure":{"createdAt":"2026-06-26T23:15:03.354137936Z","errorMessage":"simulated failure","flow":"matrix_flow","id":"167ece73-574a-4358-a87c-12abcc6a...
- `POST` `/admin/email-failure/delete` -> `/admin/email-failure/delete` [200] {"success":true}
- `POST` `/admin/email-template/create` -> `/admin/email-template/create` [200] {"createdAt":"2026-06-26T23:15:03.354704165Z","eventType":null,"htmlTemplate":null,"id":"569afd68-1200-4a42-bb6d-5d4751f48592","isActive":true,"locale":"en","me...
- `GET` `/admin/email-template/list` -> `/admin/email-template/list?templateKey=matrix-template-26-179155` [200] {"emailTemplates":[{"createdAt":"2026-06-26T23:15:03.354704165Z","eventType":null,"htmlTemplate":null,"id":"569afd68-1200-4a42-bb6d-5d4751f48592","isActive":tru...
- `GET` `/admin/email-template/get` -> `/admin/email-template/get?id=569afd68-1200-4a42-bb6d-5d4751f48592` [200] {"emailTemplate":{"createdAt":"2026-06-26T23:15:03.354704165Z","eventType":null,"htmlTemplate":null,"id":"569afd68-1200-4a42-bb6d-5d4751f48592","isActive":true,...
- `POST` `/admin/email-template/update` -> `/admin/email-template/update` [200] {"createdAt":"2026-06-26T23:15:03.354704165Z","eventType":null,"htmlTemplate":null,"id":"569afd68-1200-4a42-bb6d-5d4751f48592","isActive":true,"locale":"en","me...
- `POST` `/admin/email-template/delete` -> `/admin/email-template/delete` [200] {"success":true}
- `GET` `/admin/email-event-type/list` -> `/admin/email-event-type/list` [200] {"emailEventTypes":[{"category":"organization_lifecycle","createdAt":"2026-06-26T23:15:02.229154356Z","defaultTemplateKey":null,"description":"Organization crea...
- `POST` `/admin/remove-user` -> `/admin/remove-user` [200] {"success":true}
- `POST` `/organization/create` -> `/organization/create` [200] {"createdAt":"2026-06-26T23:15:03.390151495Z","id":"5b16d8b2-f8dc-45be-9187-73f69e842776","logo":null,"members":[{"createdAt":"2026-06-26T23:15:03.390174796Z","...
- `POST` `/organization/check-slug` -> `/organization/check-slug` [200] {"status":false}
- `GET` `/organization/list` -> `/organization/list` [200] [{"createdAt":"2026-06-26T23:15:03.390151495Z","id":"5b16d8b2-f8dc-45be-9187-73f69e842776","logo":null,"name":"Matrix Organization","slug":"matrix-organization"...
- `POST` `/organization/update` -> `/organization/update` [200] {"createdAt":"2026-06-26T23:15:03.390151495Z","id":"5b16d8b2-f8dc-45be-9187-73f69e842776","logo":null,"name":"Matrix Organization Updated","slug":"matrix-organi...
- `POST` `/organization/set-active` -> `/organization/set-active` [200] {"activeOrganizationId":"5b16d8b2-f8dc-45be-9187-73f69e842776","createdAt":"2026-06-26T23:15:03.372704294Z","expiresAt":"2026-07-03T23:15:03.372598689Z","id":"1...
- `GET` `/organization/get-full-organization` -> `/organization/get-full-organization?organizationSlug=matrix-organization` [200] {"createdAt":"2026-06-26T23:15:03.390151495Z","id":"5b16d8b2-f8dc-45be-9187-73f69e842776","invitations":[],"logo":null,"members":[{"createdAt":"2026-06-26T23:15...
- `GET` `/organization/get-active-member` -> `/organization/get-active-member` [200] {"createdAt":"2026-06-26T23:15:03.390174796Z","id":"ce0b7b89-dd22-474c-8b60-29b9acf677cb","organizationId":"5b16d8b2-f8dc-45be-9187-73f69e842776","role":"owner"...
- `POST` `/organization/has-permission` -> `/organization/has-permission` [200] {"success":true}
- `POST` `/organization/invite-member` -> `/organization/invite-member` [200] {"createdAt":"2026-06-26T23:15:03.394173803Z","email":"matrix_org_invitee_28_179155@test.com","expiresAt":"2026-06-28T23:15:03.394167902Z","id":"4cd75305-5171-4...
- `GET` `/organization/get-invitation` -> `/organization/get-invitation?id=4cd75305-5171-4fa2-b538-95d6ca7fe757` [200] {"createdAt":"2026-06-26T23:15:03.394173803Z","email":"matrix_org_invitee_28_179155@test.com","expiresAt":"2026-06-28T23:15:03.394167902Z","id":"4cd75305-5171-4...
- `GET` `/organization/list-invitations` -> `/organization/list-invitations` [200] [{"createdAt":"2026-06-26T23:15:03.394173803Z","email":"matrix_org_invitee_28_179155@test.com","expiresAt":"2026-06-28T23:15:03.394167902Z","id":"4cd75305-5171-...
- `GET` `/organization/list-user-invitations` -> `/organization/list-user-invitations` [200] [{"createdAt":"2026-06-26T23:15:03.394173803Z","email":"matrix_org_invitee_28_179155@test.com","expiresAt":"2026-06-28T23:15:03.394167902Z","id":"4cd75305-5171-...
- `POST` `/organization/accept-invitation` -> `/organization/accept-invitation` [200] {"invitation":{"createdAt":"2026-06-26T23:15:03.394173803Z","email":"matrix_org_invitee_28_179155@test.com","expiresAt":"2026-06-28T23:15:03.394167902Z","id":"4...
- `GET` `/organization/list-members` -> `/organization/list-members?organizationSlug=matrix-organization` [200] {"members":[{"createdAt":"2026-06-26T23:15:03.390174796Z","id":"ce0b7b89-dd22-474c-8b60-29b9acf677cb","organizationId":"5b16d8b2-f8dc-45be-9187-73f69e842776","r...
- `POST` `/organization/update-member-role` -> `/organization/update-member-role` [200] {"member":{"createdAt":"2026-06-26T23:15:03.396188607Z","id":"ab465136-f76b-4762-8b69-b58fd82eedcd","organizationId":"5b16d8b2-f8dc-45be-9187-73f69e842776","rol...
- `POST` `/organization/remove-member` -> `/organization/remove-member` [200] {"member":{"id":"18357b04-4bbc-4e91-8968-4b82373308a7","organizationId":"5b16d8b2-f8dc-45be-9187-73f69e842776","role":"member","userId":"3d1b301b-b64e-4e38-bb9d...
- `POST` `/organization/reject-invitation` -> `/organization/reject-invitation` [200] {"success":true}
- `POST` `/organization/cancel-invitation` -> `/organization/cancel-invitation` [200] {"success":true}
- `POST` `/organization/set-active` -> `/organization/set-active` [200] {"activeOrganizationId":"5b16d8b2-f8dc-45be-9187-73f69e842776","createdAt":"2026-06-26T23:15:03.388824327Z","expiresAt":"2026-07-03T23:15:03.388724321Z","id":"e...
- `POST` `/organization/leave` -> `/organization/leave` [200] {"success":true}
- `POST` `/organization/delete` -> `/organization/delete` [200] {"success":true}
