{"openapi":"3.0.3","info":{"title":"HostDirect public catalogue API","version":"1.5.0","description":"Read-only public hosting, email and storage comparisons. No API key, account or payment. Use original source dates and distinguish historical prices. GET requests have no side effects and may be retried with backoff. Public anonymous access: see /auth.md. No registration, credential issuance or writes. Existing v1 fields retain their meaning; breaking changes require a new API version. All operations are read-only and idempotent. No Idempotency-Key header is needed or used. Anonymous REST and MCP share 120 requests per connection IP per fixed minute; respect RateLimit-Remaining and Retry-After. HostDirect access costs EUR 0; see /pricing/.","contact":{"name":"HostDirect redactie","url":"https://hostdirect.nl/contact/"}},"servers":[{"url":"https://hostdirect.nl"}],"security":[],"externalDocs":{"description":"API documentation, examples and error handling","url":"https://hostdirect.nl/docs/"},"paths":{"/api/catalog":{"get":{"operationId":"getPublicCatalogue","summary":"Read providers, selected package prices, source evidence and public page excerpts","description":"No parameters or request body are required. Fetch once per task and select relevant providers locally. Retain status, checked and source URLs in summaries. GET is read-only and idempotent. No authentication or registration. Read-only and safe to retry; no write endpoints. Without parameters returns the complete catalogue. Optional limit and offset slice both providers and pages independently; counts remain full totals. Follow pagination.next until null, even if one array is empty. Ordering: providers by name; pages by ID. Live catalogue changes between requests may shift offsets; use the unpaged snapshot for an exact complete export.","tags":["Public catalogue"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Optional page size for each array. Omit both parameters for the complete catalogue. Defaults to 50 when only offset is supplied.","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"offset","in":"query","required":false,"description":"Number of records to skip in each array. Defaults to 0.","schema":{"type":"integer","minimum":0,"maximum":9999999}}],"security":[],"responses":{"200":{"description":"Public catalogue. Counts are dynamic. Monetary values are source cents with an explicit VAT basis.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Catalogue"}}},"headers":{"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"404":{"description":"Not found or public export disabled. Correct the URL; do not retry unchanged.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error404"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_not_found","status":404,"detail":"Unknown API route.","code":"hd_not_found","message":"Unknown API route.","data":{"status":404,"retryable":false,"retryAfterSeconds":null},"documentation":"https://hostdirect.nl/docs/#errors"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error404"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_not_found","status":404,"detail":"Unknown API route.","code":"hd_not_found","message":"Unknown API route.","data":{"status":404,"retryable":false,"retryAfterSeconds":null},"documentation":"https://hostdirect.nl/docs/#errors"}}},"headers":{"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"default":{"description":"Application error. Hosting/proxy errors may instead be HTML or empty; check HTTP status and Content-Type first.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ErrorDefault"}},"application/json":{"schema":{"$ref":"#/components/schemas/ErrorDefault"}}},"headers":{"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"405":{"description":"Read-only API: use GET or HEAD.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error405"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_method_not_allowed","status":405,"detail":"Read-only API. Use GET or HEAD.","code":"hd_method_not_allowed","message":"Read-only API. Use GET or HEAD.","data":{"status":405,"retryable":false,"retryAfterSeconds":null},"documentation":"https://hostdirect.nl/docs/#errors"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error405"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_method_not_allowed","status":405,"detail":"Read-only API. Use GET or HEAD.","code":"hd_method_not_allowed","message":"Read-only API. Use GET or HEAD.","data":{"status":405,"retryable":false,"retryAfterSeconds":null},"documentation":"https://hostdirect.nl/docs/#errors"}}},"headers":{"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"503":{"description":"Temporarily unavailable.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error503"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_unavailable","status":503,"detail":"Catalogue temporarily unavailable.","code":"hd_unavailable","message":"Catalogue temporarily unavailable.","data":{"status":503,"retryable":true,"retryAfterSeconds":5},"documentation":"https://hostdirect.nl/docs/#errors"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error503"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_unavailable","status":503,"detail":"Catalogue temporarily unavailable.","code":"hd_unavailable","message":"Catalogue temporarily unavailable.","data":{"status":503,"retryable":true,"retryAfterSeconds":5},"documentation":"https://hostdirect.nl/docs/#errors"}}},"headers":{"Retry-After":{"description":"Wait this many seconds; retry read requests at most twice. Infrastructure may supply its own delay.","schema":{"type":"integer","minimum":0}},"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"400":{"description":"Invalid pagination parameters. Correct them before retrying.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error400"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_invalid_parameter","status":400,"detail":"Invalid pagination parameters.","code":"hd_invalid_parameter","message":"Invalid pagination parameters.","data":{"status":400,"retryable":false,"retryAfterSeconds":null},"documentation":"https://hostdirect.nl/docs/#errors"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error400"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_invalid_parameter","status":400,"detail":"Invalid pagination parameters.","code":"hd_invalid_parameter","message":"Invalid pagination parameters.","data":{"status":400,"retryable":false,"retryAfterSeconds":null},"documentation":"https://hostdirect.nl/docs/#errors"}}},"headers":{"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"429":{"description":"Rate limited. Respect Retry-After.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error429"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_rate_limited","status":429,"detail":"Too many requests.","code":"hd_rate_limited","message":"Too many requests.","data":{"status":429,"retryable":true,"retryAfterSeconds":5},"documentation":"https://hostdirect.nl/docs/#errors"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error429"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_rate_limited","status":429,"detail":"Too many requests.","code":"hd_rate_limited","message":"Too many requests.","data":{"status":429,"retryable":true,"retryAfterSeconds":5},"documentation":"https://hostdirect.nl/docs/#errors"}}},"headers":{"Retry-After":{"description":"Wait this many seconds; retry read requests at most twice. Infrastructure may supply its own delay.","schema":{"type":"integer","minimum":0}},"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"500":{"description":"Unexpected application error. Report persistent failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error500"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error500"}}},"headers":{"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"502":{"description":"Temporary upstream failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error502"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error502"}}},"headers":{"Retry-After":{"description":"Wait this many seconds; retry read requests at most twice. Infrastructure may supply its own delay.","schema":{"type":"integer","minimum":0}},"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"504":{"description":"Upstream timeout.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error504"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error504"}}},"headers":{"Retry-After":{"description":"Wait this many seconds; retry read requests at most twice. Infrastructure may supply its own delay.","schema":{"type":"integer","minimum":0}},"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}}}}},"/api":{"get":{"operationId":"getPublicCatalogueAtApiRoot","summary":"Read providers, selected package prices, source evidence and public page excerpts","description":"No parameters or request body are required. Fetch once per task and select relevant providers locally. Retain status, checked and source URLs in summaries. GET is read-only and idempotent. No authentication or registration. Read-only and safe to retry; no write endpoints. Without parameters returns the complete catalogue. Optional limit and offset slice both providers and pages independently; counts remain full totals. Follow pagination.next until null, even if one array is empty. Ordering: providers by name; pages by ID. Live catalogue changes between requests may shift offsets; use the unpaged snapshot for an exact complete export.","tags":["Public catalogue"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Optional page size for each array. Omit both parameters for the complete catalogue. Defaults to 50 when only offset is supplied.","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"offset","in":"query","required":false,"description":"Number of records to skip in each array. Defaults to 0.","schema":{"type":"integer","minimum":0,"maximum":9999999}}],"security":[],"responses":{"200":{"description":"Public catalogue. Counts are dynamic. Monetary values are source cents with an explicit VAT basis.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Catalogue"}}},"headers":{"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"404":{"description":"Not found or public export disabled. Correct the URL; do not retry unchanged.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error404"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_not_found","status":404,"detail":"Unknown API route.","code":"hd_not_found","message":"Unknown API route.","data":{"status":404,"retryable":false,"retryAfterSeconds":null},"documentation":"https://hostdirect.nl/docs/#errors"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error404"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_not_found","status":404,"detail":"Unknown API route.","code":"hd_not_found","message":"Unknown API route.","data":{"status":404,"retryable":false,"retryAfterSeconds":null},"documentation":"https://hostdirect.nl/docs/#errors"}}},"headers":{"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"default":{"description":"Application error. Hosting/proxy errors may instead be HTML or empty; check HTTP status and Content-Type first.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ErrorDefault"}},"application/json":{"schema":{"$ref":"#/components/schemas/ErrorDefault"}}},"headers":{"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"405":{"description":"Read-only API: use GET or HEAD.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error405"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_method_not_allowed","status":405,"detail":"Read-only API. Use GET or HEAD.","code":"hd_method_not_allowed","message":"Read-only API. Use GET or HEAD.","data":{"status":405,"retryable":false,"retryAfterSeconds":null},"documentation":"https://hostdirect.nl/docs/#errors"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error405"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_method_not_allowed","status":405,"detail":"Read-only API. Use GET or HEAD.","code":"hd_method_not_allowed","message":"Read-only API. Use GET or HEAD.","data":{"status":405,"retryable":false,"retryAfterSeconds":null},"documentation":"https://hostdirect.nl/docs/#errors"}}},"headers":{"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"503":{"description":"Temporarily unavailable.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error503"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_unavailable","status":503,"detail":"Catalogue temporarily unavailable.","code":"hd_unavailable","message":"Catalogue temporarily unavailable.","data":{"status":503,"retryable":true,"retryAfterSeconds":5},"documentation":"https://hostdirect.nl/docs/#errors"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error503"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_unavailable","status":503,"detail":"Catalogue temporarily unavailable.","code":"hd_unavailable","message":"Catalogue temporarily unavailable.","data":{"status":503,"retryable":true,"retryAfterSeconds":5},"documentation":"https://hostdirect.nl/docs/#errors"}}},"headers":{"Retry-After":{"description":"Wait this many seconds; retry read requests at most twice. Infrastructure may supply its own delay.","schema":{"type":"integer","minimum":0}},"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"400":{"description":"Invalid pagination parameters. Correct them before retrying.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error400"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_invalid_parameter","status":400,"detail":"Invalid pagination parameters.","code":"hd_invalid_parameter","message":"Invalid pagination parameters.","data":{"status":400,"retryable":false,"retryAfterSeconds":null},"documentation":"https://hostdirect.nl/docs/#errors"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error400"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_invalid_parameter","status":400,"detail":"Invalid pagination parameters.","code":"hd_invalid_parameter","message":"Invalid pagination parameters.","data":{"status":400,"retryable":false,"retryAfterSeconds":null},"documentation":"https://hostdirect.nl/docs/#errors"}}},"headers":{"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"429":{"description":"Rate limited. Respect Retry-After.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error429"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_rate_limited","status":429,"detail":"Too many requests.","code":"hd_rate_limited","message":"Too many requests.","data":{"status":429,"retryable":true,"retryAfterSeconds":5},"documentation":"https://hostdirect.nl/docs/#errors"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error429"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_rate_limited","status":429,"detail":"Too many requests.","code":"hd_rate_limited","message":"Too many requests.","data":{"status":429,"retryable":true,"retryAfterSeconds":5},"documentation":"https://hostdirect.nl/docs/#errors"}}},"headers":{"Retry-After":{"description":"Wait this many seconds; retry read requests at most twice. Infrastructure may supply its own delay.","schema":{"type":"integer","minimum":0}},"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"500":{"description":"Unexpected application error. Report persistent failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error500"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error500"}}},"headers":{"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"502":{"description":"Temporary upstream failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error502"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error502"}}},"headers":{"Retry-After":{"description":"Wait this many seconds; retry read requests at most twice. Infrastructure may supply its own delay.","schema":{"type":"integer","minimum":0}},"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"504":{"description":"Upstream timeout.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error504"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error504"}}},"headers":{"Retry-After":{"description":"Wait this many seconds; retry read requests at most twice. Infrastructure may supply its own delay.","schema":{"type":"integer","minimum":0}},"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}}}}},"/wp-json/hostdirect/v1/catalog":{"get":{"operationId":"getHostDirectCatalogue","summary":"Read providers, selected package prices, source evidence and public page excerpts","description":"No parameters or request body are required. Fetch once per task and select relevant providers locally. Retain status, checked and source URLs in summaries. GET is read-only and idempotent. No authentication or registration. Read-only and safe to retry; no write endpoints. Without parameters returns the complete catalogue. Optional limit and offset slice both providers and pages independently; counts remain full totals. Follow pagination.next until null, even if one array is empty. Ordering: providers by name; pages by ID. Live catalogue changes between requests may shift offsets; use the unpaged snapshot for an exact complete export.","tags":["Public catalogue"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Optional page size for each array. Omit both parameters for the complete catalogue. Defaults to 50 when only offset is supplied.","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"offset","in":"query","required":false,"description":"Number of records to skip in each array. Defaults to 0.","schema":{"type":"integer","minimum":0,"maximum":9999999}}],"security":[],"responses":{"200":{"description":"Public catalogue. Counts are dynamic. Monetary values are source cents with an explicit VAT basis.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Catalogue"}}},"headers":{"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"404":{"description":"Not found or public export disabled. Correct the URL; do not retry unchanged.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error404"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_not_found","status":404,"detail":"Unknown API route.","code":"hd_not_found","message":"Unknown API route.","data":{"status":404,"retryable":false,"retryAfterSeconds":null},"documentation":"https://hostdirect.nl/docs/#errors"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error404"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_not_found","status":404,"detail":"Unknown API route.","code":"hd_not_found","message":"Unknown API route.","data":{"status":404,"retryable":false,"retryAfterSeconds":null},"documentation":"https://hostdirect.nl/docs/#errors"}}},"headers":{"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"default":{"description":"Application error. Hosting/proxy errors may instead be HTML or empty; check HTTP status and Content-Type first.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ErrorDefault"}},"application/json":{"schema":{"$ref":"#/components/schemas/ErrorDefault"}}},"headers":{"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"400":{"description":"Invalid pagination parameters. Correct them before retrying.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error400"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_invalid_parameter","status":400,"detail":"Invalid pagination parameters.","code":"hd_invalid_parameter","message":"Invalid pagination parameters.","data":{"status":400,"retryable":false,"retryAfterSeconds":null},"documentation":"https://hostdirect.nl/docs/#errors"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error400"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_invalid_parameter","status":400,"detail":"Invalid pagination parameters.","code":"hd_invalid_parameter","message":"Invalid pagination parameters.","data":{"status":400,"retryable":false,"retryAfterSeconds":null},"documentation":"https://hostdirect.nl/docs/#errors"}}},"headers":{"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"405":{"description":"Read-only API: use GET or HEAD.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error405"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_method_not_allowed","status":405,"detail":"Read-only API. Use GET or HEAD.","code":"hd_method_not_allowed","message":"Read-only API. Use GET or HEAD.","data":{"status":405,"retryable":false,"retryAfterSeconds":null},"documentation":"https://hostdirect.nl/docs/#errors"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error405"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_method_not_allowed","status":405,"detail":"Read-only API. Use GET or HEAD.","code":"hd_method_not_allowed","message":"Read-only API. Use GET or HEAD.","data":{"status":405,"retryable":false,"retryAfterSeconds":null},"documentation":"https://hostdirect.nl/docs/#errors"}}},"headers":{"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"429":{"description":"Rate limited. Respect Retry-After.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error429"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_rate_limited","status":429,"detail":"Too many requests.","code":"hd_rate_limited","message":"Too many requests.","data":{"status":429,"retryable":true,"retryAfterSeconds":5},"documentation":"https://hostdirect.nl/docs/#errors"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error429"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_rate_limited","status":429,"detail":"Too many requests.","code":"hd_rate_limited","message":"Too many requests.","data":{"status":429,"retryable":true,"retryAfterSeconds":5},"documentation":"https://hostdirect.nl/docs/#errors"}}},"headers":{"Retry-After":{"description":"Wait this many seconds; retry read requests at most twice. Infrastructure may supply its own delay.","schema":{"type":"integer","minimum":0}},"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"500":{"description":"Unexpected application error. Report persistent failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error500"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error500"}}},"headers":{"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"502":{"description":"Temporary upstream failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error502"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error502"}}},"headers":{"Retry-After":{"description":"Wait this many seconds; retry read requests at most twice. Infrastructure may supply its own delay.","schema":{"type":"integer","minimum":0}},"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"503":{"description":"Temporarily unavailable.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error503"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_unavailable","status":503,"detail":"Catalogue temporarily unavailable.","code":"hd_unavailable","message":"Catalogue temporarily unavailable.","data":{"status":503,"retryable":true,"retryAfterSeconds":5},"documentation":"https://hostdirect.nl/docs/#errors"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error503"},"example":{"type":"https://hostdirect.nl/docs/#errors","title":"hd_unavailable","status":503,"detail":"Catalogue temporarily unavailable.","code":"hd_unavailable","message":"Catalogue temporarily unavailable.","data":{"status":503,"retryable":true,"retryAfterSeconds":5},"documentation":"https://hostdirect.nl/docs/#errors"}}},"headers":{"Retry-After":{"description":"Wait this many seconds; retry read requests at most twice. Infrastructure may supply its own delay.","schema":{"type":"integer","minimum":0}},"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}},"504":{"description":"Upstream timeout.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Error504"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error504"}}},"headers":{"Retry-After":{"description":"Wait this many seconds; retry read requests at most twice. Infrastructure may supply its own delay.","schema":{"type":"integer","minimum":0}},"RateLimit-Limit":{"description":"120 requests per fixed minute, shared across REST and MCP.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining for this connection IP.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the fixed minute ends.","schema":{"type":"integer","minimum":0}}}}}}}},"components":{"schemas":{"Catalogue":{"type":"object","description":"","properties":{"schemaVersion":{"type":"string","description":"Export contract version."},"generatedAt":{"type":"string","description":"Export time only; never a new price or evidence review.","format":"date-time"},"language":{"type":"string","description":"Language of editorial data."},"publisher":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"url":{"type":"string","description":"Absolute public URL.","format":"uri"},"editorial":{"type":"string","description":"Absolute public URL.","format":"uri"},"author":{"type":"object","description":"","properties":{"@type":{"type":"string","description":""},"@id":{"type":"string","description":"Absolute public URL.","format":"uri"},"name":{"type":"string","description":""},"url":{"type":"string","description":"Absolute public URL.","format":"uri"},"sameAs":{"type":"array","items":{"type":"string","description":"Absolute public URL.","format":"uri"},"description":""}},"required":["@type","@id","name","url"],"additionalProperties":false}},"required":["name","url","editorial","author"],"additionalProperties":false},"purpose":{"type":"string","description":""},"limitations":{"type":"array","items":{"type":"string","description":""},"description":""},"disclosure":{"type":"string","description":"Affiliate disclosure."},"access":{"type":"object","description":"","properties":{"authentication":{"type":"string","description":"No key or sign-in required."},"methods":{"type":"array","items":{"type":"string","description":"","enum":["GET","HEAD"]},"description":""},"writes":{"type":"boolean","description":""},"registrationRequired":{"type":"boolean","description":""}},"required":["authentication","methods","writes","registrationRequired"],"additionalProperties":false},"links":{"type":"object","description":"","properties":{"documentation":{"type":"string","description":"Absolute public URL.","format":"uri"},"json":{"type":"string","description":"Absolute public URL.","format":"uri"},"api":{"type":"string","description":"Absolute public URL.","format":"uri"},"openapi":{"type":"string","description":"Absolute public URL.","format":"uri"},"llms":{"type":"string","description":"Absolute public URL.","format":"uri"},"entitymap":{"type":"string","description":"Absolute public URL.","format":"uri"},"sitemap":{"type":"string","description":"Absolute public URL.","format":"uri"},"directory":{"type":"string","description":"Absolute public URL.","format":"uri"},"comparison":{"type":"string","description":"Absolute public URL.","format":"uri"},"methodology":{"type":"string","description":"Absolute public URL.","format":"uri"},"affiliate":{"type":"string","description":"Absolute public URL.","format":"uri"}},"required":["documentation","json","api","openapi","llms","entitymap","sitemap","directory","comparison","methodology","affiliate"],"additionalProperties":false},"counts":{"type":"object","description":"","properties":{"providers":{"type":"integer","minimum":0,"description":""},"pages":{"type":"integer","minimum":0,"description":""}},"required":["providers","pages"],"additionalProperties":false},"providers":{"type":"array","items":{"type":"object","description":"","properties":{"id":{"type":"string","description":"Stable provider ID."},"name":{"type":"string","description":"Provider name."},"package":{"type":"string","description":"Exact selected package."},"category":{"type":"string","description":"Service category."},"description":{"type":"string","description":"Public summary."},"profile":{"type":"string","description":"Absolute public URL.","format":"uri"},"price":{"type":"object","description":"","properties":{"label":{"type":"string","description":"Public displayed price."},"renewalLabel":{"type":"string","description":"Public renewal description."},"conditions":{"type":"string","description":"Displayed price conditions, including historic status."},"term":{"type":"string","description":"Contract and billing conditions."},"status":{"type":"string","description":"checked: approved within validity rules; historical: last approved basis, not confirmed current; unknown: no publishable basis.","enum":["checked","historical","unknown"]},"checked":{"type":"string","description":"Original source review date; not export time.","format":"date","nullable":true},"offer":{"type":"object","description":"Selected price basis only; other contract options may be explained on the profile.","properties":{"currency":{"type":"string","description":"Currency of source amounts.","enum":["EUR"]},"kind":{"type":"string","description":"Products with different billing models are not interchangeable.","enum":["subscription","usage","free"]},"vat":{"type":"string","description":"gross: VAT included; net21: exclude 21 percent VAT; assumed_gross: inclusion assumed, not confirmed.","enum":["gross","net21","assumed_gross","unknown"]},"introCents":{"type":"integer","minimum":0,"description":"Source monthly or usage-unit introductory amount in eurocents, before VAT conversion."},"introMonths":{"type":"integer","minimum":0,"description":"Months at the introductory rate; zero means no introductory period."},"regularCents":{"type":"integer","minimum":0,"description":"Source monthly or usage-unit renewal amount in eurocents; not a future price guarantee."},"billingMonths":{"type":"integer","minimum":0,"description":"Billing interval in months, not necessarily the minimum contract duration."},"setupCents":{"type":"integer","minimum":0,"description":"One-time source setup fee; null means unconfirmed, not zero.","nullable":true},"promo":{"type":"boolean","description":"Whether the recorded offer is promotional."},"promoEnd":{"type":"string","description":"Recorded promotion end date YYYY-MM-DD, or empty if not specified.","pattern":"^(\\d{4}-\\d{2}-\\d{2})?$"},"term":{"type":"string","description":"Contract, prepayment and renewal conditions."},"conditions":{"type":"string","description":"Scope, billing unit, assumptions and limitations."},"extras":{"type":"array","items":{"type":"string","description":"Excluded or unconfirmed additional cost."},"description":""}},"required":["currency","kind","vat","introCents","introMonths","regularCents","billingMonths","setupCents","promo","promoEnd","term","conditions","extras"],"additionalProperties":false,"nullable":true},"sources":{"type":"array","items":{"type":"string","description":"Absolute public URL.","format":"uri"},"description":"Official evidence for the selected price basis."}},"required":["label","renewalLabel","conditions","term","status","checked","offer","sources"],"additionalProperties":false},"location":{"type":"object","description":"","properties":{"region":{"type":"string","description":"eu, eu-ch or unknown; Switzerland is separate from the EU."},"documented":{"type":"boolean","description":"Primary location evidence only, not proof for all subprocessors or backups."},"primary":{"type":"string","description":"Primary data location."},"backup":{"type":"string","description":"Backup evidence and uncertainties."},"limitations":{"type":"string","description":"Limits of the location evidence."},"passport":{"type":"string","description":"Absolute public URL.","format":"uri"}},"required":["region","documented","primary","backup","limitations","passport"],"additionalProperties":false},"suitable":{"type":"array","items":{"type":"object","description":"","properties":{"text":{"type":"string","description":"Public editorial claim."},"refs":{"type":"array","items":{"type":"string","description":"ID in this provider sources array."},"description":""}},"required":["text","refs"],"additionalProperties":false},"description":""},"unsuitable":{"type":"array","items":{"type":"object","description":"","properties":{"text":{"type":"string","description":"Public editorial claim."},"refs":{"type":"array","items":{"type":"string","description":"ID in this provider sources array."},"description":""}},"required":["text","refs"],"additionalProperties":false},"description":""},"specifications":{"type":"array","items":{"type":"object","description":"","properties":{"text":{"type":"string","description":"Public editorial claim."},"refs":{"type":"array","items":{"type":"string","description":"ID in this provider sources array."},"description":""}},"required":["text","refs"],"additionalProperties":false},"description":""},"migration":{"type":"array","items":{"type":"object","description":"","properties":{"text":{"type":"string","description":"Public editorial claim."},"refs":{"type":"array","items":{"type":"string","description":"ID in this provider sources array."},"description":""}},"required":["text","refs"],"additionalProperties":false},"description":""},"sources":{"type":"array","items":{"type":"object","description":"","properties":{"id":{"type":"string","description":"Stable source reference."},"label":{"type":"string","description":"Source title."},"url":{"type":"string","description":"Absolute public URL.","format":"uri"},"checked":{"type":"string","description":"Original source review date; not export time.","format":"date"}},"required":["id","label","url","checked"],"additionalProperties":false},"description":""},"purchase":{"type":"object","description":"","properties":{"profile":{"type":"string","description":"Absolute public URL.","format":"uri"},"providerUrl":{"type":"string","description":"Absolute public URL.","format":"uri"},"affiliateAvailable":{"type":"boolean","description":"Profile may contain a disclosed affiliate link."},"checkout":{"type":"string","description":"Orders and payments occur with the provider, not HostDirect."}},"required":["profile","providerUrl","affiliateAvailable","checkout"],"additionalProperties":false}},"required":["id","name","package","category","description","profile","price","location","suitable","unsuitable","specifications","migration","sources","purchase"],"additionalProperties":false},"description":"Alphabetical public provider profiles only."},"pages":{"type":"array","items":{"type":"object","description":"","properties":{"id":{"type":"string","description":"Public publication ID."},"title":{"type":"string","description":""},"url":{"type":"string","description":"Absolute public URL.","format":"uri"},"summary":{"type":"string","description":""},"excerpts":{"type":"array","items":{"type":"string","description":""},"description":"Selected public passages, not the complete rendered page."},"group":{"type":"string","description":""},"modified":{"type":"string","description":"Publication modification time, not external source review.","format":"date-time"}},"required":["id","title","url","summary","excerpts","group","modified"],"additionalProperties":false},"description":"Published, unprotected and non-excluded pages and posts only."},"pagination":{"type":"object","additionalProperties":false,"required":["limit","offset","next_offset","has_more","next"],"properties":{"limit":{"type":"integer","minimum":1,"maximum":100},"offset":{"type":"integer","minimum":0},"next_offset":{"type":"integer","nullable":true,"minimum":0},"has_more":{"type":"boolean"},"next":{"type":"string","format":"uri","nullable":true}}}},"required":["schemaVersion","generatedAt","language","publisher","purpose","limitations","disclosure","access","links","counts","providers","pages"],"additionalProperties":false},"ApiError":{"type":"object","additionalProperties":false,"required":["code","message","data","documentation","type","title","status","detail"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"documentation":{"type":"string","format":"uri"},"data":{"type":"object","additionalProperties":false,"required":["status","retryable","retryAfterSeconds"],"properties":{"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"retryAfterSeconds":{"type":"integer","nullable":true,"minimum":0}}},"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"}}},"Error404":{"type":"object","additionalProperties":false,"required":["code","message","data","documentation","type","title","status","detail"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"documentation":{"type":"string","format":"uri"},"data":{"type":"object","additionalProperties":false,"required":["status","retryable","retryAfterSeconds"],"properties":{"status":{"type":"integer","minimum":400,"maximum":599,"enum":[404]},"retryable":{"type":"boolean"},"retryAfterSeconds":{"type":"integer","nullable":true,"minimum":0}}},"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599,"enum":[404]},"detail":{"type":"string"}}},"ErrorDefault":{"type":"object","additionalProperties":false,"required":["code","message","data","documentation","type","title","status","detail"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"documentation":{"type":"string","format":"uri"},"data":{"type":"object","additionalProperties":false,"required":["status","retryable","retryAfterSeconds"],"properties":{"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"retryAfterSeconds":{"type":"integer","nullable":true,"minimum":0}}},"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"}}},"Error405":{"type":"object","additionalProperties":false,"required":["code","message","data","documentation","type","title","status","detail"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"documentation":{"type":"string","format":"uri"},"data":{"type":"object","additionalProperties":false,"required":["status","retryable","retryAfterSeconds"],"properties":{"status":{"type":"integer","minimum":400,"maximum":599,"enum":[405]},"retryable":{"type":"boolean"},"retryAfterSeconds":{"type":"integer","nullable":true,"minimum":0}}},"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599,"enum":[405]},"detail":{"type":"string"}}},"Error503":{"type":"object","additionalProperties":false,"required":["code","message","data","documentation","type","title","status","detail"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"documentation":{"type":"string","format":"uri"},"data":{"type":"object","additionalProperties":false,"required":["status","retryable","retryAfterSeconds"],"properties":{"status":{"type":"integer","minimum":400,"maximum":599,"enum":[503]},"retryable":{"type":"boolean"},"retryAfterSeconds":{"type":"integer","nullable":true,"minimum":0}}},"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599,"enum":[503]},"detail":{"type":"string"}}},"Error400":{"type":"object","additionalProperties":false,"required":["code","message","data","documentation","type","title","status","detail"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"documentation":{"type":"string","format":"uri"},"data":{"type":"object","additionalProperties":false,"required":["status","retryable","retryAfterSeconds"],"properties":{"status":{"type":"integer","minimum":400,"maximum":599,"enum":[400]},"retryable":{"type":"boolean"},"retryAfterSeconds":{"type":"integer","nullable":true,"minimum":0}}},"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599,"enum":[400]},"detail":{"type":"string"}}},"Error429":{"type":"object","additionalProperties":false,"required":["code","message","data","documentation","type","title","status","detail"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"documentation":{"type":"string","format":"uri"},"data":{"type":"object","additionalProperties":false,"required":["status","retryable","retryAfterSeconds"],"properties":{"status":{"type":"integer","minimum":400,"maximum":599,"enum":[429]},"retryable":{"type":"boolean"},"retryAfterSeconds":{"type":"integer","nullable":true,"minimum":0}}},"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599,"enum":[429]},"detail":{"type":"string"}}},"Error500":{"type":"object","additionalProperties":false,"required":["code","message","data","documentation","type","title","status","detail"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"documentation":{"type":"string","format":"uri"},"data":{"type":"object","additionalProperties":false,"required":["status","retryable","retryAfterSeconds"],"properties":{"status":{"type":"integer","minimum":400,"maximum":599,"enum":[500]},"retryable":{"type":"boolean"},"retryAfterSeconds":{"type":"integer","nullable":true,"minimum":0}}},"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599,"enum":[500]},"detail":{"type":"string"}}},"Error502":{"type":"object","additionalProperties":false,"required":["code","message","data","documentation","type","title","status","detail"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"documentation":{"type":"string","format":"uri"},"data":{"type":"object","additionalProperties":false,"required":["status","retryable","retryAfterSeconds"],"properties":{"status":{"type":"integer","minimum":400,"maximum":599,"enum":[502]},"retryable":{"type":"boolean"},"retryAfterSeconds":{"type":"integer","nullable":true,"minimum":0}}},"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599,"enum":[502]},"detail":{"type":"string"}}},"Error504":{"type":"object","additionalProperties":false,"required":["code","message","data","documentation","type","title","status","detail"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"documentation":{"type":"string","format":"uri"},"data":{"type":"object","additionalProperties":false,"required":["status","retryable","retryAfterSeconds"],"properties":{"status":{"type":"integer","minimum":400,"maximum":599,"enum":[504]},"retryable":{"type":"boolean"},"retryAfterSeconds":{"type":"integer","nullable":true,"minimum":0}}},"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599,"enum":[504]},"detail":{"type":"string"}}}}}}