{"components": {"schemas": {"ChangeEvent": {"properties": {"event_id": {"minimum": 1, "type": "integer"}, "field": {"enum": ["submission_deadline"], "type": "string"}, "lot_id": {"type": "string"}, "new_notice": {"type": "string"}, "new_value": {"$ref": "#/components/schemas/Deadline"}, "observed_at": {"format": "date-time", "type": "string"}, "old_value": {"$ref": "#/components/schemas/Deadline"}, "previous_notice": {"type": "string"}, "source_publication_date": {"description": "Source date, not an invented timestamp", "type": "string"}, "source_urls": {"items": {"format": "uri", "type": "string"}, "type": "array"}}, "required": ["event_id", "lot_id", "field", "old_value", "new_value", "source_urls"], "type": "object"}, "ChangePage": {"properties": {"baseline_is_not_history": {"type": "boolean"}, "checked_at": {"format": "date-time", "type": "string"}, "checkpoint_cursor": {"description": "Use as cursor to poll after this page; refresh within 24 hours", "type": "string"}, "complete": {"type": "boolean"}, "current_deadlines": {"additionalProperties": {"$ref": "#/components/schemas/Deadline"}, "type": "object"}, "current_notice": {"nullable": true, "type": "string"}, "current_source_url": {"format": "uri", "type": "string"}, "events": {"items": {"$ref": "#/components/schemas/ChangeEvent"}, "maxItems": 50, "type": "array"}, "fresh": {"type": "boolean"}, "next_cursor": {"nullable": true, "type": "string"}, "observation_start": {"format": "date-time", "type": "string"}, "request_id": {"format": "uuid", "type": "string"}, "root": {"type": "string"}, "schema_version": {"enum": ["1"], "type": "string"}, "source": {"enum": ["TED"], "type": "string"}}, "required": ["request_id", "schema_version", "source", "root", "events", "fresh", "complete"], "type": "object"}, "Deadline": {"properties": {"date": {"description": "Original source date with explicit offset", "type": "string"}, "time": {"description": "Original source time with explicit offset", "type": "string"}, "utc": {"format": "date-time", "type": "string"}}, "required": ["date", "time", "utc"], "type": "object"}}, "securitySchemes": {"apiKeyBearer": {"description": "Prepaid Aurelmark API key", "scheme": "bearer", "type": "http"}, "localDemoToken": {"in": "header", "name": "X-Demo-Token", "type": "apiKey"}}}, "info": {"title": "Aurelmark Deadline API", "version": "0.4.4"}, "openapi": "3.0.3", "paths": {"/health": {"get": {"responses": {"200": {"description": "Successful JSON response"}, "429": {"description": "Rate limited"}}}}, "/openapi.json": {"get": {"responses": {"200": {"description": "Successful JSON response"}, "429": {"description": "Rate limited"}}}}, "/ready": {"get": {"responses": {"200": {"description": "Successful JSON response"}, "429": {"description": "Rate limited"}, "503": {"description": "Source or database not ready"}}}}, "/v1/agent": {"get": {"responses": {"200": {"description": "Successful JSON response"}, "429": {"description": "Rate limited"}}}}, "/v1/coverage": {"get": {"responses": {"200": {"description": "Successful JSON response"}, "429": {"description": "Rate limited"}}}}, "/v1/pricing": {"get": {"responses": {"200": {"description": "Successful JSON response"}, "429": {"description": "Rate limited"}}}}, "/v1/procurement/eu/notices/{id}/changes": {"get": {"description": "Observed submission-deadline changes after the first baseline. Inspect /v1/pricing for payment mode. Without a key, 100 successful responses per day are free; then a key or payment is required.", "parameters": [{"in": "path", "name": "id", "required": true, "schema": {"pattern": "^[0-9]{1,8}-(19|20)[0-9]{2}$", "type": "string"}}, {"in": "query", "name": "cursor", "schema": {"type": "string"}}, {"in": "query", "name": "limit", "schema": {"maximum": 50, "minimum": 1, "type": "integer"}}], "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangePage"}}}, "description": "Fresh complete observed events", "headers": {"X-Credits-Remaining": {"description": "Credits left on this API key", "schema": {"type": "integer"}}, "X-Free-Requests-Remaining": {"description": "Free keyless responses left today", "schema": {"type": "integer"}}}}, "400": {"description": "Invalid request"}, "401": {"description": "Invalid or revoked API key"}, "402": {"description": "API key required or prepaid credits exhausted"}, "404": {"description": "Not tracked"}, "410": {"description": "Cursor expired"}, "503": {"description": "Source stale or incomplete"}}, "security": [{"apiKeyBearer": []}, {}]}}, "/v1/sample": {"get": {"responses": {"200": {"description": "Successful JSON response"}, "429": {"description": "Rate limited"}}}}}}