{
    "openapi": "3.1.0",
    "info": {
        "title": "HostDir Data API",
        "version": "1.0.0",
        "description": "Read-only JSON access to HostDir reference data: hosting providers, data centers, domain extensions, and news articles. Editorial and reference content is licensed under CC BY 4.0.",
        "license": {
            "name": "CC BY 4.0",
            "url": "https://creativecommons.org/licenses/by/4.0/"
        },
        "contact": {
            "url": "https://hostdir.net/contact"
        }
    },
    "servers": [
        {
            "url": "https://hostdir.net"
        }
    ],
    "paths": {
        "/data/providers.json": {
            "get": {
                "summary": "Providers index",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated JSON listing"
                    }
                }
            }
        },
        "/data/providers/{slug}.json": {
            "get": {
                "summary": "Provider detail",
                "parameters": [
                    {
                        "name": "slug",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "JSON-LD schema.org record"
                    },
                    "404": {
                        "description": "Not found"
                    }
                }
            }
        },
        "/data/datacenters.json": {
            "get": {
                "summary": "Data centers index",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated JSON listing"
                    }
                }
            }
        },
        "/data/datacenters/{slug}.json": {
            "get": {
                "summary": "Data center detail",
                "parameters": [
                    {
                        "name": "slug",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "JSON-LD schema.org record"
                    },
                    "404": {
                        "description": "Not found"
                    }
                }
            }
        },
        "/data/domain-extensions.json": {
            "get": {
                "summary": "TLDs index",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated JSON listing"
                    }
                }
            }
        },
        "/data/domain-extensions/{slug}.json": {
            "get": {
                "summary": "TLD detail",
                "parameters": [
                    {
                        "name": "slug",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "JSON-LD schema.org record"
                    },
                    "404": {
                        "description": "Not found"
                    }
                }
            }
        },
        "/data/news.json": {
            "get": {
                "summary": "News articles index",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated JSON listing"
                    }
                }
            }
        },
        "/data/blog/{slug}.json": {
            "get": {
                "summary": "News article detail",
                "parameters": [
                    {
                        "name": "slug",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "JSON-LD schema.org record"
                    },
                    "404": {
                        "description": "Not found"
                    }
                }
            }
        },
        "/news.xml": {
            "get": {
                "summary": "News desk Atom feed",
                "responses": {
                    "200": {
                        "description": "Atom XML"
                    }
                }
            }
        }
    }
}