# All routes

Source: https://docs.coderhelm.com/api/routes

Every route the CoderHelm gateway serves (304 in all), read from its router at build time.

This list is generated from [`services/gateway/src/main.rs`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs) at commit `637aaa459db2` each time the docs are built, so it always matches the code. All paths are on `https://api.coderhelm.com`. Path parameters are written `:name`.

Unless a section says otherwise, a route needs a signed-in session: see [Authentication](/api/authentication). These are the routes the dashboard itself calls; they can change between releases, and there are no API keys for them yet.

## Service [#service]

Public.

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/` | [`inline`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L760) |

## Sign-in [#sign-in]

Public, limited to 20 requests per 5 minutes per IP address.

| Method | Path | Handler |
| --- | --- | --- |
| `POST` | `/auth/signup` | [`auth::signup`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L730) |
| `POST` | `/auth/waitlist` | [`auth::join_waitlist`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L731) |
| `POST` | `/auth/login` | [`auth::login_email`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L732) |
| `POST` | `/auth/verify-email` | [`auth::verify_email`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L733) |
| `POST` | `/auth/forgot-password` | [`auth::forgot_password`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L734) |
| `POST` | `/auth/confirm-reset` | [`auth::confirm_reset`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L735) |
| `POST` | `/auth/mfa/verify` | [`auth::mfa_verify`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L736) |
| `GET` | `/auth/google` | [`auth::google_login`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L737) |
| `GET` | `/auth/google/callback` | [`auth::google_callback`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L738) |
| `GET` | `/auth/github` | [`auth::github_login`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L739) |
| `GET` | `/auth/github/callback` | [`auth::github_callback`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L740) |
| `POST` | `/auth/logout` | [`auth::logout`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L741) |

## Webhooks [#webhooks]

Public, but every call is verified: see [Webhooks](/api/webhooks).

| Method | Path | Handler |
| --- | --- | --- |
| `POST` | `/webhooks/github` | [`github_webhook::handle`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L720) |
| `POST` | `/webhooks/jira/:token` | [`jira_webhook::handle`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L721) |
| `POST` | `/webhooks/jira` | [`jira_webhook::handle_forge`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L722) |
| `POST` | `/webhooks/alerts/sns` | [`alerts::handle_sns`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L723) |
| `POST` | `/webhooks/ci/tests/results` | [`tests::ci_upload`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L725) |
| `GET` | `/webhooks/ci/tests/quarantine` | [`tests::ci_quarantine`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L726) |

## Email links [#email-links]

Public; the signed `t` token in the link is the credential. Limited to 60 requests per 5 minutes per IP address.

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/email/unsubscribe` | [`email::unsubscribe_link`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L749) |
| `POST` | `/email/unsubscribe` | [`email::unsubscribe_one_click`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L749) |

## Account and teams [#account-and-teams]

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/me` | [`api::me`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L109) |
| `GET` | `/api/teams` | [`api::list_teams`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L115) |
| `POST` | `/api/teams/switch` | [`api::switch_team`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L116) |
| `PUT` | `/api/teams/rename` | [`api::rename_team`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L117) |
| `GET` | `/api/allowlist` | [`api::list_allowlist`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L118) |
| `POST` | `/api/allowlist` | [`api::add_to_allowlist`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L118) |
| `DELETE` | `/api/allowlist` | [`api::remove_from_allowlist`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L118) |
| `POST` | `/api/account/reset` | [`api::reset_account`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L383) |

## Users and roles [#users-and-roles]

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/users` | [`users::list_users`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L385) |
| `GET` | `/api/users/permissions` | [`users::get_permissions`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L386) |
| `POST` | `/api/users/invite` | [`users::invite_user`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L397) |
| `PUT` | `/api/users/:user_id/role` | [`users::update_role`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L398) |
| `POST` | `/api/users/:user_id/resend` | [`users::resend_invite`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L399) |
| `POST` | `/api/users/:user_id/link-github` | [`users::link_github`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L400) |
| `DELETE` | `/api/users/:user_id` | [`users::remove_user`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L404) |
| `PUT` | `/api/users/password` | [`users::change_password`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L405) |
| `POST` | `/api/users/mfa/setup` | [`users::mfa_setup`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L406) |
| `POST` | `/api/users/mfa/verify` | [`users::mfa_verify_setup`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L407) |
| `DELETE` | `/api/users/mfa` | [`users::mfa_disable`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L408) |

