feat: service skeleton, Core wiring, and the /v1/day endpoint #133
No reviewers
Labels
No labels
area: api
area: auth
area: build
area: cache
area: ci
area: compare
area: model
area: provenance
area: rite
backport
blocked
breaking
confirmed
dependencies
duplicate
epic
invalid
needs-info
needs-triage
php
priority: high
priority: low
priority: medium
regression
type: chore
type: correction
type: docs
type: enhancement
type: feature
type: fix
type: perf
type: refactor
type: security
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Directorium/Api!133
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/3-service-skeleton"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Brings the API online as a thin, cache-first HTTP layer over Core — the foundation of the R2 / 3mi.org release vehicle (Api v0.1). Delivers epic #3 (service skeleton &
/v1routing) and proves the whole path end-to-end against the vendored engine.What's here
introibo/coreas a Composer VCS dependency, pinned bycomposer.lock. A singleEngine\CoreGatewayboundary calls Core; the API adds zero liturgical logic. Verified:?calendar=sspxelevates St Pius X (Sep 3) from rank 3 → 1, and thecalendar.particularblock + overlaidcorpusVersiontravel through untouched.Router(404 vs 405) →Handler, with immutableRequest/Response. No framework; runtime deps are Core +ext-jsononly.{data, meta}success envelope (data = Core's frozen #52 contract, verbatim;meta.dataVersion= service-wide stamp + echoed request) and one{error:{code,message,status}}shape with stable machine codes.universalor a particular-calendar slug), language — each checked against what Core actually supports.GET /v1/day/{date}(?system/&calendar/&lang) andGET /v1/health.checkjob now runs the full gate on PHP 8.2/8.3.docs/design/api-architecture.md: the decision record — the public contract, the cache-first model, the additive REST-migration path (CDN-friendly now, resource-oriented layout added later with no client breakage), and the built-in-repo vs maintainer-infra boundary.Verification
composer checkgreen locally: phpcs 22/22, PHPStan[OK], PHPUnit 33 tests / 130 assertions.php -S … public/index.php):/v1/health200,/v1/day/2026-09-03?calendar=sspx→pius-xrank 1, malformed date → 400, unknown route → 404.Scope notes
The calendar endpoints proper (month/year/
metadiscovery) are epic #8 (next PR); static generation (#13), caching/ETags (#17), keys/quotas (#21), and admin/purge (#27) follow. Live MySQL + Cloudflare + DreamHost deploy are maintainer infrastructure steps, tracked for the R2 cutover.Refs #3 #4 #5 #6 #7