state-hub/api
tegwick 77689fbfb2 STATE-WP-0062 T2: /services catalog API over the two-dimension model
Add a local /services router (source of truth for the catalog itself):
- GET /services/catalog with hosting_type / development_type / maturity_level /
  status filters (eager-loads all four extensions)
- GET /services/{slug}
- POST /services/catalog upsert-by-slug, applying the dimension extensions;
  first_party.repo_slug resolves to a managed_repos FK.

Extensions are read/written via session.get (not the relationship attribute) to
avoid async lazy-load. /tpsc/* is left intact for dependency snapshots. 7 tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 20:56:19 +02:00
..
events chore: update standalone state hub wiring 2026-05-17 20:01:21 +02:00
models STATE-WP-0062 T1: two-dimension service_catalog model + migration 2026-06-19 20:46:07 +02:00
routers STATE-WP-0062 T2: /services catalog API over the two-dimension model 2026-06-19 20:56:19 +02:00
schemas STATE-WP-0062 T2: /services catalog API over the two-dimension model 2026-06-19 20:56:19 +02:00
services feat: add workplan aliases and legacy meter 2026-06-04 08:25:31 +02:00
config.py Implement RecentlyOnScope domain digest 2026-05-22 13:45:53 +02:00
database.py Add state-hub v0.1 — local-first state service for the Custodian 2026-02-24 17:47:49 +01:00
doi_engine.py scope refactoring 2026-05-01 01:47:14 +02:00
flow_defs.py Complete workplan state model cleanup 2026-05-18 01:31:36 +02:00
main.py STATE-WP-0062 T2: /services catalog API over the two-dimension model 2026-06-19 20:56:19 +02:00
task_status.py feat(tasks): adopt canonical task statuses 2026-05-26 01:32:50 +02:00
workplan_status.py Complete workplan state model cleanup 2026-05-18 01:31:36 +02:00