Registry HTTP
Registry HTTP
Section titled “Registry HTTP”Every route registered on the axum router in memstead-registry. The route inventory is lifted by static scan of the router declaration (memstead-registry/src/lib.rs); each per-route section also surfaces the handler’s live signature and the ApiError variants its body emits. A machine-readable OpenAPI 3.1.0 document covering the same paths is published at /openapi.json. Full request / response JSON schemas would require utoipa annotations on every handler; today the contract is the signature, the path inventory, and the per-route error variants.
Routes: 9
GET/POST/api/admin/denylistGET/api/indexPOST/api/publishDELETE/api/mem/{scope}/{name_ext}GET/api/mem/{scope}/{name_ext}GET/api/mem/{scope}/{name}/{version_ext}GET/healthzGET/v/{scope}/{name}
GET /
Section titled “GET / ”Handler: handlers::static_assets::get_root
Signature:
pub async fn get_root() -> ApiResult<Response>Errors: (no ApiError variants found in handler body)
POST /api/admin/denylist
Section titled “POST /api/admin/denylist ”Handler: handlers::admin::post_denylist
Signature:
pub async fn post_denylist( State(state): State<AppState>, headers: HeaderMap, Json(req): Json<DenylistRequest>,) -> ApiResult<impl IntoResponse>ApiError variants emitted: Forbidden, Internal, InvalidContentHash
GET /api/index
Section titled “GET /api/index ”Handler: handlers::index::get_index
Signature:
pub async fn get_index(State(state): State<AppState>) -> ApiResult<Json<IndexResponse>>ApiError variants emitted: Internal
POST /api/publish
Section titled “POST /api/publish ”Handler: handlers::publish::post_publish
Signature:
pub async fn post_publish( State(state): State<AppState>, req: Request<Body>,) -> ApiResult<impl IntoResponse>ApiError variants emitted: BodyEmpty, BodyTooLarge, ContentBlocked, Internal, RateLimited, TermsNotAccepted, Tombstoned, Validation, ValidatorTimeout, VersionExists
DELETE /api/mem/{scope}/{name_ext}
Section titled “DELETE /api/mem/{scope}/{name_ext} ”Handler: handlers::unpublish::delete_unpublish
Signature:
pub async fn delete_unpublish( State(state): State<AppState>, Path((scope, name_ext)): Path<(String, String)>, headers: HeaderMap,) -> ApiResult<impl IntoResponse>ApiError variants emitted: Forbidden, Internal, NotFound
GET /api/mem/{scope}/{name_ext}
Section titled “GET /api/mem/{scope}/{name_ext} ”Handler: handlers::artifacts::get_artifact
Signature:
pub async fn get_artifact( State(state): State<AppState>, Path((scope, name_ext)): Path<(String, String)>,) -> ApiResult<Response>ApiError variants emitted: NotFound
GET /api/mem/{scope}/{name}/{version_ext}
Section titled “GET /api/mem/{scope}/{name}/{version_ext} ”Handler: handlers::artifacts::get_artifact_versioned
Signature:
pub async fn get_artifact_versioned( State(state): State<AppState>, Path((scope, name, version_ext)): Path<(String, String, String)>,) -> ApiResult<Response>ApiError variants emitted: NotFound
GET /healthz
Section titled “GET /healthz ”Handler: handlers::health::get_healthz
Signature:
pub async fn get_healthz(State(state): State<AppState>) -> impl IntoResponseErrors: (no ApiError variants found in handler body)
GET /v/{scope}/{name}
Section titled “GET /v/{scope}/{name} ”Handler: handlers::mem_page::get_mem_page
Signature:
pub async fn get_mem_page( State(state): State<AppState>, Path((scope, name)): Path<(String, String)>,) -> ApiResult<Response>ApiError variants emitted: Internal