{
  "openapi": "3.0.3",
  "info": {
    "title": "Galerie AB Narayanan Akkitham Artworks API",
    "description": "Public read-only exhibition and published artwork data. No authentication or write operations.",
    "version": "1.1.0",
    "contact": {
      "name": "Galerie AB — Agnès Aittouares",
      "url": "https://galerie-ab.paris/contact",
      "email": "galerieab@gmail.com"
    }
  },
  "servers": [
    {
      "url": "https://galerie-ab.paris",
      "description": "Production Server (Paris)"
    }
  ],
  "paths": {
    "/api/oeuvres.json": {
      "get": {
        "summary": "Retrieve complete artworks catalogue",
        "description": "Published catalogue. The total field is current and does not describe the number physically displayed.",
        "responses": {
          "200": {
            "description": "Successful catalogue retrieval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OeuvresResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/exposition.json": {
      "get": {
        "summary": "Exhibition dates, visiting hours, opening reception and current catalogue total",
        "responses": {
          "200": {
            "description": "Public exhibition facts",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExhibitionResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "OeuvresResponse": {
        "type": "object",
        "properties": {
          "oeuvres": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Oeuvre"
            }
          },
          "total": {
            "type": "integer"
          }
        }
      },
      "Oeuvre": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "num_catalogue": {
            "type": "string"
          },
          "titre": {
            "type": "object",
            "properties": {
              "fr": {
                "type": "string"
              },
              "en": {
                "type": "string"
              },
              "hi": {
                "type": "string"
              }
            }
          },
          "technique": {
            "type": "object",
            "properties": {
              "fr": {
                "type": "string"
              },
              "en": {
                "type": "string"
              },
              "hi": {
                "type": "string"
              }
            }
          },
          "annee": {
            "type": "string"
          },
          "dimensions": {
            "type": "string"
          },
          "prix": {
            "type": "string"
          },
          "image_url": {
            "type": "string",
            "nullable": true
          },
          "page_url": {
            "type": "string"
          }
        }
      },
      "ExhibitionResponse": {
        "type": "object",
        "required": [
          "event",
          "openingReception",
          "visitingHours",
          "catalogue",
          "source"
        ],
        "properties": {
          "event": {
            "type": "object",
            "required": [
              "name",
              "url",
              "startDate",
              "endDate",
              "location"
            ],
            "properties": {
              "name": {
                "type": "string"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "startDate": {
                "type": "string",
                "format": "date-time"
              },
              "endDate": {
                "type": "string",
                "format": "date-time"
              },
              "location": {
                "type": "object"
              }
            }
          },
          "openingReception": {
            "type": "object"
          },
          "visitingHours": {
            "type": "string"
          },
          "catalogue": {
            "type": "object",
            "properties": {
              "total": {
                "type": "integer"
              },
              "url": {
                "type": "string"
              },
              "api": {
                "type": "string"
              },
              "scope": {
                "type": "string"
              }
            }
          },
          "source": {
            "type": "object"
          }
        }
      }
    }
  }
}
