{
    "openapi": "3.0.3",
    "info": {
        "title": "Reloge - API publique",
        "version": "0.5.0",
        "description": "Disponibilites d'hebergements. Acces libre en lecture, sans palier ni quota commercial."
    },
    "servers": [
        {
            "url": "https://reloge.com/wp-json/reloge/v1"
        }
    ],
    "paths": {
        "/health": {
            "get": {
                "summary": "Etat du service",
                "responses": {
                    "200": {
                        "description": "Service operationnel"
                    }
                }
            }
        },
        "/number/{numero}": {
            "get": {
                "summary": "Resolution d'un numero d'hebergement vers sa fiche et ses etats",
                "description": "Le numero officiel affiche sur une annonce est la cle. La reponse porte les etats verifies (revendique, verifie, calendrier, paiement, reservation directe) et l'action possible.",
                "parameters": [
                    {
                        "name": "numero",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Hebergement trouve, etats et adresse de la fiche"
                    },
                    "404": {
                        "description": "Numero inconnu : la page publique permet une demande reelle"
                    },
                    "400": {
                        "description": "Format de numero invalide"
                    }
                }
            }
        },
        "/mcp": {
            "post": {
                "summary": "Serveur MCP (JSON-RPC 2.0) pour les assistants IA",
                "description": "Outils : retrouver_hebergement, verifier_disponibilite, lien_reservation, envoyer_message_proprietaire (l'utilisateur final est l'auteur du message, auteur=true exige ; Reloge est un outil et n'agit au nom de personne).",
                "responses": {
                    "200": {
                        "description": "Reponse JSON-RPC"
                    }
                }
            }
        },
        "/search": {
            "get": {
                "summary": "Recherche d'hebergements disponibles",
                "parameters": [
                    {
                        "name": "destination",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "arrival",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "departure",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "adults",
                        "in": "query",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Liste de resultats, chacun avec son niveau de disponibilite"
                    }
                }
            }
        },
        "/properties/{id}": {
            "get": {
                "summary": "Fiche d'un hebergement publie",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Fiche"
                    },
                    "404": {
                        "description": "Introuvable ou non publie"
                    }
                }
            }
        },
        "/ical/{unite}/except/{source}": {
            "get": {
                "summary": "Calendrier sortant excluant une source, parade a l'echo",
                "description": "Donner a chaque plateforme le lien qui l'exclut, jamais le lien complet.",
                "parameters": [
                    {
                        "name": "unite",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "source",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Flux iCalendar"
                    },
                    "403": {
                        "description": "Jeton invalide ou revoque"
                    }
                }
            }
        }
    }
}