## Runs [#runs]

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/runs` | [`api::list_runs`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L196) |
| `GET` | `/api/runs/:run_id` | [`api::get_run`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L197) |
| `GET` | `/api/runs/:run_id/traces` | [`api::get_run_traces`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L198) |
| `GET` | `/api/runs/:run_id/agent-log` | [`api::get_agent_log`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L199) |
| `GET` | `/api/runs/:run_id/openspec` | [`api::get_run_openspec`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L200) |
| `POST` | `/api/runs/:run_id/retry` | [`api::retry_run`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L201) |
| `POST` | `/api/runs/:run_id/reset` | [`api::reset_and_rerun`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L202) |
| `POST` | `/api/runs/:run_id/re-review` | [`api::re_review_run`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L203) |
| `POST` | `/api/runs/:run_id/cancel` | [`api::cancel_run`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L204) |
| `POST` | `/api/runs/:run_id/close` | [`run_close::close_run`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L205) |
| `POST` | `/api/runs/:run_id/reopen` | [`run_close::reopen_run`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L206) |
| `POST` | `/api/runs/close` | [`run_close::close_runs`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L207) |

## Search [#search]

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/search` | [`search::search`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L195) |

## Repos [#repos]

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/repos` | [`api::list_repos`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L208) |
| `POST` | `/api/repos/sync` | [`api::sync_repos`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L209) |
| `POST` | `/api/repos/:owner/:name` | [`api::update_repo`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L210) |
| `DELETE` | `/api/repos/:owner/:name` | [`api::delete_repo`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L210) |
| `POST` | `/api/repos/:owner/:name/regenerate` | [`api::regenerate_repo`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L214) |
| `POST` | `/api/repos/:owner/:name/role` | [`api::set_repo_role`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L218) |
| `POST` | `/api/github/link-installation` | [`github::link_installation`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L309) |
| `GET` | `/api/github/installation-status` | [`github::installation_status`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L313) |

## Plans [#plans]

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/plans` | [`plans::list_plans`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L410) |
| `POST` | `/api/plans` | [`plans::create_plan`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L410) |
| `POST` | `/api/plans/chat` | [`plans::plan_chat`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L414) |
| `POST` | `/api/plans/chat/token` | [`plans::stream_token`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L415) |
| `GET` | `/api/plans/templates` | [`plans::list_templates`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L417) |
| `POST` | `/api/plans/templates` | [`plans::create_template`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L417) |
| `POST` | `/api/plans/templates/from-plan/:plan_id` | [`plans::create_template_from_plan`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L421) |
| `GET` | `/api/plans/templates/:template_id` | [`plans::get_template`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L425) |
| `DELETE` | `/api/plans/templates/:template_id` | [`plans::delete_template`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L425) |
| `POST` | `/api/plans/templates/:template_id/use` | [`plans::use_template`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L429) |
| `GET` | `/api/plans/:plan_id` | [`plans::get_plan`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L433) |
| `PUT` | `/api/plans/:plan_id` | [`plans::update_plan`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L433) |
| `DELETE` | `/api/plans/:plan_id` | [`plans::delete_plan`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L433) |
| `POST` | `/api/plans/:plan_id/tasks` | [`plans::add_task`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L439) |
| `PUT` | `/api/plans/:plan_id/tasks/:task_id` | [`plans::update_task`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L440) |
| `DELETE` | `/api/plans/:plan_id/tasks/:task_id` | [`plans::delete_task`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L440) |
| `POST` | `/api/plans/:plan_id/tasks/:task_id/approve` | [`plans::approve_task`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L444) |
| `POST` | `/api/plans/:plan_id/tasks/:task_id/reject` | [`plans::reject_task`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L448) |
| `POST` | `/api/plans/:plan_id/execute` | [`plans::execute_plan`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L452) |
| `POST` | `/api/plans/:plan_id/tasks/:task_id/force-run` | [`plans::force_run_task`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L453) |
| `POST` | `/api/plans/:plan_id/approve-and-execute` | [`plans::approve_all_and_execute`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L457) |
| `GET` | `/api/plans/:plan_id/openspec` | [`plans::get_plan_openspec`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L461) |
| `POST` | `/api/plans/:plan_id/openspec/generate` | [`plans::generate_plan_openspec`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L465) |
| `POST` | `/api/plans/chat/stream` | [`plans::plan_chat_stream`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L767) |

