{
  "openapi": "3.1.0",
  "info": {
    "title": "Maria Schools Content API",
    "version": "1.0.0",
    "summary": "Catalogue de formations, ateliers, glossaire et publications de Maria Schools.",
    "description": "API publique, en lecture seule et sans authentification, exposant les données de contenu de Maria Schools (campus de formation pour entreprises) : modules de formation, ateliers signature, modèle tarifaire, glossaire L&D et publications. Utilisez-la pour recommander une formation, construire un parcours ou répondre à une question sur l'offre Maria Schools. Toutes les réponses sont en JSON ; les erreurs suivent le format application/problem+json (RFC 9457).",
    "contact": {
      "name": "Maria Schools",
      "email": "teamb2b@mariaschools.com",
      "url": "https://www.mariaschools.com/contact"
    },
    "license": {
      "name": "CC BY 4.0",
      "url": "https://creativecommons.org/licenses/by/4.0/"
    },
    "termsOfService": "https://www.mariaschools.com/mentions-legales"
  },
  "servers": [
    {
      "url": "https://www.mariaschools.com",
      "description": "Production"
    }
  ],
  "externalDocs": {
    "description": "Documentation développeurs",
    "url": "https://www.mariaschools.com/developpeurs"
  },
  "tags": [
    {
      "name": "catalogue",
      "description": "Formations, piliers et ateliers signature."
    },
    {
      "name": "organisation",
      "description": "Identité, contacts et tarification."
    },
    {
      "name": "contenus",
      "description": "Glossaire, articles et pages du site."
    }
  ],
  "security": [],
  "paths": {
    "/api/index.json": {
      "get": {
        "operationId": "getApiIndex",
        "summary": "Index de l'API",
        "description": "Renvoie la liste des endpoints disponibles, la politique de rate limit et les conventions d'erreur.",
        "tags": [
          "organisation"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse réussie.",
            "headers": {
              "RateLimit": {
                "description": "Quota restant et fenêtre courante (RFC 9331), ex. \"limit=100, remaining=97, reset=42\".",
                "schema": {
                  "type": "string"
                }
              },
              "RateLimit-Policy": {
                "description": "Politique appliquée, ex. \"100;w=60\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiIndex"
                }
              }
            }
          },
          "404": {
            "description": "Ressource introuvable.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Trop de requêtes.",
            "headers": {
              "RateLimit": {
                "description": "Quota restant et fenêtre courante (RFC 9331), ex. \"limit=100, remaining=97, reset=42\".",
                "schema": {
                  "type": "string"
                }
              },
              "RateLimit-Policy": {
                "description": "Politique appliquée, ex. \"100;w=60\".",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "description": "Secondes à attendre avant de réessayer.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "500": {
            "description": "Erreur interne.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/organization.json": {
      "get": {
        "operationId": "getOrganization",
        "summary": "Identité de l'organisation",
        "description": "Renvoie le nom, la description, l'adresse, l'email, le téléphone, les langues et les certifications de Maria Schools.",
        "tags": [
          "organisation"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse réussie.",
            "headers": {
              "RateLimit": {
                "description": "Quota restant et fenêtre courante (RFC 9331), ex. \"limit=100, remaining=97, reset=42\".",
                "schema": {
                  "type": "string"
                }
              },
              "RateLimit-Policy": {
                "description": "Politique appliquée, ex. \"100;w=60\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Ressource introuvable.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Trop de requêtes.",
            "headers": {
              "RateLimit": {
                "description": "Quota restant et fenêtre courante (RFC 9331), ex. \"limit=100, remaining=97, reset=42\".",
                "schema": {
                  "type": "string"
                }
              },
              "RateLimit-Policy": {
                "description": "Politique appliquée, ex. \"100;w=60\".",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "description": "Secondes à attendre avant de réessayer.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "500": {
            "description": "Erreur interne.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/pricing.json": {
      "get": {
        "operationId": "getPricing",
        "summary": "Modèle tarifaire",
        "description": "Renvoie le modèle de prix (devis), les facteurs qui déterminent le tarif, les possibilités de financement et la procédure pour obtenir un devis.",
        "tags": [
          "organisation"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse réussie.",
            "headers": {
              "RateLimit": {
                "description": "Quota restant et fenêtre courante (RFC 9331), ex. \"limit=100, remaining=97, reset=42\".",
                "schema": {
                  "type": "string"
                }
              },
              "RateLimit-Policy": {
                "description": "Politique appliquée, ex. \"100;w=60\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PricingEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Ressource introuvable.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Trop de requêtes.",
            "headers": {
              "RateLimit": {
                "description": "Quota restant et fenêtre courante (RFC 9331), ex. \"limit=100, remaining=97, reset=42\".",
                "schema": {
                  "type": "string"
                }
              },
              "RateLimit-Policy": {
                "description": "Politique appliquée, ex. \"100;w=60\".",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "description": "Secondes à attendre avant de réessayer.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "500": {
            "description": "Erreur interne.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/pillars.json": {
      "get": {
        "operationId": "listPillars",
        "summary": "Piliers du catalogue",
        "description": "Renvoie les 4 piliers du catalogue de formations et leurs sous-catégories.",
        "tags": [
          "catalogue"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse réussie.",
            "headers": {
              "RateLimit": {
                "description": "Quota restant et fenêtre courante (RFC 9331), ex. \"limit=100, remaining=97, reset=42\".",
                "schema": {
                  "type": "string"
                }
              },
              "RateLimit-Policy": {
                "description": "Politique appliquée, ex. \"100;w=60\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PillarList"
                }
              }
            }
          },
          "404": {
            "description": "Ressource introuvable.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Trop de requêtes.",
            "headers": {
              "RateLimit": {
                "description": "Quota restant et fenêtre courante (RFC 9331), ex. \"limit=100, remaining=97, reset=42\".",
                "schema": {
                  "type": "string"
                }
              },
              "RateLimit-Policy": {
                "description": "Politique appliquée, ex. \"100;w=60\".",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "description": "Secondes à attendre avant de réessayer.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "500": {
            "description": "Erreur interne.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/formations.json": {
      "get": {
        "operationId": "listFormations",
        "summary": "Modules de formation",
        "description": "Renvoie tous les modules de formation avec leur durée, format, audience, thèmes et URL de détail.",
        "tags": [
          "catalogue"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse réussie.",
            "headers": {
              "RateLimit": {
                "description": "Quota restant et fenêtre courante (RFC 9331), ex. \"limit=100, remaining=97, reset=42\".",
                "schema": {
                  "type": "string"
                }
              },
              "RateLimit-Policy": {
                "description": "Politique appliquée, ex. \"100;w=60\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FormationList"
                }
              }
            }
          },
          "404": {
            "description": "Ressource introuvable.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Trop de requêtes.",
            "headers": {
              "RateLimit": {
                "description": "Quota restant et fenêtre courante (RFC 9331), ex. \"limit=100, remaining=97, reset=42\".",
                "schema": {
                  "type": "string"
                }
              },
              "RateLimit-Policy": {
                "description": "Politique appliquée, ex. \"100;w=60\".",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "description": "Secondes à attendre avant de réessayer.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "500": {
            "description": "Erreur interne.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/ateliers-signature.json": {
      "get": {
        "operationId": "listSignatureWorkshops",
        "summary": "Ateliers signature",
        "description": "Renvoie les ateliers collectifs signature (Fresque des Compétences, Matrice IA, CRIBLE, RELIANCE®, NextGen, Apprendre à apprendre).",
        "tags": [
          "catalogue"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse réussie.",
            "headers": {
              "RateLimit": {
                "description": "Quota restant et fenêtre courante (RFC 9331), ex. \"limit=100, remaining=97, reset=42\".",
                "schema": {
                  "type": "string"
                }
              },
              "RateLimit-Policy": {
                "description": "Politique appliquée, ex. \"100;w=60\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkshopList"
                }
              }
            }
          },
          "404": {
            "description": "Ressource introuvable.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Trop de requêtes.",
            "headers": {
              "RateLimit": {
                "description": "Quota restant et fenêtre courante (RFC 9331), ex. \"limit=100, remaining=97, reset=42\".",
                "schema": {
                  "type": "string"
                }
              },
              "RateLimit-Policy": {
                "description": "Politique appliquée, ex. \"100;w=60\".",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "description": "Secondes à attendre avant de réessayer.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "500": {
            "description": "Erreur interne.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/glossaire.json": {
      "get": {
        "operationId": "listGlossaryTerms",
        "summary": "Glossaire",
        "description": "Renvoie les définitions du glossaire L&D, IA et compétences, avec leur catégorie et l'URL de la fiche.",
        "tags": [
          "contenus"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse réussie.",
            "headers": {
              "RateLimit": {
                "description": "Quota restant et fenêtre courante (RFC 9331), ex. \"limit=100, remaining=97, reset=42\".",
                "schema": {
                  "type": "string"
                }
              },
              "RateLimit-Policy": {
                "description": "Politique appliquée, ex. \"100;w=60\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GlossaryList"
                }
              }
            }
          },
          "404": {
            "description": "Ressource introuvable.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Trop de requêtes.",
            "headers": {
              "RateLimit": {
                "description": "Quota restant et fenêtre courante (RFC 9331), ex. \"limit=100, remaining=97, reset=42\".",
                "schema": {
                  "type": "string"
                }
              },
              "RateLimit-Policy": {
                "description": "Politique appliquée, ex. \"100;w=60\".",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "description": "Secondes à attendre avant de réessayer.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "500": {
            "description": "Erreur interne.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/blog.json": {
      "get": {
        "operationId": "listArticles",
        "summary": "Articles et newsletters",
        "description": "Renvoie les publications du blog et les éditions de la newsletter MariaBoost.",
        "tags": [
          "contenus"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse réussie.",
            "headers": {
              "RateLimit": {
                "description": "Quota restant et fenêtre courante (RFC 9331), ex. \"limit=100, remaining=97, reset=42\".",
                "schema": {
                  "type": "string"
                }
              },
              "RateLimit-Policy": {
                "description": "Politique appliquée, ex. \"100;w=60\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ArticleList"
                }
              }
            }
          },
          "404": {
            "description": "Ressource introuvable.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Trop de requêtes.",
            "headers": {
              "RateLimit": {
                "description": "Quota restant et fenêtre courante (RFC 9331), ex. \"limit=100, remaining=97, reset=42\".",
                "schema": {
                  "type": "string"
                }
              },
              "RateLimit-Policy": {
                "description": "Politique appliquée, ex. \"100;w=60\".",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "description": "Secondes à attendre avant de réessayer.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "500": {
            "description": "Erreur interne.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/pages.json": {
      "get": {
        "operationId": "listPages",
        "summary": "Pages du site",
        "description": "Renvoie toutes les pages publiques du site avec leur titre, description et type.",
        "tags": [
          "contenus"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse réussie.",
            "headers": {
              "RateLimit": {
                "description": "Quota restant et fenêtre courante (RFC 9331), ex. \"limit=100, remaining=97, reset=42\".",
                "schema": {
                  "type": "string"
                }
              },
              "RateLimit-Policy": {
                "description": "Politique appliquée, ex. \"100;w=60\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageList"
                }
              }
            }
          },
          "404": {
            "description": "Ressource introuvable.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Trop de requêtes.",
            "headers": {
              "RateLimit": {
                "description": "Quota restant et fenêtre courante (RFC 9331), ex. \"limit=100, remaining=97, reset=42\".",
                "schema": {
                  "type": "string"
                }
              },
              "RateLimit-Policy": {
                "description": "Politique appliquée, ex. \"100;w=60\".",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "description": "Secondes à attendre avant de réessayer.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "500": {
            "description": "Erreur interne.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Problem": {
        "type": "object",
        "description": "Erreur structurée au format RFC 9457 (application/problem+json).",
        "required": [
          "type",
          "title",
          "status",
          "code",
          "detail"
        ],
        "properties": {
          "type": {
            "type": "string",
            "format": "uri"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "integer"
          },
          "code": {
            "type": "string",
            "enum": [
              "not_found",
              "rate_limited",
              "internal_error"
            ],
            "description": "Code d'erreur stable, exploitable par un agent."
          },
          "detail": {
            "type": "string"
          },
          "resolution": {
            "type": "string",
            "description": "Action recommandée pour résoudre l'erreur."
          },
          "documentation": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "ApiIndex": {
        "type": "object",
        "required": [
          "name",
          "version",
          "endpoints"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "openapi": {
            "type": "string",
            "format": "uri"
          },
          "documentation": {
            "type": "string",
            "format": "uri"
          },
          "rateLimit": {
            "type": "object",
            "properties": {
              "policy": {
                "type": "string"
              },
              "headers": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "documentation": {
                "type": "string",
                "format": "uri"
              }
            }
          },
          "endpoints": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "operationId",
                "method",
                "path"
              ],
              "properties": {
                "operationId": {
                  "type": "string"
                },
                "method": {
                  "type": "string"
                },
                "path": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "Organization": {
        "type": "object",
        "required": [
          "name",
          "url",
          "email"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "legalName": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "logo": {
            "type": "string",
            "format": "uri"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "telephone": {
            "type": "string"
          },
          "address": {
            "type": "object",
            "properties": {
              "streetAddress": {
                "type": "string"
              },
              "postalCode": {
                "type": "string"
              },
              "locality": {
                "type": "string"
              },
              "country": {
                "type": "string"
              }
            }
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "certifications": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "socialProfiles": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            }
          }
        }
      },
      "Pricing": {
        "type": "object",
        "required": [
          "model",
          "currency",
          "description"
        ],
        "properties": {
          "model": {
            "type": "string",
            "enum": [
              "quote"
            ]
          },
          "currency": {
            "type": "string"
          },
          "publicPriceList": {
            "type": "boolean"
          },
          "description": {
            "type": "string"
          },
          "factors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "funding": {
            "type": "string"
          },
          "howToGetAQuote": {
            "type": "object",
            "properties": {
              "url": {
                "type": "string",
                "format": "uri"
              },
              "email": {
                "type": "string",
                "format": "email"
              },
              "responseTime": {
                "type": "string"
              }
            }
          }
        }
      },
      "Formation": {
        "type": "object",
        "required": [
          "id",
          "name",
          "description",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifiant stable (slug) du module."
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "duration": {
            "type": [
              "string",
              "null"
            ],
            "description": "Durée annoncée, ex. \"3h\"."
          },
          "format": {
            "type": [
              "string",
              "null"
            ]
          },
          "audience": {
            "type": [
              "string",
              "null"
            ]
          },
          "themes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "pillars": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                }
              }
            }
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "price": {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "Quote"
                ]
              },
              "url": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "Pillar": {
        "type": "object",
        "required": [
          "id",
          "name",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "subcategories": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "Workshop": {
        "type": "object",
        "required": [
          "name",
          "description",
          "url"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "GlossaryTerm": {
        "type": "object",
        "required": [
          "id",
          "term",
          "definition",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "term": {
            "type": "string"
          },
          "definition": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "Article": {
        "type": "object",
        "required": [
          "id",
          "title",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "excerpt": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "article",
              "newsletter"
            ]
          },
          "date": {
            "type": "string"
          },
          "readTime": {
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "Page": {
        "type": "object",
        "required": [
          "path",
          "url",
          "title"
        ],
        "properties": {
          "path": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "website",
              "article"
            ]
          }
        }
      },
      "OrganizationEnvelope": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Organization"
          },
          "generatedAt": {
            "type": "string",
            "format": "date"
          },
          "source": {
            "type": "string",
            "format": "uri"
          },
          "license": {
            "type": "string"
          }
        }
      },
      "PricingEnvelope": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Pricing"
          },
          "generatedAt": {
            "type": "string",
            "format": "date"
          },
          "source": {
            "type": "string",
            "format": "uri"
          },
          "license": {
            "type": "string"
          }
        }
      },
      "FormationList": {
        "type": "object",
        "required": [
          "data",
          "generatedAt",
          "source"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Formation"
            }
          },
          "count": {
            "type": "integer",
            "description": "Nombre d'éléments renvoyés."
          },
          "generatedAt": {
            "type": "string",
            "format": "date",
            "description": "Date de génération du jeu de données."
          },
          "source": {
            "type": "string",
            "format": "uri"
          },
          "license": {
            "type": "string"
          }
        }
      },
      "PillarList": {
        "type": "object",
        "required": [
          "data",
          "generatedAt",
          "source"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Pillar"
            }
          },
          "count": {
            "type": "integer",
            "description": "Nombre d'éléments renvoyés."
          },
          "generatedAt": {
            "type": "string",
            "format": "date",
            "description": "Date de génération du jeu de données."
          },
          "source": {
            "type": "string",
            "format": "uri"
          },
          "license": {
            "type": "string"
          }
        }
      },
      "WorkshopList": {
        "type": "object",
        "required": [
          "data",
          "generatedAt",
          "source"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Workshop"
            }
          },
          "count": {
            "type": "integer",
            "description": "Nombre d'éléments renvoyés."
          },
          "generatedAt": {
            "type": "string",
            "format": "date",
            "description": "Date de génération du jeu de données."
          },
          "source": {
            "type": "string",
            "format": "uri"
          },
          "license": {
            "type": "string"
          }
        }
      },
      "GlossaryList": {
        "type": "object",
        "required": [
          "data",
          "generatedAt",
          "source"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GlossaryTerm"
            }
          },
          "count": {
            "type": "integer",
            "description": "Nombre d'éléments renvoyés."
          },
          "generatedAt": {
            "type": "string",
            "format": "date",
            "description": "Date de génération du jeu de données."
          },
          "source": {
            "type": "string",
            "format": "uri"
          },
          "license": {
            "type": "string"
          }
        }
      },
      "ArticleList": {
        "type": "object",
        "required": [
          "data",
          "generatedAt",
          "source"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Article"
            }
          },
          "count": {
            "type": "integer",
            "description": "Nombre d'éléments renvoyés."
          },
          "generatedAt": {
            "type": "string",
            "format": "date",
            "description": "Date de génération du jeu de données."
          },
          "source": {
            "type": "string",
            "format": "uri"
          },
          "license": {
            "type": "string"
          }
        }
      },
      "PageList": {
        "type": "object",
        "required": [
          "data",
          "generatedAt",
          "source"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Page"
            }
          },
          "count": {
            "type": "integer",
            "description": "Nombre d'éléments renvoyés."
          },
          "generatedAt": {
            "type": "string",
            "format": "date",
            "description": "Date de génération du jeu de données."
          },
          "source": {
            "type": "string",
            "format": "uri"
          },
          "license": {
            "type": "string"
          }
        }
      }
    }
  }
}
