Internal discovery & health (ops)
Not user flows — these serve the operator-profile infrastructure: internal liveness, the machine-generated API contract, and interactive exploration. Raw bodies, internal-only ingress.
- GET /health → internal liveness (raw object)
- GET /v1/openapi.json → OpenAPI 3.1 contract (source of truth)
- GET /swagger → Swagger UI (HTML)
/healthpublicLiveness probe (operator)Raw object. The orchestrator restarts the operator pod if this stops returning 200. Internal-only — never routed through the public edge.
Field guide — what each value means & where it comes fromno inputs
No request body. Public liveness probe (operator profile) — no authentication, no path/query params, and no required caller headers. Returns a raw (non-enveloped) object like { "status": "ok", "service": "iam-platform", "version": "0.0.0" }.
GET https://api.kerja.team/healthResponse guide — what comes back & what each value means3 fields
200 OK with a RAW JSON object — NOT wrapped in the { data } envelope. Public liveness probe; no notable response headers (no Set-Cookie, no Cache-Control).
statusenumalwaysok— The service is alive and serving requests.
servicestringalwaysiam-platform— Identifies the responder as the IAM platform service.
versionstringalways/v1/openapi.jsonpublicOpenAPI 3.1 contractThe source-of-truth spec, built from the same Zod schemas that validate input. If the API document and the spec disagree, the spec wins. In a NON-PRODUCTION environment the contract additionally carries the /v1/dev/oob/* helper block — the same helpers this tester surfaces as “⛓ out-of-band” popups — which lets a front-end developer walk every scenario without a mailer, an SMS gateway, or a database client. Environment-gated; never present in production.
Field guide — what each value means & where it comes fromno inputs
No request body, path params, query params, or required caller headers. This is a public endpoint (no Authorization, no x-gateway-context required) that returns the raw OpenAPI 3.1 contract (operator profile) as JSON.
GET https://api.kerja.team/v1/openapi.jsonResponse guide — what comes back & what each value means13 fields
200 OK with a raw JSON body that IS the OpenAPI 3.1 contract document itself (operator profile) — NOT wrapped in the { data } envelope. Public endpoint; no auth, no Set-Cookie. The body is generated from the same Zod schemas that validate input, so it is the single source of truth for the operator API surface.
openapistringalways3.1.0— Document conforms to the OpenAPI 3.1 specification (as stated in the section title).
infoobjectalwaysinfo.titlestringalwaysinfo.versionstringalwaysinfo.descriptionstringconditionalservers[]arrayconditionalservers[].urlstringconditionalpathsobjectalwayscomponentsobjectconditionalcomponents.schemasobjectconditionalcomponents.securitySchemesobjectconditionalsecurity[]arrayconditionaltags[]arrayconditional/swaggerpublicSwagger UIInteractive internal exploration of the operator surface (HTML). Not exposed to tenant traffic.
Field guide — what each value means & where it comes fromno inputs
No request body, path params, query params, or required headers. This is a public endpoint (no authentication needed) that returns the Swagger UI HTML page for interactive exploration of the API contract. Intended for internal exploration only.
GET https://api.kerja.team/swaggerResponse guide — what comes back & what each value meansno body
200 OK returns an HTML document (the interactive Swagger UI page), NOT JSON — the body is raw HTML and is NOT wrapped in the { data } envelope, so there are no JSON response properties to document. Public, internal-exploration-only endpoint; Content-Type is text/html and no notable Set-Cookie or Cache-Control headers are specified.