## Reviewer and releases [#reviewer-and-releases]

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/reviewer/org-config` | [`reviewer::get_org_config`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L249) |
| `PUT` | `/api/reviewer/org-config` | [`reviewer::update_org_config`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L249) |
| `GET` | `/api/reviewer/config/:owner/:name` | [`reviewer::get_config`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L253) |
| `PUT` | `/api/reviewer/config/:owner/:name` | [`reviewer::update_config`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L253) |
| `GET` | `/api/reviewer/reviews` | [`reviewer::list_reviews`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L279) |
| `GET` | `/api/reviewer/review` | [`reviewer::get_review`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L280) |
| `GET` | `/api/reviewer/live` | [`reviewer::live_prs`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L281) |
| `GET` | `/api/reviewer/gate` | [`reviewer::get_gate`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L282) |
| `POST` | `/api/reviewer/gate` | [`reviewer::control_gate`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L282) |
| `POST` | `/api/reviewer/review/rate` | [`reviewer::rate_review`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L286) |
| `POST` | `/api/reviewer/re-review` | [`reviewer::re_review`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L287) |
| `GET` | `/api/reviewer/lessons` | [`review_lessons::list_lessons`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L289) |
| `DELETE` | `/api/reviewer/lessons` | [`review_lessons::delete_lesson`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L289) |
| `GET` | `/api/releases` | [`reviewer::list_releases`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L293) |
| `POST` | `/api/releases/send` | [`reviewer::send_release`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L294) |
| `GET` | `/api/releases/pending` | [`reviewer::pending_releases`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L295) |
| `POST` | `/api/releases/now` | [`reviewer::release_now`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L296) |

## Skills [#skills]

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/skills` | [`skills::list`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L588) |
| `POST` | `/api/skills/repos` | [`skills::connect`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L589) |
| `DELETE` | `/api/skills/repos/:owner/:name` | [`skills::disconnect`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L590) |
| `POST` | `/api/skills/repos/:owner/:name/sync` | [`skills::sync`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L594) |
| `GET` | `/api/skills/item` | [`skills::item`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L598) |
| `PUT` | `/api/skills/item` | [`skills::set_enabled`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L598) |
| `GET` | `/api/skills/asks` | [`skills::asks`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L602) |
| `POST` | `/api/skills/asks` | [`skills::try_agent`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L602) |
| `GET` | `/api/skills/stats` | [`skills::stats`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L606) |
| `POST` | `/api/skills/recheck` | [`skills::recheck`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L607) |
| `PUT` | `/api/skills/always` | [`skills::set_always_apply`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L608) |
| `PUT` | `/api/skills/reviews` | [`skills::set_reviews`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L609) |
| `PUT` | `/api/skills/translated` | [`skills::set_use_translated`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L610) |
| `GET` | `/api/skills/activity` | [`skills::activity`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L614) |
| `GET` | `/api/skills/used` | [`skills::used`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L615) |

## Team tools [#team-tools]

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/tools` | [`tools::list`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L572) |
| `POST` | `/api/tools` | [`tools::create`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L572) |
| `POST` | `/api/tools/validate` | [`tools::check`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L576) |
| `GET` | `/api/tools/asks` | [`tools::asks`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L577) |
| `POST` | `/api/tools/asks/:id` | [`tools::decide`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L578) |
| `GET` | `/api/tools/:name` | [`tools::get`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L579) |
| `PUT` | `/api/tools/:name` | [`tools::update`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L579) |
| `DELETE` | `/api/tools/:name` | [`tools::remove`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L579) |
| `POST` | `/api/tools/:name/approve` | [`tools::approve`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L585) |
| `POST` | `/api/tools/:name/preview` | [`tools::preview`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L586) |

## Connections (MCP) [#connections-mcp]

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/plugins/catalog` | [`plugins::list_catalog`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L561) |
| `GET` | `/api/plugins` | [`plugins::list_enabled`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L562) |
| `POST` | `/api/plugins/:id/enable` | [`plugins::enable_plugin`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L563) |
| `DELETE` | `/api/plugins/:id` | [`plugins::disable_plugin`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L564) |
| `PUT` | `/api/plugins/:id/credentials` | [`plugins::update_credentials`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L565) |
| `PUT` | `/api/plugins/:id/prompt` | [`plugins::update_prompt`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L569) |
| `POST` | `/api/plugins/:id/test` | [`plugins::test_connection`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L570) |

