{"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/cbam/certificate-price": {"get": {"parameters": [], "responses": {"200": {"description": "Price in EUR per tonne of CO2e, its period and source"}, "400": {"description": "Invalid parameter, with error and detail"}, "404": {"description": "Not found"}, "429": {"description": "Rate limited"}}, "summary": "The latest published CBAM certificate price", "tags": ["CBAM"]}}, "/v1/cbam/countries": {"get": {"parameters": [], "responses": {"200": {"description": "Country codes and names"}, "400": {"description": "Invalid parameter, with error and detail"}, "404": {"description": "Not found"}, "429": {"description": "Rate limited"}}, "summary": "Countries with their own CBAM default values", "tags": ["CBAM"]}}, "/v1/cbam/default-values": {"get": {"parameters": [{"description": "CN or TARIC code, 2 to 10 digits, e.g. 7208 or 72083900", "in": "query", "name": "cn", "required": true, "schema": {"type": "string"}}, {"description": "Two-letter ISO country of origin (e.g. IN), OTHER (default) or UNKNOWN", "in": "query", "name": "country", "required": false, "schema": {"type": "string"}}, {"description": "2026 or later; defaults to the current year", "in": "query", "name": "year", "required": false, "schema": {"type": "string"}}], "responses": {"200": {"description": "Default values with the mark-up for the year and the official source"}, "400": {"description": "Invalid parameter, with error and detail"}, "404": {"description": "Not found"}, "429": {"description": "Rate limited"}}, "summary": "CBAM default embedded emissions for a CN code", "tags": ["CBAM"]}}, "/v1/coverage": {"get": {"responses": {"200": {"description": "Successful JSON response"}, "429": {"description": "Rate limited"}}}}, "/v1/eu/deadlines": {"get": {"parameters": [{"description": "Filter by law, e.g. CBAM, EUDR, CSRD", "in": "query", "name": "law", "required": false, "schema": {"type": "string"}}, {"description": "upcoming or applies", "in": "query", "name": "status", "required": false, "schema": {"type": "string"}}, {"description": "From date, YYYY-MM-DD", "in": "query", "name": "from", "required": false, "schema": {"type": "string"}}, {"description": "To date, YYYY-MM-DD", "in": "query", "name": "to", "required": false, "schema": {"type": "string"}}], "responses": {"200": {"description": "Deadlines with dates, days left and official sources"}, "400": {"description": "Invalid parameter, with error and detail"}, "404": {"description": "Not found"}, "429": {"description": "Rate limited"}}, "summary": "Dated EU compliance deadlines", "tags": ["EU deadlines"]}}, "/v1/eu/deadlines/{id}": {"get": {"parameters": [{"description": "Deadline id from /v1/eu/deadlines", "in": "path", "name": "id", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"description": "The deadline"}, "400": {"description": "Invalid parameter, with error and detail"}, "404": {"description": "Not found"}, "429": {"description": "Rate limited"}}, "summary": "One EU compliance deadline", "tags": ["EU deadlines"]}}, "/v1/eudr/products": {"get": {"parameters": [], "responses": {"200": {"description": "Products, removals, dates and sources"}, "400": {"description": "Invalid parameter, with error and detail"}, "404": {"description": "Not found"}, "429": {"description": "Rate limited"}}, "summary": "Every EUDR Annex I product", "tags": ["EUDR"]}}, "/v1/eudr/scope": {"get": {"parameters": [{"description": "CN code, 4 to 8 digits, e.g. 0901 or 18063100", "in": "query", "name": "cn", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"description": "In or out of scope, the commodity and the official Annex I entry"}, "400": {"description": "Invalid parameter, with error and detail"}, "404": {"description": "Not found"}, "429": {"description": "Rate limited"}}, "summary": "Is a CN code in scope of the EU Deforestation Regulation?", "tags": ["EUDR"]}}, "/v1/pricing": {"get": {"responses": {"200": {"description": "Successful JSON response"}, "429": {"description": "Rate limited"}}}}, "/v1/procurement/eu/awards": {"get": {"parameters": [{"description": "Published since, YYYY-MM-DD; default 7 days ago", "in": "query", "name": "since", "required": false, "schema": {"type": "string"}}, {"description": "Up to 5 comma-separated CPV codes or prefixes", "in": "query", "name": "cpv", "required": false, "schema": {"type": "string"}}, {"description": "Buyer country, 3-letter code such as DEU", "in": "query", "name": "country", "required": false, "schema": {"type": "string"}}, {"description": "Winner name or its start", "in": "query", "name": "winner", "required": false, "schema": {"type": "string"}}, {"description": "Official winner identifier, e.g. a VAT number", "in": "query", "name": "winner_id", "required": false, "schema": {"type": "string"}}, {"description": "1 to 50, default 20", "in": "query", "name": "limit", "required": false, "schema": {"type": "string"}}, {"description": "next_cursor from the previous page", "in": "query", "name": "cursor", "required": false, "schema": {"type": "string"}}], "responses": {"200": {"description": "Awards with winners, buyer, value, CPV, lots and proof"}, "400": {"description": "Invalid parameter, with error and detail"}, "401": {"description": "Invalid API key"}, "402": {"description": "Free tier used up or credits exhausted; an API key is required"}, "404": {"description": "Not found"}, "429": {"description": "Rate limited"}}, "security": [{}, {"apiKeyBearer": []}], "summary": "EU public contract award notices (TED)", "tags": ["Contract awards"]}}, "/v1/procurement/eu/awards/{id}": {"get": {"parameters": [{"description": "TED publication number, e.g. 718666-2026", "in": "path", "name": "id", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"description": "The award with proof"}, "400": {"description": "Invalid parameter, with error and detail"}, "401": {"description": "Invalid API key"}, "402": {"description": "Free tier used up or credits exhausted; an API key is required"}, "404": {"description": "Not found"}, "429": {"description": "Rate limited"}}, "security": [{}, {"apiKeyBearer": []}], "summary": "One EU contract award notice", "tags": ["Contract awards"]}}, "/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"}}}}, "/v1/sanctions/changes": {"get": {"parameters": [{"description": "Since, YYYY-MM-DD; default 7 days ago", "in": "query", "name": "since", "required": false, "schema": {"type": "string"}}, {"description": "ofac-sdn, ofac-consolidated, uk or eu", "in": "query", "name": "list", "required": false, "schema": {"type": "string"}}, {"description": "added, removed or amended", "in": "query", "name": "change", "required": false, "schema": {"type": "string"}}, {"description": "1 to 50", "in": "query", "name": "limit", "required": false, "schema": {"type": "string"}}, {"description": "next_cursor from the previous page", "in": "query", "name": "cursor", "required": false, "schema": {"type": "string"}}], "responses": {"200": {"description": "Changes with the entry before and after"}, "400": {"description": "Invalid parameter, with error and detail"}, "401": {"description": "Invalid API key"}, "402": {"description": "Free tier used up or credits exhausted; an API key is required"}, "404": {"description": "Not found"}, "429": {"description": "Rate limited"}}, "security": [{}, {"apiKeyBearer": []}], "summary": "Additions, removals and amendments to OFAC, UK and EU sanctions lists", "tags": ["Sanctions"]}}, "/v1/sanctions/entries/{list}/{id}": {"get": {"parameters": [{"description": "ofac-sdn, ofac-consolidated, uk or eu", "in": "path", "name": "list", "required": true, "schema": {"type": "string"}}, {"description": "The list's own entry id", "in": "path", "name": "id", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"description": "The entry"}, "400": {"description": "Invalid parameter, with error and detail"}, "401": {"description": "Invalid API key"}, "402": {"description": "Free tier used up or credits exhausted; an API key is required"}, "404": {"description": "Not found"}, "429": {"description": "Rate limited"}}, "security": [{}, {"apiKeyBearer": []}], "summary": "One sanctions entry", "tags": ["Sanctions"]}}, "/v1/sanctions/lists": {"get": {"parameters": [], "responses": {"200": {"description": "Lists with entry counts and last check"}, "400": {"description": "Invalid parameter, with error and detail"}, "404": {"description": "Not found"}, "429": {"description": "Rate limited"}}, "summary": "The sanctions lists covered and how fresh they are", "tags": ["Sanctions"]}}, "/v1/sanctions/search": {"get": {"parameters": [{"description": "Name or its start", "in": "query", "name": "name", "required": true, "schema": {"type": "string"}}, {"description": "ofac-sdn, ofac-consolidated, uk or eu", "in": "query", "name": "list", "required": false, "schema": {"type": "string"}}, {"description": "1 to 50", "in": "query", "name": "limit", "required": false, "schema": {"type": "string"}}], "responses": {"200": {"description": "Matching entries"}, "400": {"description": "Invalid parameter, with error and detail"}, "401": {"description": "Invalid API key"}, "402": {"description": "Free tier used up or credits exhausted; an API key is required"}, "404": {"description": "Not found"}, "429": {"description": "Rate limited"}}, "security": [{}, {"apiKeyBearer": []}], "summary": "Search current sanctions entries by name", "tags": ["Sanctions"]}}}}