# Routes registered in internal/api/router/router.go that are intentionally # NOT in api/openapi.yaml. Each entry needs a one-line `why:` justification. # Adding a new entry requires PR-time review. # # OpenAPI-shaped REST endpoints belong in api/openapi.yaml, NOT here. # This list is for protocol-shaped (SCEP wire endpoints) and operational # (health, metrics, pprof) routes only. # # Per ci-pipeline-cleanup bundle Phase 9 / frozen decision 0.11. documented_exceptions: - route: "GET /scep" why: "SCEP wire-protocol endpoint per RFC 8894 §3.1; serves CA certs via GetCACert/GetCACaps query params, NOT a REST resource." - route: "POST /scep" why: "SCEP wire-protocol endpoint per RFC 8894 §3.1; receives PKCSReq / RenewalReq PKIMessages, NOT a REST resource." - route: "GET /scep/" why: "SCEP wire-protocol endpoint with trailing-slash variant; ChromeOS clients send the trailing-slash form." - route: "POST /scep/" why: "SCEP wire-protocol endpoint with trailing-slash variant; ChromeOS clients send the trailing-slash form." - route: "GET /scep-mtls" why: "SCEP-mTLS sibling endpoint per ci-pipeline-cleanup-prerequisite EST RFC 7030 hardening Phase 6.5; same wire-protocol semantics, mutually-authenticated TLS variant." - route: "POST /scep-mtls" why: "SCEP-mTLS sibling endpoint, POST variant." - route: "GET /scep-mtls/" why: "SCEP-mTLS sibling endpoint, trailing-slash variant." - route: "POST /scep-mtls/" why: "SCEP-mTLS sibling endpoint, trailing-slash POST variant." # ACME server (RFC 8555 + RFC 9773 ARI) — wire-protocol surface. # Like SCEP/EST, ACME is a JWS-signed-JSON wire protocol whose # semantics are dictated by the RFC, not by an OpenAPI schema. # Documenting every endpoint in openapi.yaml would duplicate # RFC 8555 §7.1 + §7.2 + §7.3 with no information gain. The # canonical operator-facing reference is docs/acme-server.md. # Phases 2-4 will extend this list as new-order, finalize, authz, # challenge, cert, key-change, revoke-cert, renewal-info routes land. - route: "GET /acme/profile/{id}/directory" why: "ACME server RFC 8555 §7.1.1 directory; documented in docs/acme-server.md." - route: "HEAD /acme/profile/{id}/new-nonce" why: "ACME server RFC 8555 §7.2 new-nonce; documented in docs/acme-server.md." - route: "GET /acme/profile/{id}/new-nonce" why: "ACME server RFC 8555 §7.2 new-nonce GET form; documented in docs/acme-server.md." - route: "POST /acme/profile/{id}/new-account" why: "ACME server RFC 8555 §7.3 new-account (JWS jwk); documented in docs/acme-server.md." - route: "POST /acme/profile/{id}/account/{acc_id}" why: "ACME server RFC 8555 §7.3.2 + §7.3.6 (JWS kid) account update + deactivation; documented in docs/acme-server.md." - route: "GET /acme/directory" why: "ACME server default-profile shorthand; mirrors per-profile when CERTCTL_ACME_SERVER_DEFAULT_PROFILE_ID is set." - route: "HEAD /acme/new-nonce" why: "ACME server default-profile shorthand for new-nonce HEAD." - route: "GET /acme/new-nonce" why: "ACME server default-profile shorthand for new-nonce GET." - route: "POST /acme/new-account" why: "ACME server default-profile shorthand for new-account." - route: "POST /acme/account/{acc_id}" why: "ACME server default-profile shorthand for account update + deactivation." # Phase 2 — orders + finalize + authz + cert. - route: "POST /acme/profile/{id}/new-order" why: "ACME server RFC 8555 §7.4 new-order; documented in docs/acme-server.md." - route: "POST /acme/profile/{id}/order/{ord_id}" why: "ACME server RFC 8555 §7.4 order POST-as-GET; documented in docs/acme-server.md." - route: "POST /acme/profile/{id}/order/{ord_id}/finalize" why: "ACME server RFC 8555 §7.4 finalize; documented in docs/acme-server.md." - route: "POST /acme/profile/{id}/authz/{authz_id}" why: "ACME server RFC 8555 §7.5 authz POST-as-GET; documented in docs/acme-server.md." - route: "POST /acme/profile/{id}/challenge/{chall_id}" why: "ACME server RFC 8555 §7.5.1 challenge response; dispatches to Phase 3 validator pool." - route: "POST /acme/profile/{id}/cert/{cert_id}" why: "ACME server RFC 8555 §7.4.2 cert download; documented in docs/acme-server.md." - route: "POST /acme/new-order" why: "Phase 2 default-profile shorthand for new-order." - route: "POST /acme/order/{ord_id}" why: "Phase 2 default-profile shorthand for order POST-as-GET." - route: "POST /acme/order/{ord_id}/finalize" why: "Phase 2 default-profile shorthand for finalize." - route: "POST /acme/authz/{authz_id}" why: "Phase 2 default-profile shorthand for authz POST-as-GET." - route: "POST /acme/challenge/{chall_id}" why: "Phase 3 default-profile shorthand for challenge response." - route: "POST /acme/cert/{cert_id}" why: "Phase 2 default-profile shorthand for cert download."