## Data sources [#data-sources]

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/data-sources` | [`data_sources::list`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L617) |
| `GET` | `/api/data-sources/activity` | [`data_sources::activity`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L625) |
| `POST` | `/api/data-sources/api/probe` | [`data_sources::probe`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L629) |
| `POST` | `/api/data-sources/api/check` | [`data_sources::check`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L630) |
| `POST` | `/api/data-sources/api` | [`data_sources::create`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L631) |
| `POST` | `/api/data-sources/rest` | [`data_sources::create_rest`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L632) |
| `POST` | `/api/data-sources/search` | [`data_sources::create_search`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L636) |
| `GET` | `/api/data-sources/aws/setup` | [`data_sources::aws_setup`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L640) |
| `POST` | `/api/data-sources/aws/connect` | [`data_sources::aws_connect`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L644) |
| `POST` | `/api/data-sources/logs` | [`data_sources::create_logs`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L648) |
| `POST` | `/api/data-sources/database` | [`data_sources::create_database`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L652) |
| `PUT` | `/api/data-sources/:id` | [`data_sources::update`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L656) |
| `DELETE` | `/api/data-sources/:id` | [`data_sources::remove`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L656) |
| `POST` | `/api/data-sources/:id/key` | [`data_sources::replace_key`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L660) |
| `POST` | `/api/data-sources/:id/test` | [`data_sources::test`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L664) |
| `GET` | `/api/data-sources/:id/samples` | [`data_sources::samples`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L665) |
| `POST` | `/api/data-sources/:id/try` | [`data_sources::try_lookup`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L669) |
| `GET` | `/api/data-sources/:id/hidden-suggestions` | [`data_sources::hidden_suggestions`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L673) |
| `POST` | `/api/data-sources/:id/hidden-suggestions` | [`data_sources::decide_hidden_suggestions`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L673) |

## Integrations [#integrations]

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/integrations/jira/check` | [`api::get_jira_integration_check`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L219) |
| `POST` | `/api/integrations/jira/check` | [`api::validate_jira_integration_payload`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L219) |
| `DELETE` | `/api/integrations/jira/check` | [`api::delete_jira_integration`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L219) |
| `POST` | `/api/integrations/jira/secret` | [`api::generate_jira_secret`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L225) |
| `DELETE` | `/api/integrations/jira/secret` | [`api::delete_jira_secret`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L225) |
| `GET` | `/api/integrations/jira/config` | [`api::get_jira_config`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L229) |
| `PUT` | `/api/integrations/jira/config` | [`api::update_jira_config`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L229) |
| `PUT` | `/api/integrations/jira/projects` | [`api::update_jira_projects`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L233) |
| `GET` | `/api/integrations/jira/projects/fetch` | [`api::fetch_jira_projects`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L237) |
| `GET` | `/api/integrations/jira/events` | [`api::get_jira_events`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L241) |
| `GET` | `/api/aws-connections` | [`log_analyzer::list_connections`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L486) |
| `POST` | `/api/aws-connections` | [`log_analyzer::create_connection`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L486) |
| `GET` | `/api/aws-connections/cfn-url` | [`log_analyzer::get_cfn_url`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L491) |
| `PUT` | `/api/aws-connections/:id` | [`log_analyzer::update_connection`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L495) |
| `DELETE` | `/api/aws-connections/:id` | [`log_analyzer::delete_connection`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L495) |
| `POST` | `/api/aws-connections/:id/test` | [`log_analyzer::test_connection`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L500) |
| `GET` | `/api/aws-connections/:id/log-groups` | [`log_analyzer::discover_log_groups`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L504) |
| `PUT` | `/api/aws-connections/:id/abilities` | [`integrations::set_aws_abilities`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L508) |
| `POST` | `/api/aws-connections/:id/abilities/check` | [`integrations::check_aws`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L512) |
| `GET` | `/api/integrations` | [`integrations::list`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L516) |
| `GET` | `/api/connectors` | [`connectors::list`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L618) |
| `GET` | `/api/connectors/aws-check` | [`connectors::aws_check`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L619) |
| `PUT` | `/api/connectors/:kind` | [`connectors::save`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L620) |
| `DELETE` | `/api/connectors/:kind` | [`connectors::remove`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L620) |
| `POST` | `/api/connectors/:kind/test` | [`connectors::test`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L624) |
| `POST` | `/integrations/jira/forge-register` | [`api::forge_register_urls`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L772) |

