Skip to content

REST API Registry ​

Registry tidak punya handler hand-written — endpoint dihasilkan generic entity REST engine dari spec.expose di entity manifests. Semua path workspace-scoped (default workspace default), sesuai D50: /api/v1 tanpa prefix deny-by-default.

Endpoint yang dipakai client (internal/vendor/registry.go) ​

#EndpointTujuan
1GET /{ws}/api/v1/registry/vendors?per_page=100find vendor (filter client-side)
2POST /{ws}/api/v1/registry/vendorscreate vendor (public_key ed25519)
3POST /{ws}/api/v1/registry/vendors/{id}/submittransisi state (past-draft)
4GET /{ws}/api/v1/registry/modules?per_page=100find module
5POST /{ws}/api/v1/registry/modulescreate module (vendor_id)
6POST /{ws}/api/v1/registry/modules/{id}/submitsubmit module
7POST /{ws}/api/v1/registry/module-versionscreate version (semver, checksum, signature)
8POST /{ws}/api/v1/registry/module-version/{id}/tarballupload tarball (multipart, application/gzip)
9GET /{ws}/api/v1/registry/module-versions?per_page=100lookup version
10GET /{ws}/api/v1/registry/module-version/{id}/tarballdownload tarball

Envelope ​

Sukses: { "data": ... }. Error: { "error": { "code", "message" } }. Publish mengirim header Authorization: Bearer <api-key>.

Sisi Server ​

KodePeran
cmd/formspec-registry/app-spec/spec/modules/registry/entities/*.yaml → spec.exposeSumber endpoint (actions yang terekspos)
internal/api/generator.go → GenerateRoutesEntity registry + expose → RouteDescriptor
internal/api/router.goMount /{ws}/api/v1/...
internal/api/handler.go → HandlerFactoryCRUD generic + dispatch action (termasuk submit)
internal/api/file.go → HandleFileUploadUpload/download file field (7.17.1) → ctx.storage

Mengubah perilaku publish (validasi, permission) = ubah manifest entity (spec.expose, permissions, state machine guards) — bukan menulis handler baru. Server-side signature verify (13.3.3) menyusul sebagai native service di cmd/formspec-registry.

Standar terbuka (CC0) dengan implementasi referensi.