{
    "openapi": "3.1.0",
    "info": {
        "title": "DDQ public API",
        "description": "Read-only structured information about DDQ B.V. The MCP endpoint is documented separately through its server card.",
        "version": "1.1.0"
    },
    "externalDocs": {
        "description": "Developer documentation",
        "url": "https://ddq.nl/developers/"
    },
    "servers": [
        {
            "url": "https://ddq.nl"
        }
    ],
    "paths": {
        "/api/company.json": {
            "get": {
                "operationId": "getCompanyInformation",
                "summary": "Get structured DDQ company information",
                "responses": {
                    "200": {
                        "description": "Company information",
                        "headers": {
                            "RateLimit-Policy": {
                                "$ref": "#/components/headers/RateLimitPolicy"
                            },
                            "RateLimit": {
                                "$ref": "#/components/headers/RateLimit"
                            },
                            "RateLimit-Limit": {
                                "$ref": "#/components/headers/RateLimitLimit"
                            },
                            "RateLimit-Remaining": {
                                "$ref": "#/components/headers/RateLimitRemaining"
                            },
                            "RateLimit-Reset": {
                                "$ref": "#/components/headers/RateLimitReset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": true
                                }
                            }
                        }
                    },
                    "405": {
                        "description": "Method not allowed",
                        "headers": {
                            "RateLimit-Policy": {
                                "$ref": "#/components/headers/RateLimitPolicy"
                            },
                            "RateLimit": {
                                "$ref": "#/components/headers/RateLimit"
                            },
                            "RateLimit-Limit": {
                                "$ref": "#/components/headers/RateLimitLimit"
                            },
                            "RateLimit-Remaining": {
                                "$ref": "#/components/headers/RateLimitRemaining"
                            },
                            "RateLimit-Reset": {
                                "$ref": "#/components/headers/RateLimitReset"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Hourly request quota exhausted",
                        "headers": {
                            "RateLimit-Policy": {
                                "$ref": "#/components/headers/RateLimitPolicy"
                            },
                            "RateLimit": {
                                "$ref": "#/components/headers/RateLimit"
                            },
                            "RateLimit-Limit": {
                                "$ref": "#/components/headers/RateLimitLimit"
                            },
                            "RateLimit-Remaining": {
                                "$ref": "#/components/headers/RateLimitRemaining"
                            },
                            "RateLimit-Reset": {
                                "$ref": "#/components/headers/RateLimitReset"
                            },
                            "Retry-After": {
                                "$ref": "#/components/headers/RetryAfter"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/status.json": {
            "get": {
                "operationId": "getCloudServiceStatus",
                "summary": "Get the current DDQ Cloud service status",
                "responses": {
                    "200": {
                        "description": "Service status",
                        "headers": {
                            "RateLimit-Policy": {
                                "$ref": "#/components/headers/RateLimitPolicy"
                            },
                            "RateLimit": {
                                "$ref": "#/components/headers/RateLimit"
                            },
                            "RateLimit-Limit": {
                                "$ref": "#/components/headers/RateLimitLimit"
                            },
                            "RateLimit-Remaining": {
                                "$ref": "#/components/headers/RateLimitRemaining"
                            },
                            "RateLimit-Reset": {
                                "$ref": "#/components/headers/RateLimitReset"
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "additionalProperties": true
                                }
                            }
                        }
                    },
                    "405": {
                        "description": "Method not allowed",
                        "headers": {
                            "RateLimit-Policy": {
                                "$ref": "#/components/headers/RateLimitPolicy"
                            },
                            "RateLimit": {
                                "$ref": "#/components/headers/RateLimit"
                            },
                            "RateLimit-Limit": {
                                "$ref": "#/components/headers/RateLimitLimit"
                            },
                            "RateLimit-Remaining": {
                                "$ref": "#/components/headers/RateLimitRemaining"
                            },
                            "RateLimit-Reset": {
                                "$ref": "#/components/headers/RateLimitReset"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Hourly request quota exhausted",
                        "headers": {
                            "RateLimit-Policy": {
                                "$ref": "#/components/headers/RateLimitPolicy"
                            },
                            "RateLimit": {
                                "$ref": "#/components/headers/RateLimit"
                            },
                            "RateLimit-Limit": {
                                "$ref": "#/components/headers/RateLimitLimit"
                            },
                            "RateLimit-Remaining": {
                                "$ref": "#/components/headers/RateLimitRemaining"
                            },
                            "RateLimit-Reset": {
                                "$ref": "#/components/headers/RateLimitReset"
                            },
                            "Retry-After": {
                                "$ref": "#/components/headers/RetryAfter"
                            }
                        },
                        "content": {
                            "application/problem+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Problem"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "components": {
        "headers": {
            "RateLimitPolicy": {
                "description": "Quota policy and window.",
                "schema": {
                    "type": "string"
                }
            },
            "RateLimit": {
                "description": "Remaining quota and seconds until reset.",
                "schema": {
                    "type": "string"
                }
            },
            "RateLimitLimit": {
                "description": "Maximum requests in the current window.",
                "schema": {
                    "type": "integer"
                }
            },
            "RateLimitRemaining": {
                "description": "Requests remaining in the current window.",
                "schema": {
                    "type": "integer"
                }
            },
            "RateLimitReset": {
                "description": "Seconds until the current window resets.",
                "schema": {
                    "type": "integer"
                }
            },
            "RetryAfter": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                    "type": "integer"
                }
            }
        },
        "schemas": {
            "Problem": {
                "type": "object",
                "required": [
                    "type",
                    "title",
                    "status",
                    "detail",
                    "instance"
                ],
                "properties": {
                    "type": {
                        "type": "string",
                        "format": "uri-reference"
                    },
                    "title": {
                        "type": "string"
                    },
                    "status": {
                        "type": "integer",
                        "minimum": 400,
                        "maximum": 599
                    },
                    "detail": {
                        "type": "string"
                    },
                    "instance": {
                        "type": "string",
                        "format": "uri-reference"
                    }
                }
            }
        }
    }
}