## Memories [#memories]

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/memories` | [`memory::list_memories`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L702) |
| `POST` | `/api/memories` | [`memory::create_memory`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L702) |
| `GET` | `/api/memories/agents` | [`memory::agent_profiles`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L706) |
| `POST` | `/api/memories/preview` | [`memory::preview_recall`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L707) |
| `GET` | `/api/memories/stats` | [`memory::memory_stats`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L708) |
| `DELETE` | `/api/memories/:memory_id` | [`memory::delete_memory`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L709) |
| `PUT` | `/api/memories/:memory_id` | [`memory::update_memory`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L709) |

## Code graph [#code-graph]

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/graph/repos` | [`graph::list_repos`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L299) |
| `GET` | `/api/graph/status` | [`graph::status`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L300) |
| `GET` | `/api/graph/symbol` | [`graph::symbol`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L301) |
| `GET` | `/api/graph/neighborhood` | [`graph::neighborhood`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L302) |
| `PUT` | `/api/graph/config/:owner/:name` | [`graph::update_config`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L303) |
| `POST` | `/api/graph/rebuild/:owner/:name` | [`graph::rebuild`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L307) |

## Settings and instructions [#settings-and-instructions]

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/notifications` | [`api::get_notification_prefs`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L317) |
| `PUT` | `/api/notifications` | [`api::update_notification_prefs`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L317) |
| `GET` | `/api/instructions/global` | [`api::get_global_instructions`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L321) |
| `PUT` | `/api/instructions/global` | [`api::update_global_instructions`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L321) |
| `GET` | `/api/instructions/repo/:owner/:name` | [`api::get_repo_instructions`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L325) |
| `PUT` | `/api/instructions/repo/:owner/:name` | [`api::update_repo_instructions`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L325) |
| `GET` | `/api/rules/global` | [`api::get_global_rules`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L330) |
| `PUT` | `/api/rules/global` | [`api::update_global_rules`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L330) |
| `GET` | `/api/rules/repo/:owner/:name` | [`api::get_repo_rules`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L334) |
| `PUT` | `/api/rules/repo/:owner/:name` | [`api::update_repo_rules`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L334) |
| `GET` | `/api/voice/global` | [`api::get_global_voice`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L339) |
| `PUT` | `/api/voice/global` | [`api::update_global_voice`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L339) |
| `GET` | `/api/voice/repo/:owner/:name` | [`api::get_repo_voice`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L343) |
| `PUT` | `/api/voice/repo/:owner/:name` | [`api::update_repo_voice`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L343) |
| `GET` | `/api/agents/global` | [`api::get_global_agents`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L348) |
| `PUT` | `/api/agents/global` | [`api::update_global_agents`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L348) |
| `GET` | `/api/agents/repo/:owner/:name` | [`api::get_repo_agents`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L352) |
| `PUT` | `/api/agents/repo/:owner/:name` | [`api::update_repo_agents`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L352) |
| `GET` | `/api/settings/budget` | [`api::get_budget`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L357) |
| `PUT` | `/api/settings/budget` | [`api::update_budget`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L357) |
| `GET` | `/api/settings/workflow` | [`api::get_workflow_settings`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L362) |
| `PUT` | `/api/settings/workflow` | [`api::update_workflow_settings`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L362) |
| `GET` | `/api/settings/git-conventions` | [`api::get_git_conventions`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L367) |
| `PUT` | `/api/settings/git-conventions` | [`api::update_git_conventions`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L367) |
| `GET` | `/api/settings/model-provider` | [`api::get_model_provider`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L372) |
| `PUT` | `/api/settings/model-provider` | [`api::update_model_provider`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L372) |
| `DELETE` | `/api/settings/model-provider` | [`api::delete_model_provider`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L372) |
| `GET` | `/api/banners` | [`banners::list_banners`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L381) |

## Usage and analytics [#usage-and-analytics]

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/stats` | [`api::get_stats`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L245) |
| `GET` | `/api/stats/history` | [`api::get_stats_history`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L246) |
| `GET` | `/api/analytics` | [`analytics::get_analytics`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L247) |
| `GET` | `/api/usage` | [`api::get_usage`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L379) |
| `GET` | `/api/activity/summary` | [`activity::summary`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L616) |

