{
  "schema_version": "nfors.api-route-manifest.v1",
  "contract_version": "2026-07-31",
  "manifest_revision": "2026-08-14.1",
  "source": {
    "revision": null,
    "binding": "Pin this artifact SHA-256 together with its producing Git commit; revision is intentionally not embedded to avoid a self-referential commit."
  },
  "publication": {
    "media_type": "application/json",
    "path": "/contracts/nfors-api-v1.json",
    "checksum_path": "/contracts/nfors-api-v1.json.sha256",
    "contains_public_v1_facts_only": true
  },
  "bindings": {
    "first_party_consumer_contract": {
      "schema_version": "nfors.first-party-consumer-contracts.v1",
      "manifest_revision": "2026-08-14.1",
      "sha256": "c855245beca64b835ceb93c62950c3f09c283f61c05d83833c1294489a37f530"
    }
  },
  "operations": [
    {
      "operation_id": "listBlockouts",
      "method": "GET",
      "path": "/api/v1/blockouts",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "read",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "blockouts",
        "href": "/developers#blockouts"
      }
    },
    {
      "operation_id": "createBlockout",
      "method": "POST",
      "path": "/api/v1/blockouts",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "blockouts",
        "href": "/developers#blockouts"
      }
    },
    {
      "operation_id": "getBlockout",
      "method": "GET",
      "path": "/api/v1/blockouts/{id}",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "read",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "blockouts",
        "href": "/developers#blockouts"
      }
    },
    {
      "operation_id": "cancelBlockout",
      "method": "POST",
      "path": "/api/v1/blockouts/{id}/cancel",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "blockouts",
        "href": "/developers#blockouts"
      }
    },
    {
      "operation_id": "uploadFile",
      "method": "POST",
      "path": "/api/v1/files",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "files",
        "href": "/developers#files"
      }
    },
    {
      "operation_id": "getIntegrationProfile",
      "method": "GET",
      "path": "/api/v1/integration-profile",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "read",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "integration-profile",
        "href": "/developers#integration-profile"
      }
    },
    {
      "operation_id": "listLocations",
      "method": "GET",
      "path": "/api/v1/locations",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "read",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "locations",
        "href": "/developers#locations"
      }
    },
    {
      "operation_id": "createLocation",
      "method": "POST",
      "path": "/api/v1/locations",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "locations",
        "href": "/developers#locations"
      }
    },
    {
      "operation_id": "deleteLocation",
      "method": "DELETE",
      "path": "/api/v1/locations/{id}",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "locations",
        "href": "/developers#locations"
      }
    },
    {
      "operation_id": "getLocation",
      "method": "GET",
      "path": "/api/v1/locations/{id}",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "read",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "locations",
        "href": "/developers#locations"
      }
    },
    {
      "operation_id": "updateLocation",
      "method": "PATCH",
      "path": "/api/v1/locations/{id}",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "locations",
        "href": "/developers#locations"
      }
    },
    {
      "operation_id": "getCurrentOperator",
      "method": "GET",
      "path": "/api/v1/me",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "read",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "me",
        "href": "/developers#me"
      }
    },
    {
      "operation_id": "findPermitMatch",
      "method": "GET",
      "path": "/api/v1/permit-match",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "read",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "match",
        "href": "/developers#match"
      }
    },
    {
      "operation_id": "batchPermitMatch",
      "method": "POST",
      "path": "/api/v1/permit-match/batch",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "read",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "match",
        "href": "/developers#match"
      }
    },
    {
      "operation_id": "listPermits",
      "method": "GET",
      "path": "/api/v1/permits",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "read",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "permits",
        "href": "/developers#permits"
      }
    },
    {
      "operation_id": "createPermit",
      "method": "POST",
      "path": "/api/v1/permits",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "permits",
        "href": "/developers#permits"
      }
    },
    {
      "operation_id": "deletePermit",
      "method": "DELETE",
      "path": "/api/v1/permits/{id}",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "permits",
        "href": "/developers#permits"
      }
    },
    {
      "operation_id": "getPermit",
      "method": "GET",
      "path": "/api/v1/permits/{id}",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "read",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "permits",
        "href": "/developers#permits"
      }
    },
    {
      "operation_id": "updatePermit",
      "method": "PATCH",
      "path": "/api/v1/permits/{id}",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "permits",
        "href": "/developers#permits"
      }
    },
    {
      "operation_id": "bulkCreatePermits",
      "method": "POST",
      "path": "/api/v1/permits/bulk",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "permits",
        "href": "/developers#permits"
      }
    },
    {
      "operation_id": "createPlateEvent",
      "method": "POST",
      "path": "/api/v1/plate-events",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [],
        "conditional_capabilities": [
          {
            "capability": "plate-events:historical",
            "condition": "latest observed edge (entry_at for an open stay, exit_at for a completed stay) is more than 24 hours before receipt"
          }
        ]
      },
      "docs": {
        "anchor": "plate-events",
        "href": "/developers#plate-events"
      }
    },
    {
      "operation_id": "reconcilePlateEvent",
      "method": "GET",
      "path": "/api/v1/plate-events/reconciliation",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "read",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "plate-event-reconciliation",
        "href": "/developers#plate-event-reconciliation"
      }
    },
    {
      "operation_id": "createLegacyStayRelease",
      "method": "POST",
      "path": "/api/v1/legacy-stay-releases",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [
          "legacy-stay-releases:write"
        ],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "legacy-stay-releases",
        "href": "/developers#legacy-stay-releases"
      }
    },
    {
      "operation_id": "reconcileLegacyStayRelease",
      "method": "GET",
      "path": "/api/v1/legacy-stay-releases/reconciliation",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "read",
        "required_capabilities": [
          "legacy-stay-releases:write"
        ],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "legacy-stay-releases",
        "href": "/developers#legacy-stay-releases"
      }
    },
    {
      "operation_id": "getLevelEnforcementLifecycle",
      "method": "GET",
      "path": "/api/v1/level-enforcement-lifecycle",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "read",
        "required_capabilities": [
          "level-enforcement-lifecycle:read"
        ],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "level-enforcement-lifecycle",
        "href": "/developers#level-enforcement-lifecycle"
      }
    },
    {
      "operation_id": "executeReport",
      "method": "POST",
      "path": "/api/v1/reports/execute",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "read",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "reports",
        "href": "/developers#reports"
      }
    },
    {
      "operation_id": "createViolation",
      "method": "POST",
      "path": "/api/v1/violations",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "violations",
        "href": "/developers#violations"
      }
    },
    {
      "operation_id": "getViolation",
      "method": "GET",
      "path": "/api/v1/violations/{id}",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "read",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "violations",
        "href": "/developers#violations"
      }
    },
    {
      "operation_id": "voidViolation",
      "method": "POST",
      "path": "/api/v1/violations/{id}/void",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [
          "violations:void"
        ],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "violation-void",
        "href": "/developers#violation-void"
      }
    },
    {
      "operation_id": "lookupViolations",
      "method": "GET",
      "path": "/api/v1/violations/lookup",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "read",
        "required_capabilities": [
          "violations:read"
        ],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "violation-lookup",
        "href": "/developers#violation-lookup"
      }
    },
    {
      "operation_id": "createWebhookEndpoint",
      "method": "POST",
      "path": "/api/v1/webhook-endpoints",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "webhooks",
        "href": "/developers#webhooks"
      }
    },
    {
      "operation_id": "deleteWebhookEndpoint",
      "method": "DELETE",
      "path": "/api/v1/webhook-endpoints/{id}",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "webhooks",
        "href": "/developers#webhooks"
      }
    },
    {
      "operation_id": "listWhitelistEntries",
      "method": "GET",
      "path": "/api/v1/whitelist",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "read",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "whitelist",
        "href": "/developers#whitelist"
      }
    },
    {
      "operation_id": "createWhitelistEntry",
      "method": "POST",
      "path": "/api/v1/whitelist",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "whitelist",
        "href": "/developers#whitelist"
      }
    },
    {
      "operation_id": "deleteWhitelistEntry",
      "method": "DELETE",
      "path": "/api/v1/whitelist/{id}",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "whitelist",
        "href": "/developers#whitelist"
      }
    },
    {
      "operation_id": "getWhitelistEntry",
      "method": "GET",
      "path": "/api/v1/whitelist/{id}",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "read",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "whitelist",
        "href": "/developers#whitelist"
      }
    },
    {
      "operation_id": "updateWhitelistEntry",
      "method": "PATCH",
      "path": "/api/v1/whitelist/{id}",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "whitelist",
        "href": "/developers#whitelist"
      }
    },
    {
      "operation_id": "bulkCreateWhitelistEntries",
      "method": "POST",
      "path": "/api/v1/whitelist/bulk",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "whitelist",
        "href": "/developers#whitelist"
      }
    },
    {
      "operation_id": "listZoneMappings",
      "method": "GET",
      "path": "/api/v1/zone-mappings",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "read",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "zone-mappings",
        "href": "/developers#zone-mappings"
      }
    },
    {
      "operation_id": "createZoneMapping",
      "method": "POST",
      "path": "/api/v1/zone-mappings",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "zone-mappings",
        "href": "/developers#zone-mappings"
      }
    },
    {
      "operation_id": "deleteZoneMapping",
      "method": "DELETE",
      "path": "/api/v1/zone-mappings/{id}",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "zone-mappings",
        "href": "/developers#zone-mappings"
      }
    },
    {
      "operation_id": "getZoneMapping",
      "method": "GET",
      "path": "/api/v1/zone-mappings/{id}",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "read",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "zone-mappings",
        "href": "/developers#zone-mappings"
      }
    },
    {
      "operation_id": "updateZoneMapping",
      "method": "PATCH",
      "path": "/api/v1/zone-mappings/{id}",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "write",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "zone-mappings",
        "href": "/developers#zone-mappings"
      }
    },
    {
      "operation_id": "listZones",
      "method": "GET",
      "path": "/api/v1/zones",
      "auth": {
        "scheme": "bearer_api_key",
        "accepted_headers": [
          "Authorization",
          "X-API-Key"
        ],
        "tenant_scoped": true,
        "rate_scope": "read",
        "required_capabilities": [],
        "conditional_capabilities": []
      },
      "docs": {
        "anchor": "zones",
        "href": "/developers#zones"
      }
    }
  ],
  "shared_contracts": {
    "providers": {
      "values": [
        "PARKMOBILE",
        "PARKLYNC",
        "SPOTHERO",
        "PAYBYPHONE",
        "FLOWBIRD",
        "PARKINGBOSS",
        "PASSPORT",
        "HONK",
        "T2",
        "LEVEL",
        "MANUAL",
        "DASHBOARD"
      ],
      "zone_mapping_values": [
        "PARKMOBILE",
        "PARKLYNC",
        "LEVEL",
        "SPOTHERO",
        "PAYBYPHONE",
        "FLOWBIRD",
        "PARKINGBOSS",
        "PASSPORT",
        "HONK",
        "T2"
      ],
      "input_case": "uppercase_closed_enum",
      "output_case": "uppercase"
    },
    "whitelist_zone_identity": {
      "single_create": {
        "exactly_one_of": [
          "zone_ids",
          "zone_external_ids",
          "zone_source_codes",
          "all_zones"
        ],
        "zone_source_codes_require_provider": true,
        "zone_source_codes_resolution": "mapped_subset_at_least_one"
      },
      "bulk_create": {
        "exactly_one_of": [
          "zone_ids",
          "zone_external_ids",
          "all_zones"
        ],
        "zone_source_codes_supported": false
      }
    },
    "webhook_events": {
      "wildcard": "*",
      "subscribable": [
        "permit.created",
        "permit.updated",
        "permit.deleted",
        "whitelist.created",
        "whitelist.updated",
        "whitelist.deleted",
        "violation.issued",
        "warning.issued",
        "notice.delivered",
        "violation.evaluated",
        "violation.voided",
        "violation.reduced",
        "violation.paid",
        "violation.corrected",
        "payment.succeeded",
        "payment.refunded",
        "dispute.created",
        "dispute.resolved",
        "blockout.created",
        "blockout.cancelled",
        "queue.opened",
        "queue.ready",
        "queue.resolved"
      ],
      "dispatchable": [
        "permit.created",
        "permit.updated",
        "permit.deleted",
        "whitelist.created",
        "whitelist.updated",
        "whitelist.deleted",
        "violation.issued",
        "warning.issued",
        "notice.delivered",
        "violation.evaluated",
        "violation.voided",
        "violation.reduced",
        "violation.paid",
        "violation.corrected",
        "payment.succeeded",
        "payment.refunded",
        "dispute.created",
        "dispute.resolved",
        "blockout.created",
        "blockout.cancelled",
        "queue.opened",
        "queue.ready",
        "queue.resolved"
      ],
      "divergences": []
    },
    "plate_identity": {
      "canonicalization": "trim input, remove characters outside ASCII A-Z, a-z, and 0-9, then uppercase",
      "canonical_length": {
        "min": 2,
        "max": 10
      },
      "permit_whitelist_writes": {
        "operations": [
          "createPermit",
          "updatePermit",
          "bulkCreatePermits",
          "createWhitelistEntry",
          "updateWhitelistEntry",
          "bulkCreateWhitelistEntries"
        ],
        "source_intent_fields": [
          "plate_number",
          "plate_state"
        ],
        "source_intent_retained_in_immutable_receipt": true,
        "optional_context_field": "plate_identity_context",
        "optional_context_fields": [
          "plate_class",
          "issuer_product_code",
          "design_code",
          "serialized_segment",
          "plate_issue_date"
        ],
        "caller_supplied_provenance_allowed": false,
        "effective_identity_response_fields": [
          "plate_number",
          "plate_state"
        ],
        "safe_metadata": {
          "location": "plate_identity",
          "fields": [
            "outcome",
            "explanation_code",
            "receipt_reference"
          ],
          "outcomes": [
            "unchanged",
            "rewritten",
            "candidate_only",
            "insufficient_context",
            "ambiguous_scope",
            "rules_unavailable",
            "legacy_unversioned"
          ],
          "suppressive_outcomes": [
            "candidate_only",
            "insufficient_context",
            "ambiguous_scope",
            "rules_unavailable"
          ],
          "explanation_code_nullable_on_historical_projection": true,
          "receipt_reference_opaque": true,
          "receipt_reference_nullable_for_legacy": true,
          "excluded_fields": [
            "candidate_values",
            "source_effective_pair",
            "rule_ids",
            "provenance"
          ]
        },
        "idempotency": {
          "domain_natural_key": [
            "operator_id",
            "provider",
            "external_id"
          ],
          "owner_key": [
            "operator_id",
            "provider",
            "external_id",
            "established_writer_workflow"
          ],
          "established_writer_workflow_immutable": true,
          "ordinary_update_owner_fields": {
            "external_id": "immutable",
            "provider": "immutable_when_current_or_proposed_external_id_is_non_null",
            "id_owned_provider_change": "requires_identity_re_resolution"
          },
          "cross_channel_takeover": {
            "single_http_status": 409,
            "bulk_disposition": "indexed_row_rejection",
            "migration_required": "explicit_audited_handoff"
          },
          "changed_source_plate_or_scope": {
            "single_http_status": 409,
            "bulk_disposition": "indexed_row_rejection"
          },
          "validity_lifecycle_metadata_only_update": "retain_original_receipt",
          "validity_extension": {
            "parent_and_receipt_retention": "atomic",
            "receipt_identity": "unchanged"
          },
          "hard_delete": {
            "receipt_backed_external_parent": {
              "http_status": 409,
              "error_details_schema": "coverage_parent_delete",
              "replacement_by_kind": {
                "permit": "end_permit",
                "whitelist": "expire_whitelist"
              }
            },
            "legacy_or_id_owned_parent": "unchanged"
          }
        },
        "bulk_results": {
          "collection_field": "results",
          "response_http_status": 201,
          "preserves_input_index": true,
          "one_result_per_submitted_row": true,
          "accepted_fields": [
            "index",
            "status",
            "outcome",
            "explanation_code",
            "receipt_reference"
          ],
          "rejected_fields": [
            "index",
            "status",
            "error"
          ],
          "partial_success": true,
          "all_rows_invalid": {
            "http_status": 400,
            "results_required": false
          }
        }
      },
      "observation_identity": {
        "raw_fields": [
          "plate_number",
          "plate_state"
        ],
        "raw_fields_immutable": true,
        "correction_fields": [
          "corrected_plate_number",
          "corrected_plate_state"
        ],
        "corrections_are_additive": true,
        "effective_identity_precedence": "correction_then_raw",
        "invalid_raw_is_preserved_with_null_canonical": true,
        "corrected_canonical_must_be_valid": true,
        "row_revision": "database_owned_monotonic_compare_and_swap"
      },
      "confusable_read_fallback": {
        "direction": "letter_to_digit",
        "map": {
          "O": "0",
          "I": "1",
          "B": "8",
          "S": "5",
          "Z": "2"
        },
        "persisted_as_primary_identity": false
      },
      "stacked_prefix_read_fallback": {
        "leading_ascii_letters": {
          "min": 1,
          "max": 2
        },
        "numeric_core_min_digits": 5,
        "may_only_find_coverage": true
      }
    },
    "pagination": {
      "operations": [
        "listBlockouts",
        "listLocations",
        "listPermits",
        "listWhitelistEntries",
        "listZoneMappings"
      ],
      "default_limit": 50,
      "maximum_limit": 200,
      "response_fields": [
        "has_more",
        "next_cursor"
      ],
      "ordering": [
        {
          "field": "created_at",
          "direction": "descending"
        },
        {
          "field": "id",
          "direction": "descending"
        }
      ],
      "current_cursor": {
        "version_prefix": "v1.",
        "encoding": "base64url canonical JSON",
        "tuple": [
          "created_at",
          "id"
        ],
        "opaque_to_consumers": true,
        "maximum_length": 512
      },
      "legacy_cursor": {
        "accepted": true,
        "format": "RFC3339 timestamp with offset",
        "ordering_boundary": "created_at only"
      }
    },
    "plate_event_quarantine": {
      "operation_id": "createPlateEvent",
      "http_status": 202,
      "response": {
        "exact_keys": [
          "status",
          "quarantine_id",
          "defect",
          "repair_path",
          "fields",
          "message"
        ],
        "status": "quarantined",
        "quarantine_id": "uuid",
        "defect_repair": {
          "zone_unmapped": "config_repair",
          "reason_unknown": "config_repair",
          "chronology_implausible": "data_repair",
          "descriptor_incomplete": "data_repair"
        },
        "fields": {
          "type": "unique_array",
          "allowed": [
            "entry_at",
            "exit_at",
            "zone_external_id",
            "zone_id",
            "zone_source_code"
          ]
        },
        "message": {
          "type": "non_empty_string",
          "maximum_length": 512,
          "authority": "non_authoritative_human_readable",
          "exact_value_normative": false
        }
      },
      "adjudicated": false,
      "charge_created": false,
      "resubmission_authorized": false,
      "identity_includes_provider": true
    },
    "plate_event_reconciliation": {
      "contract_version": "plate_event_reconciliation_v1",
      "provider_scope": "LEVEL",
      "lookup_key": "external_id",
      "outcomes": [
        "notice_found",
        "no_notice",
        "inconclusive"
      ],
      "decisions": [
        "disabled",
        "no_action",
        "alert_logged",
        "violation_issued"
      ],
      "evidence": [
        "violation_record",
        "response_receipt",
        "none"
      ],
      "resubmission_authorized": false,
      "cache_control": "private, no-store, max-age=0"
    },
    "permit_match": {
      "single": {
        "result_fields": [
          "valid",
          "matches",
          "match_via",
          "stacked_prefix"
        ],
        "match_via": [
          "normal",
          "stacked_prefix"
        ],
        "errors": [
          {
            "http_status": 409,
            "code": "conflict",
            "reason": "permit_identity_ambiguous"
          },
          {
            "http_status": 503,
            "code": "upstream_unavailable"
          }
        ]
      },
      "batch": {
        "maximum_queries": 200,
        "result_fields": [
          "valid",
          "matches",
          "stacked_prefix",
          "error",
          "error_code"
        ],
        "item_error_codes": [
          "invalid_request",
          "not_found",
          "upstream_unavailable",
          "permit_identity_ambiguous"
        ]
      },
      "ambiguity_never_collapses_to_no_match": true,
      "dependency_uncertainty_never_collapses_to_no_match": true
    },
    "enforcement_hold": {
      "operations": [
        "createPlateEvent",
        "createViolation"
      ],
      "http_status": 503,
      "code": "upstream_unavailable",
      "retry_after_seconds": 30,
      "detail_field": "hold_reason",
      "charge_created": false,
      "reasons": [
        {
          "reason": "live_coverage_recheck_failed",
          "meaning": "the caller live coverage API reported the plate as covered and the canonical matcher could not reproduce it",
          "resolvable_by": "caller",
          "retry_clears": false
        },
        {
          "reason": "permit_mirror_stale",
          "meaning": "no live answer and the mirrored permit data for the zone is too old for an empty match to mean no permit",
          "resolvable_by": "caller",
          "retry_clears": false
        },
        {
          "reason": "live_coverage_not_persisted",
          "meaning": "coverage was detected but the nfors write of it did not land, so enforcement is refused against an unrecorded permit",
          "resolvable_by": "nfors",
          "retry_clears": true
        }
      ],
      "other_hold_reason_vocabularies": [
        "permit_identity_ambiguous",
        "plate_identity_review"
      ],
      "durable_field_error_prefix": "permit_hold:"
    }
  }
}
