"""Route tables for the procurement API. Single source of truth for what the API implements: the spec-drift test (tests/test_api_spec_drift.py) asserts these tables match lambdas/api/ openapi.json exactly, so an endpoint can't be added, removed, or renamed on one side without failing CI. Keys are (httpMethod, resource) as API Gateway's Lambda-proxy event presents them (resource = the templated path). DATA_ROUTES values are handler-module attribute names resolved by handler.py. PLANNED_ROUTES are phase-2 write endpoints: present in the spec (x-planned) and at the gateway, but the handler answers 501 until they ship with their own IAM diff + cross-family review. """ DATA_ROUTES = { ("GET", "/work-orders"): "list_work_orders", ("GET", "/work-orders/{workOrderId}"): "get_work_order", ("GET", "/work-orders/{workOrderId}/comments"): "list_comments", ("GET", "/purchase-orders"): "list_purchase_orders", ("GET", "/purchase-orders/{poNumber}"): "get_purchase_order", ("GET", "/verified-sites"): "list_verified_sites", ("GET", "/verified-sites/{siteCode}"): "get_verified_site", } DOCS_ROUTES = { ("GET", "/docs"), ("GET", "/openapi.json"), } PLANNED_ROUTES = { ("POST", "/work-orders/{workOrderId}/comments"), ("PATCH", "/work-orders/{workOrderId}"), }