## Alerts [#alerts]

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/alert-routes` | [`alerts::list_routes`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L257) |
| `PUT` | `/api/alert-routes` | [`alerts::put_route`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L257) |
| `DELETE` | `/api/alert-routes` | [`alerts::delete_route`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L257) |
| `GET` | `/api/alert-routes/alarms` | [`alerts::list_topic_alarms`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L263) |
| `GET` | `/api/alert-budget` | [`alerts::get_budget`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L267) |
| `PUT` | `/api/alert-budget` | [`alerts::put_budget`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L267) |
| `GET` | `/api/alert-notify` | [`alerts::get_notify`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L271) |
| `PUT` | `/api/alert-notify` | [`alerts::put_notify`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L271) |
| `POST` | `/api/alert-notify/test` | [`alerts::test_notify`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L275) |
| `POST` | `/api/notify/test` | [`alerts::test_notify`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L276) |
| `GET` | `/api/alerts` | [`alerts::list_events`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L277) |
| `GET` | `/api/alerts/event` | [`alerts::get_event`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L278) |

## Infrastructure and logs [#infrastructure-and-logs]

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/infrastructure` | [`infrastructure::get_infrastructure`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L469) |
| `POST` | `/api/infrastructure/refresh` | [`infrastructure::refresh_infrastructure`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L473) |
| `GET` | `/api/infrastructure/repo/:owner/:name` | [`infrastructure::get_repo_infrastructure`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L477) |
| `POST` | `/api/infrastructure/repo/:owner/:name/refresh` | [`infrastructure::refresh_repo_infrastructure`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L481) |
| `GET` | `/api/recommendations` | [`log_analyzer::list_recommendations`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L518) |
| `GET` | `/api/recommendations/notify` | [`log_analyzer::get_rec_notify`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L522) |
| `PUT` | `/api/recommendations/notify` | [`log_analyzer::put_rec_notify`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L522) |
| `POST` | `/api/recommendations/:id/plan` | [`log_analyzer::create_plan_from_recommendation`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L526) |
| `POST` | `/api/recommendations/:id/dismiss` | [`log_analyzer::dismiss_recommendation`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L530) |
| `GET` | `/api/log-findings` | [`log_findings::list_findings`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L535) |
| `GET` | `/api/log-findings/autofix` | [`log_findings::get_autofix`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L536) |
| `PUT` | `/api/log-findings/autofix` | [`log_findings::put_autofix`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L536) |
| `GET` | `/api/log-findings/:id/samples` | [`log_findings::get_samples`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L540) |
| `POST` | `/api/log-findings/:id/fix` | [`log_findings::create_fix`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L544) |
| `POST` | `/api/log-findings/:id/ignore` | [`log_findings::ignore_finding`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L548) |
| `POST` | `/api/log-findings/:id/acknowledge` | [`log_findings::acknowledge_finding`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L552) |
| `POST` | `/api/log-findings/:id/reopen` | [`log_findings::reopen_finding`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L556) |

## Tests [#tests]

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/tests/settings` | [`tests::get_settings`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L679) |
| `PUT` | `/api/tests/settings` | [`tests::put_settings`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L679) |
| `GET` | `/api/tests/summary` | [`tests::summary`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L683) |
| `GET` | `/api/tests/runs` | [`tests::list_runs`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L684) |
| `GET` | `/api/tests/runs/:run_key` | [`tests::get_run`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L685) |
| `GET` | `/api/tests/failure-groups` | [`tests::failure_groups`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L686) |
| `GET` | `/api/tests/coverage` | [`tests::coverage`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L687) |
| `POST` | `/api/tests/recommendations/:id/accept` | [`tests::accept_recommendation`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L688) |
| `POST` | `/api/tests/recommendations/:id/dismiss` | [`tests::dismiss_recommendation`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L692) |
| `GET` | `/api/tests` | [`tests::list_tests`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L696) |
| `GET` | `/api/tests/:id` | [`tests::get_test`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L697) |
| `POST` | `/api/tests/:id/quarantine` | [`tests::quarantine`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L698) |
| `POST` | `/api/tests/:id/pin` | [`tests::pin`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L699) |
| `POST` | `/api/tests/:id/fix` | [`tests::fix`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L700) |

## Health and failed messages [#health-and-failed-messages]

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/health` | [`api::health`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L110) |
| `GET` | `/api/dlq` | [`dlq::list_dlq_messages`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L111) |
| `POST` | `/api/dlq/redrive` | [`dlq::redrive_dlq_message`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L112) |
| `POST` | `/api/dlq/delete` | [`dlq::delete_dlq_message`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L113) |
| `POST` | `/api/dlq/purge` | [`dlq::purge_dlq`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L114) |

## Support [#support]

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/support/tickets` | [`support::list`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L136) |
| `POST` | `/api/support/tickets` | [`support::create_handler`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L136) |
| `GET` | `/api/support/tickets/:id` | [`support::get`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L140) |
| `POST` | `/api/support/tickets/:id/reply` | [`support::reply`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L141) |
| `POST` | `/api/support/tickets/:id/resolve` | [`support::resolve`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L142) |
| `POST` | `/api/support/tickets/:id/participants` | [`support::add_people`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L146) |
| `POST` | `/api/support/tickets/:id/participants/remove` | [`support::remove_people`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L150) |
| `GET` | `/api/support/badge` | [`support::badge`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L154) |
| `GET` | `/api/support/access` | [`support_access::get_access`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L181) |
| `POST` | `/api/support/access` | [`support_access::grant_access`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L181) |
| `DELETE` | `/api/support/access` | [`support_access::revoke_access`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L181) |
| `GET` | `/api/support/view` | [`support_access::view_status`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L187) |
| `DELETE` | `/api/support/view` | [`support_access::exit_view`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L187) |

## Platform admin [#platform-admin]

Session cookie, and only for CoderHelm operators listed in the platform configuration.

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/admin/teams` | [`admin::admin_teams`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L124) |
| `GET` | `/api/admin/dlq` | [`admin::admin_dlq`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L126) |
| `GET` | `/api/admin/usage-check` | [`admin::admin_usage_check`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L128) |
| `POST` | `/api/admin/dlq/delete` | [`admin::admin_dlq_delete`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L129) |
| `GET` | `/api/admin/beta-signups` | [`admin::beta_signups`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L130) |
| `POST` | `/api/admin/beta-signups/invite` | [`admin::invite_beta_signup`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L131) |
| `GET` | `/api/admin/support/tickets` | [`support::admin_list_handler`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L155) |
| `GET` | `/api/admin/support/tickets/:id` | [`support::admin_get`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L159) |
| `POST` | `/api/admin/support/tickets/:id/reply` | [`support::admin_reply_handler`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L163) |
| `POST` | `/api/admin/support/tickets/:id/status` | [`support::admin_status`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L167) |
| `POST` | `/api/admin/support/tickets/:id/participants` | [`support::admin_add_people`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L171) |
| `POST` | `/api/admin/support/tickets/:id/participants/remove` | [`support::admin_remove_people`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L175) |
| `POST` | `/api/admin/support/view` | [`support_access::start_view`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L191) |

## Other [#other]

| Method | Path | Handler |
| --- | --- | --- |
| `GET` | `/api/roles` | [`roles::list_roles`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L388) |
| `POST` | `/api/roles` | [`roles::create_role`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L388) |
| `GET` | `/api/roles/audit` | [`roles::list_audit`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L392) |
| `PUT` | `/api/roles/:role_id` | [`roles::update_role`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L393) |
| `DELETE` | `/api/roles/:role_id` | [`roles::delete_role`](https://github.com/CoderHelm/coderhelm-platform/blob/637aaa459db20c29f5292475688a2b5f77601d15/services/gateway/src/main.rs#L393) |
