{
  "openapi": "3.1.0",
  "info": {
    "title": "Noki Mind API",
    "version": "1.0.0",
    "summary": "L'espace d'administration de Noki Mind, appelable depuis un serveur.",
    "description": "Chaque point d'entrée est un geste de l'espace d'administration : clients, devis,\ntâches, réunions, notes, formulaires de découverte, publications.\n\n**Authentification.** Une clé se présente en en-tête, `Authorization: Bearer <clé>`\nou `X-Api-Key: <clé>`. Elle agit au nom de l'administrateur qui l'a créée et sous\nses droits exacts : ce que son écran ne montre pas, la clé ne le rend pas.\n\n**Portées.** Une clé porte une ou plusieurs portées parmi `read`, `write` et\n`destructive`. Chaque point d'entrée exige la sienne, annoncée dans sa description\net dans `x-required-scope`. Aucune portée n'en implique une autre : une clé qui\nécrit ne supprime pas pour autant.\n\n**Enveloppe.** Un succès rend `{ \"data\": … }`. Un refus rend\n`{ \"error\": \"<code>\", \"message\": \"…\" }`, avec un code stable qui se teste.\n\n**Méthodes.** Ce qui lit accepte `GET` (paramètres dans la requête, un tableau se\ndisant en répétant le paramètre) et `POST` (corps JSON). Ce qui écrit ou supprime\nn'accepte que `POST`.\n\n**Débit.** Chaque clé dispose d'un plafond par minute et par niveau de geste :\n600 en lecture, 120 en écriture, 30 en suppression.\nToute réponse porte `RateLimit-Limit`, `RateLimit-Remaining` et `RateLimit-Reset`,\ny compris quand elle passe : c'est ce qui permet de ralentir avant le mur. Un dépassement\nrend 429 avec `Retry-After`.\n\n**Pas de CORS.** Une clé n'a rien à faire dans un navigateur : ces appels vont de\nserveur à serveur."
  },
  "servers": [
    {
      "url": "https://nokimind.com",
      "description": "Cette instance"
    }
  ],
  "tags": [
    {
      "name": "search"
    },
    {
      "name": "account"
    },
    {
      "name": "agencies"
    },
    {
      "name": "admin-locale"
    },
    {
      "name": "notifications"
    },
    {
      "name": "push"
    },
    {
      "name": "admin-invitations"
    },
    {
      "name": "clients"
    },
    {
      "name": "tasks"
    },
    {
      "name": "client-users"
    },
    {
      "name": "custom-fields"
    },
    {
      "name": "referrers"
    },
    {
      "name": "quotes"
    },
    {
      "name": "quote-comments"
    },
    {
      "name": "task-comments"
    },
    {
      "name": "task-views"
    },
    {
      "name": "social"
    },
    {
      "name": "social-views"
    },
    {
      "name": "meetings"
    },
    {
      "name": "meeting-proposals"
    },
    {
      "name": "recall"
    },
    {
      "name": "recall-calendar"
    },
    {
      "name": "questionnaires"
    },
    {
      "name": "credentials"
    },
    {
      "name": "bills"
    },
    {
      "name": "metrics"
    },
    {
      "name": "files"
    },
    {
      "name": "file-folders"
    },
    {
      "name": "decisions"
    },
    {
      "name": "assistant-conversations"
    },
    {
      "name": "media"
    },
    {
      "name": "notes"
    },
    {
      "name": "note-folders"
    },
    {
      "name": "tickets"
    },
    {
      "name": "company"
    },
    {
      "name": "company-search"
    },
    {
      "name": "design"
    },
    {
      "name": "editor-images"
    },
    {
      "name": "editor-files"
    },
    {
      "name": "translation"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    },
    {
      "apiKeyAuth": []
    }
  ],
  "paths": {
    "/api/v1/search_everything": {
      "get": {
        "operationId": "search_everything_get",
        "summary": "Lecture. Cherche un mot dans tout l'espace admin d'un coup : tâches, fiches clients, contenus de publication (texte du post compris), conversations (fil compris), notes (publiées ou non), devis, réunions (transcript compris), formulaires de découverte et fichiers partagés. Rend au plus six résultats par nature, classés par pertinence, chacun avec sa nature et son adresse : c'est un point d'entrée, pas un inventaire, et la liste complète d'une nature se demande à l'outil qui la liste.",
        "description": "Lecture. Cherche un mot dans tout l'espace admin d'un coup : tâches, fiches clients, contenus de publication (texte du post compris), conversations (fil compris), notes (publiées ou non), devis, réunions (transcript compris), formulaires de découverte et fichiers partagés. Rend au plus six résultats par nature, classés par pertinence, chacun avec sa nature et son adresse : c'est un point d'entrée, pas un inventaire, et la liste complète d'une nature se demande à l'outil qui la liste.\n\nPortée requise : `read`.",
        "tags": [
          "search"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 120
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "kind": {
                            "type": "string",
                            "enum": [
                              "client",
                              "task",
                              "content",
                              "conversation",
                              "note",
                              "decision",
                              "quote",
                              "meeting",
                              "form",
                              "file"
                            ]
                          },
                          "id": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "subtitle": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "href": {
                            "type": "string"
                          },
                          "at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          }
                        },
                        "required": [
                          "kind",
                          "id",
                          "title",
                          "subtitle",
                          "href",
                          "at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "search_everything",
        "summary": "Lecture. Cherche un mot dans tout l'espace admin d'un coup : tâches, fiches clients, contenus de publication (texte du post compris), conversations (fil compris), notes (publiées ou non), devis, réunions (transcript compris), formulaires de découverte et fichiers partagés. Rend au plus six résultats par nature, classés par pertinence, chacun avec sa nature et son adresse : c'est un point d'entrée, pas un inventaire, et la liste complète d'une nature se demande à l'outil qui la liste.",
        "description": "Lecture. Cherche un mot dans tout l'espace admin d'un coup : tâches, fiches clients, contenus de publication (texte du post compris), conversations (fil compris), notes (publiées ou non), devis, réunions (transcript compris), formulaires de découverte et fichiers partagés. Rend au plus six résultats par nature, classés par pertinence, chacun avec sa nature et son adresse : c'est un point d'entrée, pas un inventaire, et la liste complète d'une nature se demande à l'outil qui la liste.\n\nPortée requise : `read`.",
        "tags": [
          "search"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "query": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 120
                  }
                },
                "required": [
                  "query"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "kind": {
                            "type": "string",
                            "enum": [
                              "client",
                              "task",
                              "content",
                              "conversation",
                              "note",
                              "decision",
                              "quote",
                              "meeting",
                              "form",
                              "file"
                            ]
                          },
                          "id": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "subtitle": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "href": {
                            "type": "string"
                          },
                          "at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          }
                        },
                        "required": [
                          "kind",
                          "id",
                          "title",
                          "subtitle",
                          "href",
                          "at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_account": {
      "get": {
        "operationId": "get_account_get",
        "summary": "Lecture. Réglages du compte au nom duquel la clé MCP agit : nom affiché, adresse, langue.",
        "description": "Lecture. Réglages du compte au nom duquel la clé MCP agit : nom affiché, adresse, langue.\n\nPortée requise : `read`.",
        "tags": [
          "account"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "full_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "avatar_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "locale": {
                          "type": "string"
                        },
                        "email": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "provider_avatar_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "full_name",
                        "avatar_url",
                        "locale",
                        "email",
                        "provider_avatar_url"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_account",
        "summary": "Lecture. Réglages du compte au nom duquel la clé MCP agit : nom affiché, adresse, langue.",
        "description": "Lecture. Réglages du compte au nom duquel la clé MCP agit : nom affiché, adresse, langue.\n\nPortée requise : `read`.",
        "tags": [
          "account"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "full_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "avatar_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "locale": {
                          "type": "string"
                        },
                        "email": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "provider_avatar_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "full_name",
                        "avatar_url",
                        "locale",
                        "email",
                        "provider_avatar_url"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/update_account": {
      "post": {
        "operationId": "update_account",
        "summary": "Écriture. Modifie le nom affiché et la langue du compte au nom duquel la clé MCP agit.",
        "description": "Écriture. Modifie le nom affiché et la langue du compte au nom duquel la clé MCP agit.\n\nPortée requise : `write`.",
        "tags": [
          "account"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "full_name": {
                    "type": "string",
                    "maxLength": 80
                  }
                },
                "required": [
                  "full_name"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "full_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "avatar_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "locale": {
                          "type": "string"
                        },
                        "email": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "provider_avatar_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "full_name",
                        "avatar_url",
                        "locale",
                        "email",
                        "provider_avatar_url"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/upload_account_avatar": {
      "post": {
        "operationId": "upload_account_avatar",
        "summary": "Écriture. Remplace l'avatar du compte. L'image est attendue en data URL complète, ce qui la rend peu commode depuis un assistant.",
        "description": "Écriture. Remplace l'avatar du compte. L'image est attendue en data URL complète, ce qui la rend peu commode depuis un assistant.\n\nPortée requise : `write`.",
        "tags": [
          "account"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "dataUrl": {
                    "type": "string"
                  }
                },
                "required": [
                  "dataUrl"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "full_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "avatar_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "locale": {
                          "type": "string"
                        },
                        "email": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "provider_avatar_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "full_name",
                        "avatar_url",
                        "locale",
                        "email",
                        "provider_avatar_url"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/remove_account_avatar": {
      "post": {
        "operationId": "remove_account_avatar",
        "summary": "Écriture. Retire l'avatar du compte et rétablit l'initiale.",
        "description": "Écriture. Retire l'avatar du compte et rétablit l'initiale.\n\nPortée requise : `write`.",
        "tags": [
          "account"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "full_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "avatar_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "locale": {
                          "type": "string"
                        },
                        "email": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "provider_avatar_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "full_name",
                        "avatar_url",
                        "locale",
                        "email",
                        "provider_avatar_url"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_my_agencies": {
      "get": {
        "operationId": "list_my_agencies_get",
        "summary": "Lecture. Les agences auxquelles appartient le compte au nom duquel la clé agit, et laquelle il regarde. Presque toujours une seule.",
        "description": "Lecture. Les agences auxquelles appartient le compte au nom duquel la clé agit, et laquelle il regarde. Presque toujours une seule.\n\nPortée requise : `read`.",
        "tags": [
          "agencies"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "role": {
                            "type": "string",
                            "enum": [
                              "owner",
                              "admin",
                              "member"
                            ]
                          },
                          "active": {
                            "type": "boolean"
                          }
                        },
                        "required": [
                          "id",
                          "name",
                          "role",
                          "active"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_my_agencies",
        "summary": "Lecture. Les agences auxquelles appartient le compte au nom duquel la clé agit, et laquelle il regarde. Presque toujours une seule.",
        "description": "Lecture. Les agences auxquelles appartient le compte au nom duquel la clé agit, et laquelle il regarde. Presque toujours une seule.\n\nPortée requise : `read`.",
        "tags": [
          "agencies"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "role": {
                            "type": "string",
                            "enum": [
                              "owner",
                              "admin",
                              "member"
                            ]
                          },
                          "active": {
                            "type": "boolean"
                          }
                        },
                        "required": [
                          "id",
                          "name",
                          "role",
                          "active"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_agency_setup": {
      "get": {
        "operationId": "get_agency_setup_get",
        "summary": "Lecture. Où en est l'installation de l'agence : a-t-elle un premier client, une marque posée, un second membre. Trois réponses, utiles pour savoir quoi proposer à quelqu'un qui vient d'arriver.",
        "description": "Lecture. Où en est l'installation de l'agence : a-t-elle un premier client, une marque posée, un second membre. Trois réponses, utiles pour savoir quoi proposer à quelqu'un qui vient d'arriver.\n\nPortée requise : `read`.",
        "tags": [
          "agencies"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "hasClient": {
                          "type": "boolean"
                        },
                        "hasCompany": {
                          "type": "boolean"
                        },
                        "hasBrand": {
                          "type": "boolean"
                        },
                        "hasTeammate": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "hasClient",
                        "hasCompany",
                        "hasBrand",
                        "hasTeammate"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_agency_setup",
        "summary": "Lecture. Où en est l'installation de l'agence : a-t-elle un premier client, une marque posée, un second membre. Trois réponses, utiles pour savoir quoi proposer à quelqu'un qui vient d'arriver.",
        "description": "Lecture. Où en est l'installation de l'agence : a-t-elle un premier client, une marque posée, un second membre. Trois réponses, utiles pour savoir quoi proposer à quelqu'un qui vient d'arriver.\n\nPortée requise : `read`.",
        "tags": [
          "agencies"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "hasClient": {
                          "type": "boolean"
                        },
                        "hasCompany": {
                          "type": "boolean"
                        },
                        "hasBrand": {
                          "type": "boolean"
                        },
                        "hasTeammate": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "hasClient",
                        "hasCompany",
                        "hasBrand",
                        "hasTeammate"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/create_agency": {
      "post": {
        "operationId": "create_agency",
        "summary": "Écriture. Crée une agence et en fait le compte propriétaire. Geste rare : il ouvre un espace neuf, vide, et n'a de sens que pour quelqu'un qui n'en a pas encore. Ne donne accès à rien d'existant.",
        "description": "Écriture. Crée une agence et en fait le compte propriétaire. Geste rare : il ouvre un espace neuf, vide, et n'a de sens que pour quelqu'un qui n'en a pas encore. Ne donne accès à rien d'existant.\n\nPortée requise : `write`.",
        "tags": [
          "agencies"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  }
                },
                "required": [
                  "name"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "agency_id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "agency_id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/set_active_agency": {
      "post": {
        "operationId": "set_active_agency",
        "summary": "Écriture. Change l'agence que le compte regarde. Tout ce que les autres outils lisent et écrivent en découle : c'est un changement de contexte, pas un réglage d'affichage.",
        "description": "Écriture. Change l'agence que le compte regarde. Tout ce que les autres outils lisent et écrivent en découle : c'est un changement de contexte, pas un réglage d'affichage.\n\nPortée requise : `write`.",
        "tags": [
          "agencies"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "agency_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "agency_id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "agency_id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "agency_id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/set_admin_locale": {
      "post": {
        "operationId": "set_admin_locale",
        "summary": "Écriture. Change la langue dans laquelle le compte lit l'espace admin.",
        "description": "Écriture. Change la langue dans laquelle le compte lit l'espace admin.\n\nPortée requise : `write`.",
        "tags": [
          "admin-locale"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "locale": {
                    "type": "string",
                    "enum": [
                      "fr",
                      "en",
                      "es"
                    ]
                  }
                },
                "required": [
                  "locale"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "locale": {
                          "type": "string",
                          "enum": [
                            "fr",
                            "en",
                            "es"
                          ]
                        }
                      },
                      "required": [
                        "locale"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_notifications": {
      "get": {
        "operationId": "list_notifications_get",
        "summary": "Lecture. Dernières notifications du compte au nom duquel la clé MCP agit, lues et non lues, de la plus récente à la plus ancienne.",
        "description": "Lecture. Dernières notifications du compte au nom duquel la clé MCP agit, lues et non lues, de la plus récente à la plus ancienne.\n\nPortée requise : `read`.",
        "tags": [
          "notifications"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (50 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "description": "Combien de lignes rendre au plus (50 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "type": {
                            "type": "string",
                            "enum": [
                              "mention",
                              "task_assigned",
                              "task_comment",
                              "ticket_opened",
                              "ticket_message",
                              "client_file_added",
                              "credential_activity",
                              "note_comment",
                              "questionnaire_answered",
                              "quote_comment",
                              "quote_signed",
                              "bill_added",
                              "bill_due",
                              "social_assigned",
                              "social_to_approve",
                              "social_reviewed"
                            ]
                          },
                          "read": {
                            "type": "boolean"
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "body": {
                            "type": "string"
                          },
                          "href": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "type",
                          "read",
                          "created_at",
                          "title",
                          "body",
                          "href"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_notifications",
        "summary": "Lecture. Dernières notifications du compte au nom duquel la clé MCP agit, lues et non lues, de la plus récente à la plus ancienne.",
        "description": "Lecture. Dernières notifications du compte au nom duquel la clé MCP agit, lues et non lues, de la plus récente à la plus ancienne.\n\nPortée requise : `read`.",
        "tags": [
          "notifications"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 50,
                    "description": "Combien de lignes rendre au plus (50 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "type": {
                            "type": "string",
                            "enum": [
                              "mention",
                              "task_assigned",
                              "task_comment",
                              "ticket_opened",
                              "ticket_message",
                              "client_file_added",
                              "credential_activity",
                              "note_comment",
                              "questionnaire_answered",
                              "quote_comment",
                              "quote_signed",
                              "bill_added",
                              "bill_due",
                              "social_assigned",
                              "social_to_approve",
                              "social_reviewed"
                            ]
                          },
                          "read": {
                            "type": "boolean"
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "body": {
                            "type": "string"
                          },
                          "href": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "type",
                          "read",
                          "created_at",
                          "title",
                          "body",
                          "href"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/count_unread_notifications": {
      "get": {
        "operationId": "count_unread_notifications_get",
        "summary": "Lecture. Nombre de notifications non lues, sans en rendre le contenu.",
        "description": "Lecture. Nombre de notifications non lues, sans en rendre le contenu.\n\nPortée requise : `read`.",
        "tags": [
          "notifications"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "number"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "count_unread_notifications",
        "summary": "Lecture. Nombre de notifications non lues, sans en rendre le contenu.",
        "description": "Lecture. Nombre de notifications non lues, sans en rendre le contenu.\n\nPortée requise : `read`.",
        "tags": [
          "notifications"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "number"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/mark_notification_read": {
      "post": {
        "operationId": "mark_notification_read",
        "summary": "Écriture. Marque une notification comme lue. Rien ne disparaît du tiroir, seule la pastille s'éteint.",
        "description": "Écriture. Marque une notification comme lue. Rien ne disparaît du tiroir, seule la pastille s'éteint.\n\nPortée requise : `write`.",
        "tags": [
          "notifications"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "null",
                      "description": "Ce geste ne rend rien."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/mark_all_notifications_read": {
      "post": {
        "operationId": "mark_all_notifications_read",
        "summary": "Écriture. Éteint toutes les pastilles d'un geste, sans rien retirer du tiroir.",
        "description": "Écriture. Éteint toutes les pastilles d'un geste, sans rien retirer du tiroir.\n\nPortée requise : `write`.",
        "tags": [
          "notifications"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "null",
                      "description": "Ce geste ne rend rien."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_notification": {
      "post": {
        "operationId": "delete_notification",
        "summary": "Suppression définitive, irréversible. Retire définitivement une notification du tiroir. Le fait annoncé (la tâche, le devis, le message) reste où il est : seul l'avis disparaît.",
        "description": "Suppression définitive, irréversible. Retire définitivement une notification du tiroir. Le fait annoncé (la tâche, le devis, le message) reste où il est : seul l'avis disparaît.\n\nPortée requise : `destructive`.",
        "tags": [
          "notifications"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "null",
                      "description": "Ce geste ne rend rien."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_read_notifications": {
      "post": {
        "operationId": "delete_read_notifications",
        "summary": "Suppression définitive, irréversible. Retire définitivement du tiroir toutes les notifications déjà lues, et elles seules. Rend le nombre de lignes retirées.",
        "description": "Suppression définitive, irréversible. Retire définitivement du tiroir toutes les notifications déjà lues, et elles seules. Rend le nombre de lignes retirées.\n\nPortée requise : `destructive`.",
        "tags": [
          "notifications"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "number"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_notification_settings": {
      "get": {
        "operationId": "list_notification_settings_get",
        "summary": "Lecture. Réglages de notification du compte : un bloc par type recevable, avec l'état de chaque canal.",
        "description": "Lecture. Réglages de notification du compte : un bloc par type recevable, avec l'état de chaque canal.\n\nPortée requise : `read`.",
        "tags": [
          "notifications"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "mention",
                              "task_assigned",
                              "task_comment",
                              "ticket_opened",
                              "ticket_message",
                              "client_file_added",
                              "credential_activity",
                              "note_comment",
                              "questionnaire_answered",
                              "quote_comment",
                              "quote_signed",
                              "bill_added",
                              "bill_due",
                              "social_assigned",
                              "social_to_approve",
                              "social_reviewed"
                            ]
                          },
                          "label": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          },
                          "channels": {
                            "type": "object",
                            "properties": {
                              "in_app": {
                                "type": "boolean"
                              },
                              "email": {
                                "type": "boolean"
                              },
                              "push": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "in_app",
                              "email",
                              "push"
                            ]
                          }
                        },
                        "required": [
                          "type",
                          "label",
                          "description",
                          "channels"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_notification_settings",
        "summary": "Lecture. Réglages de notification du compte : un bloc par type recevable, avec l'état de chaque canal.",
        "description": "Lecture. Réglages de notification du compte : un bloc par type recevable, avec l'état de chaque canal.\n\nPortée requise : `read`.",
        "tags": [
          "notifications"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "mention",
                              "task_assigned",
                              "task_comment",
                              "ticket_opened",
                              "ticket_message",
                              "client_file_added",
                              "credential_activity",
                              "note_comment",
                              "questionnaire_answered",
                              "quote_comment",
                              "quote_signed",
                              "bill_added",
                              "bill_due",
                              "social_assigned",
                              "social_to_approve",
                              "social_reviewed"
                            ]
                          },
                          "label": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          },
                          "channels": {
                            "type": "object",
                            "properties": {
                              "in_app": {
                                "type": "boolean"
                              },
                              "email": {
                                "type": "boolean"
                              },
                              "push": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "in_app",
                              "email",
                              "push"
                            ]
                          }
                        },
                        "required": [
                          "type",
                          "label",
                          "description",
                          "channels"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/set_notification_channel": {
      "post": {
        "operationId": "set_notification_channel",
        "summary": "Écriture. Coche ou décoche un canal de notification pour un type donné, et rend les réglages relus.",
        "description": "Écriture. Coche ou décoche un canal de notification pour un type donné, et rend les réglages relus.\n\nPortée requise : `write`.",
        "tags": [
          "notifications"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "mention",
                      "task_assigned",
                      "task_comment",
                      "ticket_opened",
                      "ticket_message",
                      "client_file_added",
                      "credential_activity",
                      "note_comment",
                      "questionnaire_answered",
                      "quote_comment",
                      "quote_signed",
                      "bill_added",
                      "bill_due",
                      "social_assigned",
                      "social_to_approve",
                      "social_reviewed"
                    ]
                  },
                  "channel": {
                    "type": "string",
                    "enum": [
                      "in_app",
                      "email",
                      "push"
                    ]
                  },
                  "enabled": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "type",
                  "channel",
                  "enabled"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "mention",
                              "task_assigned",
                              "task_comment",
                              "ticket_opened",
                              "ticket_message",
                              "client_file_added",
                              "credential_activity",
                              "note_comment",
                              "questionnaire_answered",
                              "quote_comment",
                              "quote_signed",
                              "bill_added",
                              "bill_due",
                              "social_assigned",
                              "social_to_approve",
                              "social_reviewed"
                            ]
                          },
                          "label": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          },
                          "channels": {
                            "type": "object",
                            "properties": {
                              "in_app": {
                                "type": "boolean"
                              },
                              "email": {
                                "type": "boolean"
                              },
                              "push": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "in_app",
                              "email",
                              "push"
                            ]
                          }
                        },
                        "required": [
                          "type",
                          "label",
                          "description",
                          "channels"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/set_notification_channel_for_all_types": {
      "post": {
        "operationId": "set_notification_channel_for_all_types",
        "summary": "Écriture. Ouvre ou coupe un canal de notification sur tous les types recevables d'un coup, et rend les réglages relus. Les deux autres canaux restent où ils étaient.",
        "description": "Écriture. Ouvre ou coupe un canal de notification sur tous les types recevables d'un coup, et rend les réglages relus. Les deux autres canaux restent où ils étaient.\n\nPortée requise : `write`.",
        "tags": [
          "notifications"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "channel": {
                    "type": "string",
                    "enum": [
                      "in_app",
                      "email",
                      "push"
                    ]
                  },
                  "enabled": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "channel",
                  "enabled"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "mention",
                              "task_assigned",
                              "task_comment",
                              "ticket_opened",
                              "ticket_message",
                              "client_file_added",
                              "credential_activity",
                              "note_comment",
                              "questionnaire_answered",
                              "quote_comment",
                              "quote_signed",
                              "bill_added",
                              "bill_due",
                              "social_assigned",
                              "social_to_approve",
                              "social_reviewed"
                            ]
                          },
                          "label": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          },
                          "channels": {
                            "type": "object",
                            "properties": {
                              "in_app": {
                                "type": "boolean"
                              },
                              "email": {
                                "type": "boolean"
                              },
                              "push": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "in_app",
                              "email",
                              "push"
                            ]
                          }
                        },
                        "required": [
                          "type",
                          "label",
                          "description",
                          "channels"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_push_devices": {
      "get": {
        "operationId": "list_push_devices_get",
        "summary": "Lecture. Appareils abonnés aux notifications push pour le compte au nom duquel la clé MCP agit, du plus récemment ajouté au plus ancien.",
        "description": "Lecture. Appareils abonnés aux notifications push pour le compte au nom duquel la clé MCP agit, du plus récemment ajouté au plus ancien.\n\nPortée requise : `read`.",
        "tags": [
          "push"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "endpoint": {
                            "type": "string"
                          },
                          "user_agent": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "last_used_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "endpoint",
                          "user_agent",
                          "created_at",
                          "last_used_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_push_devices",
        "summary": "Lecture. Appareils abonnés aux notifications push pour le compte au nom duquel la clé MCP agit, du plus récemment ajouté au plus ancien.",
        "description": "Lecture. Appareils abonnés aux notifications push pour le compte au nom duquel la clé MCP agit, du plus récemment ajouté au plus ancien.\n\nPortée requise : `read`.",
        "tags": [
          "push"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "endpoint": {
                            "type": "string"
                          },
                          "user_agent": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "last_used_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "endpoint",
                          "user_agent",
                          "created_at",
                          "last_used_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/save_push_subscription": {
      "post": {
        "operationId": "save_push_subscription",
        "summary": "Écriture. Enregistre l'abonnement push d'un appareil, ou le met à jour s'il existe déjà. Les valeurs viennent du navigateur : rien d'utile à fabriquer à la main.",
        "description": "Écriture. Enregistre l'abonnement push d'un appareil, ou le met à jour s'il existe déjà. Les valeurs viennent du navigateur : rien d'utile à fabriquer à la main.\n\nPortée requise : `write`.",
        "tags": [
          "push"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "endpoint": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 1000
                  },
                  "p256dh": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "auth": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                  },
                  "user_agent": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 400
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "endpoint",
                  "p256dh",
                  "auth"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "endpoint": {
                            "type": "string"
                          },
                          "user_agent": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "last_used_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "endpoint",
                          "user_agent",
                          "created_at",
                          "last_used_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/remove_push_subscription": {
      "post": {
        "operationId": "remove_push_subscription",
        "summary": "Suppression définitive, irréversible. Retire l'abonnement push d'un appareil, qui cesse de sonner. Sans recours : il faudra le réautoriser depuis l'appareil lui-même.",
        "description": "Suppression définitive, irréversible. Retire l'abonnement push d'un appareil, qui cesse de sonner. Sans recours : il faudra le réautoriser depuis l'appareil lui-même.\n\nPortée requise : `destructive`.",
        "tags": [
          "push"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "endpoint": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 1000
                  }
                },
                "required": [
                  "endpoint"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "endpoint": {
                            "type": "string"
                          },
                          "user_agent": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "last_used_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "endpoint",
                          "user_agent",
                          "created_at",
                          "last_used_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_admins": {
      "get": {
        "operationId": "list_admins_get",
        "summary": "Lecture. Administrateurs de l'agence : qui a accès à l'espace admin.",
        "description": "Lecture. Administrateurs de l'agence : qui a accès à l'espace admin.\n\nPortée requise : `read`.",
        "tags": [
          "admin-invitations"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "user_id": {
                            "type": "string"
                          },
                          "email": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "role": {
                            "type": "string",
                            "enum": [
                              "owner",
                              "admin",
                              "member"
                            ]
                          },
                          "granted_at": {
                            "type": "string"
                          },
                          "is_self": {
                            "type": "boolean"
                          }
                        },
                        "required": [
                          "user_id",
                          "email",
                          "role",
                          "granted_at",
                          "is_self"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_admins",
        "summary": "Lecture. Administrateurs de l'agence : qui a accès à l'espace admin.",
        "description": "Lecture. Administrateurs de l'agence : qui a accès à l'espace admin.\n\nPortée requise : `read`.",
        "tags": [
          "admin-invitations"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "user_id": {
                            "type": "string"
                          },
                          "email": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "role": {
                            "type": "string",
                            "enum": [
                              "owner",
                              "admin",
                              "member"
                            ]
                          },
                          "granted_at": {
                            "type": "string"
                          },
                          "is_self": {
                            "type": "boolean"
                          }
                        },
                        "required": [
                          "user_id",
                          "email",
                          "role",
                          "granted_at",
                          "is_self"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_admin_invitations": {
      "get": {
        "operationId": "list_admin_invitations_get",
        "summary": "Lecture. Invitations d'administrateur en cours, avec leur état et leur échéance.",
        "description": "Lecture. Invitations d'administrateur en cours, avec leur état et leur échéance.\n\nPortée requise : `read`.",
        "tags": [
          "admin-invitations"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "expires_at": {
                            "type": "string"
                          },
                          "accepted_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "revoked_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "id": {
                            "type": "string"
                          },
                          "email": {
                            "type": "string"
                          },
                          "invited_by": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "accepted_by": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "invited_by_email": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          }
                        },
                        "required": [
                          "expires_at",
                          "accepted_at",
                          "revoked_at",
                          "id",
                          "email",
                          "invited_by",
                          "created_at",
                          "accepted_by",
                          "invited_by_email"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_admin_invitations",
        "summary": "Lecture. Invitations d'administrateur en cours, avec leur état et leur échéance.",
        "description": "Lecture. Invitations d'administrateur en cours, avec leur état et leur échéance.\n\nPortée requise : `read`.",
        "tags": [
          "admin-invitations"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "expires_at": {
                            "type": "string"
                          },
                          "accepted_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "revoked_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "id": {
                            "type": "string"
                          },
                          "email": {
                            "type": "string"
                          },
                          "invited_by": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "accepted_by": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "invited_by_email": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          }
                        },
                        "required": [
                          "expires_at",
                          "accepted_at",
                          "revoked_at",
                          "id",
                          "email",
                          "invited_by",
                          "created_at",
                          "accepted_by",
                          "invited_by_email"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_clients": {
      "get": {
        "operationId": "list_clients_get",
        "summary": "Lecture. Toutes les fiches clients, de la plus récemment modifiée à la plus ancienne, avec leur statut commercial.",
        "description": "Lecture. Toutes les fiches clients, de la plus récemment modifiée à la plus ancienne, avec leur statut commercial.\n\nPortée requise : `read`.",
        "tags": [
          "clients"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (1000 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1000,
              "description": "Combien de lignes rendre au plus (1000 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "company": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "country": {
                            "type": "string"
                          },
                          "siret": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "vat_number": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "email": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "phone": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "address_line1": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "address_line2": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "postal_code": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "city": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "notes": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "locale": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "lead",
                              "first-call",
                              "form-sent",
                              "audit",
                              "second-call",
                              "quote-draft",
                              "quote-sent",
                              "signed",
                              "build",
                              "live",
                              "inactive",
                              "lost"
                            ]
                          },
                          "referrer_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "updated_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "name",
                          "company",
                          "country",
                          "siret",
                          "vat_number",
                          "email",
                          "phone",
                          "address_line1",
                          "address_line2",
                          "postal_code",
                          "city",
                          "notes",
                          "locale",
                          "status",
                          "referrer_id",
                          "created_at",
                          "updated_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_clients",
        "summary": "Lecture. Toutes les fiches clients, de la plus récemment modifiée à la plus ancienne, avec leur statut commercial.",
        "description": "Lecture. Toutes les fiches clients, de la plus récemment modifiée à la plus ancienne, avec leur statut commercial.\n\nPortée requise : `read`.",
        "tags": [
          "clients"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 1000,
                    "description": "Combien de lignes rendre au plus (1000 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "company": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "country": {
                            "type": "string"
                          },
                          "siret": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "vat_number": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "email": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "phone": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "address_line1": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "address_line2": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "postal_code": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "city": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "notes": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "locale": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "lead",
                              "first-call",
                              "form-sent",
                              "audit",
                              "second-call",
                              "quote-draft",
                              "quote-sent",
                              "signed",
                              "build",
                              "live",
                              "inactive",
                              "lost"
                            ]
                          },
                          "referrer_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "updated_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "name",
                          "company",
                          "country",
                          "siret",
                          "vat_number",
                          "email",
                          "phone",
                          "address_line1",
                          "address_line2",
                          "postal_code",
                          "city",
                          "notes",
                          "locale",
                          "status",
                          "referrer_id",
                          "created_at",
                          "updated_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_client": {
      "get": {
        "operationId": "get_client_get",
        "summary": "Lecture. Fiche client complète : identité, apporteur d'affaires, devis émis avec leurs signatures, formulaires de découverte reçus, et les données sur mesure de l'agence (`custom`), chacune avec son nom, sa clé, sa nature et la valeur de cette fiche.",
        "description": "Lecture. Fiche client complète : identité, apporteur d'affaires, devis émis avec leurs signatures, formulaires de découverte reçus, et les données sur mesure de l'agence (`custom`), chacune avec son nom, sa clé, sa nature et la valeur de cette fiche.\n\nPortée requise : `read`.",
        "tags": [
          "clients"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "client": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            },
                            "company": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "country": {
                              "type": "string"
                            },
                            "siret": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "vat_number": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "email": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "phone": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "address_line1": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "address_line2": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "postal_code": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "city": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "notes": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "locale": {
                              "type": "string"
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "lead",
                                "first-call",
                                "form-sent",
                                "audit",
                                "second-call",
                                "quote-draft",
                                "quote-sent",
                                "signed",
                                "build",
                                "live",
                                "inactive",
                                "lost"
                              ]
                            },
                            "referrer_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "created_at": {
                              "type": "string"
                            },
                            "updated_at": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "name",
                            "company",
                            "country",
                            "siret",
                            "vat_number",
                            "email",
                            "phone",
                            "address_line1",
                            "address_line2",
                            "postal_code",
                            "city",
                            "notes",
                            "locale",
                            "status",
                            "referrer_id",
                            "created_at",
                            "updated_at"
                          ]
                        },
                        "referrer": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "id",
                                "name"
                              ]
                            }
                          ]
                        },
                        "quotes": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "comments": {
                                "type": "object",
                                "properties": {
                                  "total": {
                                    "type": "number"
                                  },
                                  "fromClient": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "total",
                                  "fromClient"
                                ]
                              },
                              "signature": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "signed_at": {
                                        "type": "string"
                                      },
                                      "signer_name": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "signed_at",
                                      "signer_name"
                                    ]
                                  }
                                ]
                              },
                              "id": {
                                "type": "string"
                              },
                              "number": {
                                "type": "string"
                              },
                              "title": {
                                "type": "string"
                              },
                              "slug": {
                                "type": "string"
                              },
                              "locale": {
                                "type": "string"
                              },
                              "created_at": {
                                "type": "string"
                              },
                              "updated_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "comments",
                              "signature",
                              "id",
                              "number",
                              "title",
                              "slug",
                              "locale",
                              "created_at",
                              "updated_at"
                            ]
                          }
                        },
                        "forms": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "client_id": {
                                "type": "string"
                              },
                              "client_name": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "questionnaire_id": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "questionnaire_title": {
                                "type": "string"
                              },
                              "email": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "locale": {
                                "type": "string"
                              },
                              "token": {
                                "type": "string"
                              },
                              "sent_at": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "opened_at": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "completed_at": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "updated_at": {
                                "type": "string"
                              },
                              "answered": {
                                "type": "number"
                              },
                              "total": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "id",
                              "client_id",
                              "client_name",
                              "questionnaire_id",
                              "questionnaire_title",
                              "email",
                              "locale",
                              "token",
                              "sent_at",
                              "opened_at",
                              "completed_at",
                              "updated_at",
                              "answered",
                              "total"
                            ]
                          }
                        },
                        "custom": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "field_id": {
                                "type": "string"
                              },
                              "key": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string",
                                "enum": [
                                  "number",
                                  "boolean",
                                  "email",
                                  "phone",
                                  "date",
                                  "text",
                                  "long_text",
                                  "url",
                                  "select"
                                ]
                              },
                              "options": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "hint": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "value": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "field_id",
                              "key",
                              "label",
                              "type",
                              "options",
                              "hint",
                              "value"
                            ]
                          }
                        }
                      },
                      "required": [
                        "client",
                        "referrer",
                        "quotes",
                        "forms",
                        "custom"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_client",
        "summary": "Lecture. Fiche client complète : identité, apporteur d'affaires, devis émis avec leurs signatures, formulaires de découverte reçus, et les données sur mesure de l'agence (`custom`), chacune avec son nom, sa clé, sa nature et la valeur de cette fiche.",
        "description": "Lecture. Fiche client complète : identité, apporteur d'affaires, devis émis avec leurs signatures, formulaires de découverte reçus, et les données sur mesure de l'agence (`custom`), chacune avec son nom, sa clé, sa nature et la valeur de cette fiche.\n\nPortée requise : `read`.",
        "tags": [
          "clients"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "client": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            },
                            "company": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "country": {
                              "type": "string"
                            },
                            "siret": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "vat_number": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "email": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "phone": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "address_line1": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "address_line2": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "postal_code": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "city": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "notes": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "locale": {
                              "type": "string"
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "lead",
                                "first-call",
                                "form-sent",
                                "audit",
                                "second-call",
                                "quote-draft",
                                "quote-sent",
                                "signed",
                                "build",
                                "live",
                                "inactive",
                                "lost"
                              ]
                            },
                            "referrer_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "created_at": {
                              "type": "string"
                            },
                            "updated_at": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "name",
                            "company",
                            "country",
                            "siret",
                            "vat_number",
                            "email",
                            "phone",
                            "address_line1",
                            "address_line2",
                            "postal_code",
                            "city",
                            "notes",
                            "locale",
                            "status",
                            "referrer_id",
                            "created_at",
                            "updated_at"
                          ]
                        },
                        "referrer": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "id",
                                "name"
                              ]
                            }
                          ]
                        },
                        "quotes": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "comments": {
                                "type": "object",
                                "properties": {
                                  "total": {
                                    "type": "number"
                                  },
                                  "fromClient": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "total",
                                  "fromClient"
                                ]
                              },
                              "signature": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "signed_at": {
                                        "type": "string"
                                      },
                                      "signer_name": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "signed_at",
                                      "signer_name"
                                    ]
                                  }
                                ]
                              },
                              "id": {
                                "type": "string"
                              },
                              "number": {
                                "type": "string"
                              },
                              "title": {
                                "type": "string"
                              },
                              "slug": {
                                "type": "string"
                              },
                              "locale": {
                                "type": "string"
                              },
                              "created_at": {
                                "type": "string"
                              },
                              "updated_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "comments",
                              "signature",
                              "id",
                              "number",
                              "title",
                              "slug",
                              "locale",
                              "created_at",
                              "updated_at"
                            ]
                          }
                        },
                        "forms": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "client_id": {
                                "type": "string"
                              },
                              "client_name": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "questionnaire_id": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "questionnaire_title": {
                                "type": "string"
                              },
                              "email": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "locale": {
                                "type": "string"
                              },
                              "token": {
                                "type": "string"
                              },
                              "sent_at": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "opened_at": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "completed_at": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "updated_at": {
                                "type": "string"
                              },
                              "answered": {
                                "type": "number"
                              },
                              "total": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "id",
                              "client_id",
                              "client_name",
                              "questionnaire_id",
                              "questionnaire_title",
                              "email",
                              "locale",
                              "token",
                              "sent_at",
                              "opened_at",
                              "completed_at",
                              "updated_at",
                              "answered",
                              "total"
                            ]
                          }
                        },
                        "custom": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "field_id": {
                                "type": "string"
                              },
                              "key": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string",
                                "enum": [
                                  "number",
                                  "boolean",
                                  "email",
                                  "phone",
                                  "date",
                                  "text",
                                  "long_text",
                                  "url",
                                  "select"
                                ]
                              },
                              "options": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "hint": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "value": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "field_id",
                              "key",
                              "label",
                              "type",
                              "options",
                              "hint",
                              "value"
                            ]
                          }
                        }
                      },
                      "required": [
                        "client",
                        "referrer",
                        "quotes",
                        "forms",
                        "custom"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/upsert_client": {
      "post": {
        "operationId": "upsert_client",
        "summary": "Écriture. Crée une fiche client, ou met à jour celle dont l'identifiant est fourni. Sans identifiant, une fiche est créée.",
        "description": "Écriture. Crée une fiche client, ou met à jour celle dont l'identifiant est fourni. Sans identifiant, une fiche est créée.\n\nPortée requise : `write`.",
        "tags": [
          "clients"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "company": {
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "not": {}
                          },
                          {
                            "type": "string",
                            "maxLength": 200
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "const": ""
                      }
                    ]
                  },
                  "country": {
                    "type": "string",
                    "pattern": "^[A-Za-z]{2}$"
                  },
                  "siret": {
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "not": {}
                          },
                          {
                            "type": "string",
                            "maxLength": 20
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "const": ""
                      }
                    ]
                  },
                  "vat_number": {
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "not": {}
                          },
                          {
                            "type": "string",
                            "maxLength": 20
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "const": ""
                      }
                    ]
                  },
                  "email": {
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "not": {}
                          },
                          {
                            "type": "string",
                            "format": "email",
                            "maxLength": 200
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "const": ""
                      }
                    ]
                  },
                  "phone": {
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "not": {}
                          },
                          {
                            "type": "string",
                            "maxLength": 30,
                            "pattern": "^[\\d\\s()+-]{8,30}$"
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "const": ""
                      }
                    ]
                  },
                  "address_line1": {
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "not": {}
                          },
                          {
                            "type": "string",
                            "maxLength": 200
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "const": ""
                      }
                    ]
                  },
                  "address_line2": {
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "not": {}
                          },
                          {
                            "type": "string",
                            "maxLength": 200
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "const": ""
                      }
                    ]
                  },
                  "postal_code": {
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "not": {}
                          },
                          {
                            "type": "string",
                            "maxLength": 20
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "const": ""
                      }
                    ]
                  },
                  "city": {
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "not": {}
                          },
                          {
                            "type": "string",
                            "maxLength": 120
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "const": ""
                      }
                    ]
                  },
                  "notes": {
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "not": {}
                          },
                          {
                            "type": "string",
                            "maxLength": 2000
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "const": ""
                      }
                    ]
                  },
                  "locale": {
                    "type": "string",
                    "enum": [
                      "fr",
                      "en",
                      "es"
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "lead",
                      "first-call",
                      "form-sent",
                      "audit",
                      "second-call",
                      "quote-draft",
                      "quote-sent",
                      "signed",
                      "build",
                      "live",
                      "inactive",
                      "lost"
                    ]
                  },
                  "referrer_id": {
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "uuid"
                          },
                          {
                            "type": "string",
                            "const": ""
                          }
                        ]
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "name"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "address_line1": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "address_line2": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "city": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "company": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "country": {
                          "type": "string"
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "created_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "email": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "id": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "notes": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "phone": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "postal_code": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "siret": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "updated_at": {
                          "type": "string"
                        },
                        "vat_number": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "locale": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "lead",
                            "first-call",
                            "form-sent",
                            "audit",
                            "second-call",
                            "quote-draft",
                            "quote-sent",
                            "signed",
                            "build",
                            "live",
                            "inactive",
                            "lost"
                          ]
                        },
                        "referrer_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "address_line1",
                        "address_line2",
                        "city",
                        "company",
                        "country",
                        "created_at",
                        "created_by",
                        "email",
                        "id",
                        "name",
                        "notes",
                        "phone",
                        "postal_code",
                        "siret",
                        "updated_at",
                        "vat_number",
                        "locale",
                        "status",
                        "referrer_id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/set_client_status": {
      "post": {
        "operationId": "set_client_status",
        "summary": "Écriture. Déplace un client sur le parcours commercial, de « lead » à « live », ou l'en sort : « inactive » pour une relation en sommeil, « lost » pour une affaire perdue.",
        "description": "Écriture. Déplace un client sur le parcours commercial, de « lead » à « live », ou l'en sort : « inactive » pour une relation en sommeil, « lost » pour une affaire perdue.\n\nPortée requise : `write`.",
        "tags": [
          "clients"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "lead",
                      "first-call",
                      "form-sent",
                      "audit",
                      "second-call",
                      "quote-draft",
                      "quote-sent",
                      "signed",
                      "build",
                      "live",
                      "inactive",
                      "lost"
                    ]
                  }
                },
                "required": [
                  "id",
                  "status"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "lead",
                            "first-call",
                            "form-sent",
                            "audit",
                            "second-call",
                            "quote-draft",
                            "quote-sent",
                            "signed",
                            "build",
                            "live",
                            "inactive",
                            "lost"
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "status"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_client": {
      "post": {
        "operationId": "delete_client",
        "summary": "Suppression définitive, irréversible. Supprime définitivement une fiche client. Irréversible : demander confirmation avant d'appeler.",
        "description": "Suppression définitive, irréversible. Supprime définitivement une fiche client. Irréversible : demander confirmation avant d'appeler.\n\nPortée requise : `destructive`.",
        "tags": [
          "clients"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "ok": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "ok"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_client_members": {
      "get": {
        "operationId": "list_client_members_get",
        "summary": "Lecture. Personnes rattachées aux espaces clients, à qui une tâche peut être assignée.",
        "description": "Lecture. Personnes rattachées aux espaces clients, à qui une tâche peut être assignée.\n\nPortée requise : `read`.",
        "tags": [
          "tasks"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "user_id": {
                            "type": "string"
                          },
                          "email": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "name": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "avatar_url": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "client_id": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "user_id",
                          "email",
                          "name",
                          "avatar_url",
                          "client_id"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_client_members",
        "summary": "Lecture. Personnes rattachées aux espaces clients, à qui une tâche peut être assignée.",
        "description": "Lecture. Personnes rattachées aux espaces clients, à qui une tâche peut être assignée.\n\nPortée requise : `read`.",
        "tags": [
          "tasks"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "user_id": {
                            "type": "string"
                          },
                          "email": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "name": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "avatar_url": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "client_id": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "user_id",
                          "email",
                          "name",
                          "avatar_url",
                          "client_id"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_client_access": {
      "get": {
        "operationId": "get_client_access_get",
        "summary": "Lecture. Qui peut ouvrir l'espace d'un client, et qui y a été invité sans avoir accepté.",
        "description": "Lecture. Qui peut ouvrir l'espace d'un client, et qui y a été invité sans avoir accepté.\n\nPortée requise : `read`.",
        "tags": [
          "client-users"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "client_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "users": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "user_id": {
                                "type": "string"
                              },
                              "email": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "name": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "avatar_url": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "user_id",
                              "email",
                              "name",
                              "avatar_url",
                              "created_at"
                            ]
                          }
                        },
                        "invitations": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "expires_at": {
                                "type": "string"
                              },
                              "accepted_at": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "revoked_at": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "id": {
                                "type": "string"
                              },
                              "client_id": {
                                "type": "string"
                              },
                              "email": {
                                "type": "string"
                              },
                              "invited_by": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_at": {
                                "type": "string"
                              },
                              "accepted_by": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "expires_at",
                              "accepted_at",
                              "revoked_at",
                              "id",
                              "client_id",
                              "email",
                              "invited_by",
                              "created_at",
                              "accepted_by"
                            ]
                          }
                        }
                      },
                      "required": [
                        "users",
                        "invitations"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_client_access",
        "summary": "Lecture. Qui peut ouvrir l'espace d'un client, et qui y a été invité sans avoir accepté.",
        "description": "Lecture. Qui peut ouvrir l'espace d'un client, et qui y a été invité sans avoir accepté.\n\nPortée requise : `read`.",
        "tags": [
          "client-users"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "users": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "user_id": {
                                "type": "string"
                              },
                              "email": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "name": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "avatar_url": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "user_id",
                              "email",
                              "name",
                              "avatar_url",
                              "created_at"
                            ]
                          }
                        },
                        "invitations": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "expires_at": {
                                "type": "string"
                              },
                              "accepted_at": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "revoked_at": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "id": {
                                "type": "string"
                              },
                              "client_id": {
                                "type": "string"
                              },
                              "email": {
                                "type": "string"
                              },
                              "invited_by": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_at": {
                                "type": "string"
                              },
                              "accepted_by": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "expires_at",
                              "accepted_at",
                              "revoked_at",
                              "id",
                              "client_id",
                              "email",
                              "invited_by",
                              "created_at",
                              "accepted_by"
                            ]
                          }
                        }
                      },
                      "required": [
                        "users",
                        "invitations"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/invite_client_user": {
      "post": {
        "operationId": "invite_client_user",
        "summary": "Écriture. Invite une adresse à ouvrir l'espace d'un client. L'invitation part par courrier électronique. La langue, si elle est passée, se pose sur la fiche : l'e-mail, l'espace et les prochains devis de ce client la reprennent.",
        "description": "Écriture. Invite une adresse à ouvrir l'espace d'un client. L'invitation part par courrier électronique. La langue, si elle est passée, se pose sur la fiche : l'e-mail, l'espace et les prochains devis de ce client la reprennent.\n\nPortée requise : `write`.",
        "tags": [
          "client-users"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "email": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 320
                  },
                  "locale": {
                    "type": "string",
                    "enum": [
                      "fr",
                      "en",
                      "es"
                    ]
                  }
                },
                "required": [
                  "email"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "invitation": {
                          "type": "object",
                          "properties": {
                            "expires_at": {
                              "type": "string"
                            },
                            "accepted_at": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "revoked_at": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "id": {
                              "type": "string"
                            },
                            "client_id": {
                              "type": "string"
                            },
                            "email": {
                              "type": "string"
                            },
                            "invited_by": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "created_at": {
                              "type": "string"
                            },
                            "accepted_by": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            }
                          },
                          "required": [
                            "expires_at",
                            "accepted_at",
                            "revoked_at",
                            "id",
                            "client_id",
                            "email",
                            "invited_by",
                            "created_at",
                            "accepted_by"
                          ]
                        },
                        "url": {
                          "type": "string"
                        },
                        "delivery": {
                          "type": "string",
                          "enum": [
                            "sent",
                            "not_configured",
                            "failed"
                          ]
                        }
                      },
                      "required": [
                        "invitation",
                        "url",
                        "delivery"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/revoke_client_invitation": {
      "post": {
        "operationId": "revoke_client_invitation",
        "summary": "Écriture. Annule une invitation d'espace client qui n'a pas encore été acceptée.",
        "description": "Écriture. Annule une invitation d'espace client qui n'a pas encore été acceptée.\n\nPortée requise : `write`.",
        "tags": [
          "client-users"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "expires_at": {
                          "type": "string"
                        },
                        "accepted_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "revoked_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "type": "string"
                        },
                        "email": {
                          "type": "string"
                        },
                        "invited_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "accepted_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "expires_at",
                        "accepted_at",
                        "revoked_at",
                        "id",
                        "client_id",
                        "email",
                        "invited_by",
                        "created_at",
                        "accepted_by"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/remove_client_user": {
      "post": {
        "operationId": "remove_client_user",
        "summary": "Suppression définitive, irréversible. Retire à une personne son accès à l'espace d'un client.",
        "description": "Suppression définitive, irréversible. Retire à une personne son accès à l'espace d'un client.\n\nPortée requise : `destructive`.",
        "tags": [
          "client-users"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_custom_fields": {
      "get": {
        "operationId": "list_custom_fields_get",
        "summary": "Lecture. Catalogue des données sur mesure des fiches clients : pour chaque champ, sa clé, son intitulé, sa nature (texte, nombre, date, oui/non, adresse web, e-mail, téléphone, menu à choix) et le nombre de fiches renseignées.",
        "description": "Lecture. Catalogue des données sur mesure des fiches clients : pour chaque champ, sa clé, son intitulé, sa nature (texte, nombre, date, oui/non, adresse web, e-mail, téléphone, menu à choix) et le nombre de fiches renseignées.\n\nPortée requise : `read`.",
        "tags": [
          "custom-fields"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "key": {
                            "type": "string"
                          },
                          "label": {
                            "type": "string"
                          },
                          "type": {
                            "type": "string",
                            "enum": [
                              "number",
                              "boolean",
                              "email",
                              "phone",
                              "date",
                              "text",
                              "long_text",
                              "url",
                              "select"
                            ]
                          },
                          "options": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "hint": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "clientCount": {
                            "type": "number"
                          }
                        },
                        "required": [
                          "id",
                          "key",
                          "label",
                          "type",
                          "options",
                          "hint",
                          "clientCount"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_custom_fields",
        "summary": "Lecture. Catalogue des données sur mesure des fiches clients : pour chaque champ, sa clé, son intitulé, sa nature (texte, nombre, date, oui/non, adresse web, e-mail, téléphone, menu à choix) et le nombre de fiches renseignées.",
        "description": "Lecture. Catalogue des données sur mesure des fiches clients : pour chaque champ, sa clé, son intitulé, sa nature (texte, nombre, date, oui/non, adresse web, e-mail, téléphone, menu à choix) et le nombre de fiches renseignées.\n\nPortée requise : `read`.",
        "tags": [
          "custom-fields"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "key": {
                            "type": "string"
                          },
                          "label": {
                            "type": "string"
                          },
                          "type": {
                            "type": "string",
                            "enum": [
                              "number",
                              "boolean",
                              "email",
                              "phone",
                              "date",
                              "text",
                              "long_text",
                              "url",
                              "select"
                            ]
                          },
                          "options": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "hint": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "clientCount": {
                            "type": "number"
                          }
                        },
                        "required": [
                          "id",
                          "key",
                          "label",
                          "type",
                          "options",
                          "hint",
                          "clientCount"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_client_custom_data": {
      "get": {
        "operationId": "list_client_custom_data_get",
        "summary": "Lecture. Toutes les fiches clients et leurs données sur mesure, en un appel : le catalogue d'abord, puis chaque client avec ses valeurs rangées par clé de champ. C'est la lecture à préférer pour comparer les clients entre eux ou repérer ce qui manque ; une fiche sans aucune valeur y figure avec un objet vide.",
        "description": "Lecture. Toutes les fiches clients et leurs données sur mesure, en un appel : le catalogue d'abord, puis chaque client avec ses valeurs rangées par clé de champ. C'est la lecture à préférer pour comparer les clients entre eux ou repérer ce qui manque ; une fiche sans aucune valeur y figure avec un objet vide.\n\nPortée requise : `read`.",
        "tags": [
          "custom-fields"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (1000 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1000,
              "description": "Combien de lignes rendre au plus (1000 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "fields": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "key": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string",
                                "enum": [
                                  "number",
                                  "boolean",
                                  "email",
                                  "phone",
                                  "date",
                                  "text",
                                  "long_text",
                                  "url",
                                  "select"
                                ]
                              },
                              "options": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "hint": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "key",
                              "label",
                              "type",
                              "options",
                              "hint"
                            ]
                          }
                        },
                        "clients": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "data": {
                                "type": "object",
                                "additionalProperties": {
                                  "type": "string"
                                }
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "data"
                            ]
                          }
                        }
                      },
                      "required": [
                        "fields",
                        "clients"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_client_custom_data",
        "summary": "Lecture. Toutes les fiches clients et leurs données sur mesure, en un appel : le catalogue d'abord, puis chaque client avec ses valeurs rangées par clé de champ. C'est la lecture à préférer pour comparer les clients entre eux ou repérer ce qui manque ; une fiche sans aucune valeur y figure avec un objet vide.",
        "description": "Lecture. Toutes les fiches clients et leurs données sur mesure, en un appel : le catalogue d'abord, puis chaque client avec ses valeurs rangées par clé de champ. C'est la lecture à préférer pour comparer les clients entre eux ou repérer ce qui manque ; une fiche sans aucune valeur y figure avec un objet vide.\n\nPortée requise : `read`.",
        "tags": [
          "custom-fields"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 1000,
                    "description": "Combien de lignes rendre au plus (1000 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "fields": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "key": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string",
                                "enum": [
                                  "number",
                                  "boolean",
                                  "email",
                                  "phone",
                                  "date",
                                  "text",
                                  "long_text",
                                  "url",
                                  "select"
                                ]
                              },
                              "options": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "hint": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "key",
                              "label",
                              "type",
                              "options",
                              "hint"
                            ]
                          }
                        },
                        "clients": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "data": {
                                "type": "object",
                                "additionalProperties": {
                                  "type": "string"
                                }
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "data"
                            ]
                          }
                        }
                      },
                      "required": [
                        "fields",
                        "clients"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/create_custom_field": {
      "post": {
        "operationId": "create_custom_field",
        "summary": "Écriture. Ajoute une donnée sur mesure au vocabulaire de l'agence. Elle apparaît aussitôt, vide, sur toutes les fiches. La clé de machine se dérive de l'intitulé, elle ne se choisit pas. Un champ « select » exige ses options ; aucun autre n'en accepte.",
        "description": "Écriture. Ajoute une donnée sur mesure au vocabulaire de l'agence. Elle apparaît aussitôt, vide, sur toutes les fiches. La clé de machine se dérive de l'intitulé, elle ne se choisit pas. Un champ « select » exige ses options ; aucun autre n'en accepte.\n\nPortée requise : `write`.",
        "tags": [
          "custom-fields"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "label": {
                    "allOf": [
                      {
                        "type": "string",
                        "maxLength": 240
                      },
                      {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                      }
                    ]
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "text",
                      "long_text",
                      "number",
                      "url",
                      "email",
                      "phone",
                      "date",
                      "boolean",
                      "select"
                    ]
                  },
                  "options": {
                    "allOf": [
                      {
                        "anyOf": [
                          {
                            "not": {}
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "maxLength": 240
                            },
                            "maxItems": 80
                          }
                        ]
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "maxLength": 120
                        },
                        "maxItems": 40
                      }
                    ]
                  },
                  "hint": {
                    "allOf": [
                      {
                        "anyOf": [
                          {
                            "not": {}
                          },
                          {
                            "type": "string",
                            "maxLength": 600
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "maxLength": 300
                      }
                    ]
                  }
                },
                "required": [
                  "label",
                  "type"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "key": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "number",
                            "boolean",
                            "email",
                            "phone",
                            "date",
                            "text",
                            "long_text",
                            "url",
                            "select"
                          ]
                        },
                        "options": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "hint": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "clientCount": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "id",
                        "key",
                        "label",
                        "type",
                        "options",
                        "hint",
                        "clientCount"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/update_custom_field": {
      "post": {
        "operationId": "update_custom_field",
        "summary": "Écriture. Modifie une donnée sur mesure : intitulé, nature, options, aide. La clé de machine ne change jamais. Attention, changer la nature d'un champ ou retirer une option efface les réponses que la nouvelle définition ne sait plus relire, sur toutes les fiches : demander confirmation avant d'appeler.",
        "description": "Écriture. Modifie une donnée sur mesure : intitulé, nature, options, aide. La clé de machine ne change jamais. Attention, changer la nature d'un champ ou retirer une option efface les réponses que la nouvelle définition ne sait plus relire, sur toutes les fiches : demander confirmation avant d'appeler.\n\nPortée requise : `write`.",
        "tags": [
          "custom-fields"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "label": {
                    "allOf": [
                      {
                        "type": "string",
                        "maxLength": 240
                      },
                      {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                      }
                    ]
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "text",
                      "long_text",
                      "number",
                      "url",
                      "email",
                      "phone",
                      "date",
                      "boolean",
                      "select"
                    ]
                  },
                  "options": {
                    "allOf": [
                      {
                        "anyOf": [
                          {
                            "not": {}
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "maxLength": 240
                            },
                            "maxItems": 80
                          }
                        ]
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "maxLength": 120
                        },
                        "maxItems": 40
                      }
                    ]
                  },
                  "hint": {
                    "allOf": [
                      {
                        "anyOf": [
                          {
                            "not": {}
                          },
                          {
                            "type": "string",
                            "maxLength": 600
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "maxLength": 300
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "label",
                  "type"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "key": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "number",
                            "boolean",
                            "email",
                            "phone",
                            "date",
                            "text",
                            "long_text",
                            "url",
                            "select"
                          ]
                        },
                        "options": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "hint": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "clientCount": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "id",
                        "key",
                        "label",
                        "type",
                        "options",
                        "hint",
                        "clientCount"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_custom_field": {
      "post": {
        "operationId": "delete_custom_field",
        "summary": "Suppression définitive, irréversible. Retire une donnée sur mesure du vocabulaire, et avec elle les réponses de toutes les fiches. Irréversible : demander confirmation avant d'appeler.",
        "description": "Suppression définitive, irréversible. Retire une donnée sur mesure du vocabulaire, et avec elle les réponses de toutes les fiches. Irréversible : demander confirmation avant d'appeler.\n\nPortée requise : `destructive`.",
        "tags": [
          "custom-fields"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "ok": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "ok"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/set_client_custom_value": {
      "post": {
        "operationId": "set_client_custom_value",
        "summary": "Écriture. Renseigne une donnée sur mesure pour une fiche client. La valeur est relue selon la nature du champ et enregistrée sous forme canonique (nombre à point décimal, date « AAAA-MM-JJ », « true » ou « false », option écrite comme dans le catalogue). Une valeur vide efface la réponse.",
        "description": "Écriture. Renseigne une donnée sur mesure pour une fiche client. La valeur est relue selon la nature du champ et enregistrée sous forme canonique (nombre à point décimal, date « AAAA-MM-JJ », « true » ou « false », option écrite comme dans le catalogue). Une valeur vide efface la réponse.\n\nPortée requise : `write`.",
        "tags": [
          "custom-fields"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "field_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "value": {
                    "type": "string",
                    "maxLength": 4000
                  }
                },
                "required": [
                  "client_id",
                  "field_id",
                  "value"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "field_id": {
                          "type": "string"
                        },
                        "value": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "field_id",
                        "value"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_referrers": {
      "get": {
        "operationId": "list_referrers_get",
        "summary": "Lecture. Catalogue des apporteurs d'affaires.",
        "description": "Lecture. Catalogue des apporteurs d'affaires.\n\nPortée requise : `read`.",
        "tags": [
          "referrers"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "clientCount": {
                            "type": "number"
                          }
                        },
                        "required": [
                          "id",
                          "name",
                          "clientCount"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_referrers",
        "summary": "Lecture. Catalogue des apporteurs d'affaires.",
        "description": "Lecture. Catalogue des apporteurs d'affaires.\n\nPortée requise : `read`.",
        "tags": [
          "referrers"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "clientCount": {
                            "type": "number"
                          }
                        },
                        "required": [
                          "id",
                          "name",
                          "clientCount"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/create_referrer": {
      "post": {
        "operationId": "create_referrer",
        "summary": "Écriture. Ajoute un apporteur d'affaires au catalogue.",
        "description": "Écriture. Ajoute un apporteur d'affaires au catalogue.\n\nPortée requise : `write`.",
        "tags": [
          "referrers"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "allOf": [
                      {
                        "type": "string",
                        "maxLength": 240
                      },
                      {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                      }
                    ]
                  }
                },
                "required": [
                  "name"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "clientCount": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "id",
                        "name",
                        "clientCount"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/rename_referrer": {
      "post": {
        "operationId": "rename_referrer",
        "summary": "Écriture. Renomme un apporteur d'affaires.",
        "description": "Écriture. Renomme un apporteur d'affaires.\n\nPortée requise : `write`.",
        "tags": [
          "referrers"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "name": {
                    "allOf": [
                      {
                        "type": "string",
                        "maxLength": 240
                      },
                      {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 120
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "clientCount": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "id",
                        "name",
                        "clientCount"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_referrer": {
      "post": {
        "operationId": "delete_referrer",
        "summary": "Suppression définitive, irréversible. Retire un apporteur d'affaires du catalogue.",
        "description": "Suppression définitive, irréversible. Retire un apporteur d'affaires du catalogue.\n\nPortée requise : `destructive`.",
        "tags": [
          "referrers"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "ok": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "ok"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/create_quote": {
      "post": {
        "operationId": "create_quote",
        "summary": "Écriture. Crée un devis rattaché à une fiche client, dans sa première version. Sans langue précisée, celle du client s'applique.",
        "description": "Écriture. Crée un devis rattaché à une fiche client, dans sa première version. Sans langue précisée, celle du client s'applique.\n\nPortée requise : `write`.",
        "tags": [
          "quotes"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "locale": {
                    "type": "string",
                    "enum": [
                      "fr",
                      "en",
                      "es"
                    ]
                  }
                },
                "required": [
                  "client_id",
                  "title"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "slug": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "slug"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_quote_for_edit": {
      "get": {
        "operationId": "get_quote_for_edit_get",
        "summary": "Lecture. Devis complet tel que l'éditeur le voit : versions, prestations, totaux, régime de TVA.",
        "description": "Lecture. Devis complet tel que l'éditeur le voit : versions, prestations, totaux, régime de TVA.\n\nPortée requise : `read`.",
        "tags": [
          "quotes"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "quote": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "title": {
                              "type": "string"
                            },
                            "slug": {
                              "type": "string"
                            },
                            "locale": {
                              "type": "string"
                            },
                            "number": {
                              "type": "string"
                            },
                            "validity_days": {
                              "type": "number"
                            },
                            "regime": {
                              "type": "string",
                              "enum": [
                                "FR_20",
                                "UE_AUTOLIQ",
                                "HORS_UE",
                                "EXONERE"
                              ]
                            },
                            "vat_exemption_note": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "current_version_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "client": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "company": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "country": {
                                  "type": "string"
                                },
                                "siret": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "vat_number": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "email": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "phone": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "address_line1": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "address_line2": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "postal_code": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "city": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "id",
                                "name",
                                "company",
                                "country",
                                "siret",
                                "vat_number",
                                "email",
                                "phone",
                                "address_line1",
                                "address_line2",
                                "postal_code",
                                "city"
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "title",
                            "slug",
                            "locale",
                            "number",
                            "validity_days",
                            "regime",
                            "vat_exemption_note",
                            "current_version_id",
                            "client"
                          ]
                        },
                        "company": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "name": {
                                  "type": "string"
                                },
                                "legal_name": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "siret": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "vat_number": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "country": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "address": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "contact_email": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "phone": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "bank_name": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "iban": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "bic": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "name",
                                "legal_name",
                                "siret",
                                "vat_number",
                                "country",
                                "address",
                                "contact_email",
                                "phone",
                                "bank_name",
                                "iban",
                                "bic"
                              ]
                            }
                          ]
                        },
                        "versions": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "version_number": {
                                "type": "number"
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "version_number",
                              "created_at"
                            ]
                          }
                        },
                        "currentVersion": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "created_at": {
                                  "type": "string"
                                },
                                "created_by": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "description_md": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "id": {
                                  "type": "string"
                                },
                                "note_md": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "quote_id": {
                                  "type": "string"
                                },
                                "version_number": {
                                  "type": "number"
                                }
                              },
                              "required": [
                                "created_at",
                                "created_by",
                                "description_md",
                                "id",
                                "note_md",
                                "quote_id",
                                "version_number"
                              ]
                            }
                          ]
                        },
                        "currentLines": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "position": {
                                "type": "number"
                              },
                              "name": {
                                "type": "string"
                              },
                              "description_md": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "price_ht": {
                                "type": "number"
                              },
                              "kind": {
                                "type": "string",
                                "enum": [
                                  "fixed",
                                  "monthly",
                                  "commission"
                                ]
                              },
                              "togglable": {
                                "type": "boolean"
                              },
                              "default_selected": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "id",
                              "position",
                              "name",
                              "description_md",
                              "price_ht",
                              "kind",
                              "togglable",
                              "default_selected"
                            ]
                          }
                        },
                        "draft": {
                          "type": "object",
                          "properties": {
                            "description_md": {
                              "type": "string"
                            },
                            "note_md": {
                              "type": "string"
                            },
                            "lines": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "description_md": {
                                    "type": "string"
                                  },
                                  "price_ht": {
                                    "type": "number"
                                  },
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "fixed",
                                      "monthly",
                                      "commission"
                                    ]
                                  },
                                  "togglable": {
                                    "type": "boolean"
                                  },
                                  "default_selected": {
                                    "type": "boolean"
                                  },
                                  "min_monthly": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "number"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "name",
                                  "description_md",
                                  "price_ht",
                                  "kind",
                                  "togglable",
                                  "default_selected",
                                  "min_monthly"
                                ]
                              }
                            },
                            "updated_at": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            }
                          },
                          "required": [
                            "description_md",
                            "note_md",
                            "lines",
                            "updated_at"
                          ]
                        },
                        "signature": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "version_number": {
                                  "type": "number"
                                },
                                "version_id": {
                                  "type": "string"
                                },
                                "selected_line_ids": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "signer_name": {
                                  "type": "string"
                                },
                                "signer_role": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "signer_email": {
                                  "type": "string"
                                },
                                "signed_at": {
                                  "type": "string"
                                },
                                "document_hash": {
                                  "type": "string"
                                },
                                "ip": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "user_agent": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "locale": {
                                  "type": "string"
                                },
                                "otp_verified_at": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "signature_image": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "typed_name": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "version_number",
                                "version_id",
                                "selected_line_ids",
                                "signer_name",
                                "signer_role",
                                "signer_email",
                                "signed_at",
                                "document_hash",
                                "ip",
                                "user_agent",
                                "locale",
                                "otp_verified_at",
                                "signature_image",
                                "typed_name"
                              ]
                            }
                          ]
                        },
                        "lastSigned": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "version_number": {
                                  "type": "number"
                                },
                                "signed_at": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "version_number",
                                "signed_at"
                              ]
                            }
                          ]
                        }
                      },
                      "required": [
                        "quote",
                        "company",
                        "versions",
                        "currentVersion",
                        "currentLines",
                        "draft",
                        "signature",
                        "lastSigned"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_quote_for_edit",
        "summary": "Lecture. Devis complet tel que l'éditeur le voit : versions, prestations, totaux, régime de TVA.",
        "description": "Lecture. Devis complet tel que l'éditeur le voit : versions, prestations, totaux, régime de TVA.\n\nPortée requise : `read`.",
        "tags": [
          "quotes"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "quote": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "title": {
                              "type": "string"
                            },
                            "slug": {
                              "type": "string"
                            },
                            "locale": {
                              "type": "string"
                            },
                            "number": {
                              "type": "string"
                            },
                            "validity_days": {
                              "type": "number"
                            },
                            "regime": {
                              "type": "string",
                              "enum": [
                                "FR_20",
                                "UE_AUTOLIQ",
                                "HORS_UE",
                                "EXONERE"
                              ]
                            },
                            "vat_exemption_note": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "current_version_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "client": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "company": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "country": {
                                  "type": "string"
                                },
                                "siret": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "vat_number": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "email": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "phone": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "address_line1": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "address_line2": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "postal_code": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "city": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "id",
                                "name",
                                "company",
                                "country",
                                "siret",
                                "vat_number",
                                "email",
                                "phone",
                                "address_line1",
                                "address_line2",
                                "postal_code",
                                "city"
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "title",
                            "slug",
                            "locale",
                            "number",
                            "validity_days",
                            "regime",
                            "vat_exemption_note",
                            "current_version_id",
                            "client"
                          ]
                        },
                        "company": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "name": {
                                  "type": "string"
                                },
                                "legal_name": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "siret": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "vat_number": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "country": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "address": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "contact_email": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "phone": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "bank_name": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "iban": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "bic": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "name",
                                "legal_name",
                                "siret",
                                "vat_number",
                                "country",
                                "address",
                                "contact_email",
                                "phone",
                                "bank_name",
                                "iban",
                                "bic"
                              ]
                            }
                          ]
                        },
                        "versions": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "version_number": {
                                "type": "number"
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "version_number",
                              "created_at"
                            ]
                          }
                        },
                        "currentVersion": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "created_at": {
                                  "type": "string"
                                },
                                "created_by": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "description_md": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "id": {
                                  "type": "string"
                                },
                                "note_md": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "quote_id": {
                                  "type": "string"
                                },
                                "version_number": {
                                  "type": "number"
                                }
                              },
                              "required": [
                                "created_at",
                                "created_by",
                                "description_md",
                                "id",
                                "note_md",
                                "quote_id",
                                "version_number"
                              ]
                            }
                          ]
                        },
                        "currentLines": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "position": {
                                "type": "number"
                              },
                              "name": {
                                "type": "string"
                              },
                              "description_md": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "price_ht": {
                                "type": "number"
                              },
                              "kind": {
                                "type": "string",
                                "enum": [
                                  "fixed",
                                  "monthly",
                                  "commission"
                                ]
                              },
                              "togglable": {
                                "type": "boolean"
                              },
                              "default_selected": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "id",
                              "position",
                              "name",
                              "description_md",
                              "price_ht",
                              "kind",
                              "togglable",
                              "default_selected"
                            ]
                          }
                        },
                        "draft": {
                          "type": "object",
                          "properties": {
                            "description_md": {
                              "type": "string"
                            },
                            "note_md": {
                              "type": "string"
                            },
                            "lines": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "description_md": {
                                    "type": "string"
                                  },
                                  "price_ht": {
                                    "type": "number"
                                  },
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "fixed",
                                      "monthly",
                                      "commission"
                                    ]
                                  },
                                  "togglable": {
                                    "type": "boolean"
                                  },
                                  "default_selected": {
                                    "type": "boolean"
                                  },
                                  "min_monthly": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "number"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "name",
                                  "description_md",
                                  "price_ht",
                                  "kind",
                                  "togglable",
                                  "default_selected",
                                  "min_monthly"
                                ]
                              }
                            },
                            "updated_at": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            }
                          },
                          "required": [
                            "description_md",
                            "note_md",
                            "lines",
                            "updated_at"
                          ]
                        },
                        "signature": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "version_number": {
                                  "type": "number"
                                },
                                "version_id": {
                                  "type": "string"
                                },
                                "selected_line_ids": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "signer_name": {
                                  "type": "string"
                                },
                                "signer_role": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "signer_email": {
                                  "type": "string"
                                },
                                "signed_at": {
                                  "type": "string"
                                },
                                "document_hash": {
                                  "type": "string"
                                },
                                "ip": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "user_agent": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "locale": {
                                  "type": "string"
                                },
                                "otp_verified_at": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "signature_image": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "typed_name": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "version_number",
                                "version_id",
                                "selected_line_ids",
                                "signer_name",
                                "signer_role",
                                "signer_email",
                                "signed_at",
                                "document_hash",
                                "ip",
                                "user_agent",
                                "locale",
                                "otp_verified_at",
                                "signature_image",
                                "typed_name"
                              ]
                            }
                          ]
                        },
                        "lastSigned": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "version_number": {
                                  "type": "number"
                                },
                                "signed_at": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "version_number",
                                "signed_at"
                              ]
                            }
                          ]
                        }
                      },
                      "required": [
                        "quote",
                        "company",
                        "versions",
                        "currentVersion",
                        "currentLines",
                        "draft",
                        "signature",
                        "lastSigned"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/update_quote_meta": {
      "post": {
        "operationId": "update_quote_meta",
        "summary": "Écriture. Modifie l'en-tête d'un devis : titre, langue, durée de validité.",
        "description": "Écriture. Modifie l'en-tête d'un devis : titre, langue, durée de validité.\n\nPortée requise : `write`.",
        "tags": [
          "quotes"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "locale": {
                    "type": "string",
                    "enum": [
                      "fr",
                      "en",
                      "es"
                    ]
                  },
                  "validity_days": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 365
                  },
                  "regime": {
                    "type": "string",
                    "enum": [
                      "FR_20",
                      "UE_AUTOLIQ",
                      "HORS_UE",
                      "EXONERE"
                    ]
                  },
                  "vat_exemption_note": {
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "not": {}
                          },
                          {
                            "type": "string",
                            "maxLength": 300
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "const": ""
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "title",
                  "locale",
                  "validity_days",
                  "regime"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "ok": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "ok"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/save_quote_draft": {
      "post": {
        "operationId": "save_quote_draft",
        "summary": "Écriture. Enregistre le brouillon de la version en cours, sans la publier ni créer de version nouvelle. Ce qui n'est pas nommé reste tel quel : omettre description_md ou note_md les conserve, un texte vide les efface. Les prestations, elles, remplacent toujours la liste entière.",
        "description": "Écriture. Enregistre le brouillon de la version en cours, sans la publier ni créer de version nouvelle. Ce qui n'est pas nommé reste tel quel : omettre description_md ou note_md les conserve, un texte vide les efface. Les prestations, elles, remplacent toujours la liste entière.\n\nPortée requise : `write`.",
        "tags": [
          "quotes"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "quote_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "description_md": {
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "not": {}
                          },
                          {
                            "type": "string",
                            "maxLength": 50000
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "const": ""
                      }
                    ]
                  },
                  "note_md": {
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "not": {}
                          },
                          {
                            "type": "string",
                            "maxLength": 50000
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "const": ""
                      }
                    ]
                  },
                  "lines": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string",
                          "maxLength": 300
                        },
                        "description_md": {
                          "anyOf": [
                            {
                              "anyOf": [
                                {
                                  "not": {}
                                },
                                {
                                  "type": "string",
                                  "maxLength": 20000
                                }
                              ]
                            },
                            {
                              "type": "string",
                              "const": ""
                            }
                          ]
                        },
                        "price_ht": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 1000000
                        },
                        "kind": {
                          "type": "string",
                          "enum": [
                            "fixed",
                            "monthly",
                            "commission"
                          ]
                        },
                        "togglable": {
                          "type": "boolean"
                        },
                        "default_selected": {
                          "type": "boolean"
                        },
                        "min_monthly": {
                          "anyOf": [
                            {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 1000000
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "id": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 100
                        }
                      },
                      "required": [
                        "name",
                        "price_ht",
                        "kind",
                        "togglable",
                        "default_selected",
                        "id"
                      ],
                      "additionalProperties": false
                    },
                    "maxItems": 200
                  },
                  "last_editor": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                  }
                },
                "required": [
                  "quote_id",
                  "lines",
                  "last_editor"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "ok": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "ok"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/save_new_quote_version": {
      "post": {
        "operationId": "save_new_quote_version",
        "summary": "Écriture. Fige une nouvelle version du devis. C'est elle que le client verra à l'adresse publique. Ce qui n'est pas nommé est repris du brouillon : omettre description_md ou note_md publie les textes en cours, un texte vide publie du vide.",
        "description": "Écriture. Fige une nouvelle version du devis. C'est elle que le client verra à l'adresse publique. Ce qui n'est pas nommé est repris du brouillon : omettre description_md ou note_md publie les textes en cours, un texte vide publie du vide.\n\nPortée requise : `write`.",
        "tags": [
          "quotes"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "quote_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "description_md": {
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "not": {}
                          },
                          {
                            "type": "string",
                            "maxLength": 50000
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "const": ""
                      }
                    ]
                  },
                  "note_md": {
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "not": {}
                          },
                          {
                            "type": "string",
                            "maxLength": 50000
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "const": ""
                      }
                    ]
                  },
                  "lines": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 300
                        },
                        "description_md": {
                          "anyOf": [
                            {
                              "anyOf": [
                                {
                                  "not": {}
                                },
                                {
                                  "type": "string",
                                  "maxLength": 20000
                                }
                              ]
                            },
                            {
                              "type": "string",
                              "const": ""
                            }
                          ]
                        },
                        "price_ht": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 1000000
                        },
                        "kind": {
                          "type": "string",
                          "enum": [
                            "fixed",
                            "monthly",
                            "commission"
                          ]
                        },
                        "togglable": {
                          "type": "boolean"
                        },
                        "default_selected": {
                          "type": "boolean"
                        },
                        "min_monthly": {
                          "anyOf": [
                            {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 1000000
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "name",
                        "price_ht",
                        "kind",
                        "togglable",
                        "default_selected"
                      ],
                      "additionalProperties": false
                    },
                    "maxItems": 200
                  }
                },
                "required": [
                  "quote_id",
                  "lines"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "version_id": {
                          "type": "string"
                        },
                        "version_number": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "version_id",
                        "version_number"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/restore_quote_version": {
      "post": {
        "operationId": "restore_quote_version",
        "summary": "Écriture. Remet le brouillon du devis sur le contenu d'une version déjà publiée : description, notes et prestations. Rien n'est publié et aucune version n'est retirée, le client continue de lire celle qu'il lisait ; il faut publier ensuite pour lui remettre ce contenu, qui deviendra une version de plus. Le brouillon en cours est remplacé, et ce qu'il portait de non publié est perdu.",
        "description": "Écriture. Remet le brouillon du devis sur le contenu d'une version déjà publiée : description, notes et prestations. Rien n'est publié et aucune version n'est retirée, le client continue de lire celle qu'il lisait ; il faut publier ensuite pour lui remettre ce contenu, qui deviendra une version de plus. Le brouillon en cours est remplacé, et ce qu'il portait de non publié est perdu.\n\nPortée requise : `write`.",
        "tags": [
          "quotes"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "quote_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "version_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "last_editor": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                  }
                },
                "required": [
                  "quote_id",
                  "version_id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "description_md": {
                          "type": "string"
                        },
                        "note_md": {
                          "type": "string"
                        },
                        "lines": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "description_md": {
                                "type": "string"
                              },
                              "price_ht": {
                                "type": "number"
                              },
                              "kind": {
                                "type": "string",
                                "enum": [
                                  "fixed",
                                  "monthly",
                                  "commission"
                                ]
                              },
                              "togglable": {
                                "type": "boolean"
                              },
                              "default_selected": {
                                "type": "boolean"
                              },
                              "min_monthly": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "number"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "description_md",
                              "price_ht",
                              "kind",
                              "togglable",
                              "default_selected",
                              "min_monthly"
                            ]
                          }
                        },
                        "version_number": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "description_md",
                        "note_md",
                        "lines",
                        "version_number"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/add_quote_comment_as_admin": {
      "post": {
        "operationId": "add_quote_comment_as_admin",
        "summary": "Écriture. Écrit dans le fil de commentaires d'une version de devis, au nom de l'agence. Le fil est visible du client.",
        "description": "Écriture. Écrit dans le fil de commentaires d'une version de devis, au nom de l'agence. Le fil est visible du client.\n\nPortée requise : `write`.",
        "tags": [
          "quote-comments"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "slug": {
                    "type": "string",
                    "minLength": 4,
                    "maxLength": 40
                  },
                  "version": {
                    "type": "integer",
                    "exclusiveMinimum": 0
                  },
                  "body": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 2000
                  },
                  "parent_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "anchor": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "line",
                              "context",
                              "notes",
                              "totals"
                            ]
                          },
                          "line_id": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uuid"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "excerpt": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 300
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "slug",
                  "version",
                  "body"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "parent_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "author_name": {
                          "type": "string"
                        },
                        "is_admin": {
                          "type": "boolean"
                        },
                        "body": {
                          "type": "string"
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "anchor_type": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "const": "notes"
                            },
                            {
                              "const": "line"
                            },
                            {
                              "const": "totals"
                            },
                            {
                              "const": "context"
                            }
                          ]
                        },
                        "anchor_line_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "anchor_excerpt": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "parent_id",
                        "author_name",
                        "is_admin",
                        "body",
                        "created_at",
                        "anchor_type",
                        "anchor_line_id",
                        "anchor_excerpt"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_tasks": {
      "get": {
        "operationId": "list_tasks_get",
        "summary": "Lecture. Tâches de l'équipe, éventuellement restreintes à une fiche client ou à une réunion, échéances les plus proches en tête et tâches sans date en queue. Se parcourt par tranches avec limit et offset, seul moyen d'atteindre la fin d'une longue liste, que le plafond de réponse coupe.",
        "description": "Lecture. Tâches de l'équipe, éventuellement restreintes à une fiche client ou à une réunion, échéances les plus proches en tête et tâches sans date en queue. Se parcourt par tranches avec limit et offset, seul moyen d'atteindre la fin d'une longue liste, que le plafond de réponse coupe.\n\nPortée requise : `read`.",
        "tags": [
          "tasks"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "client_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "meeting_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (500 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500,
              "description": "Combien de lignes rendre au plus (500 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "description": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "proposed",
                              "backlog",
                              "todo",
                              "doing",
                              "done"
                            ]
                          },
                          "priority": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "const": "low"
                              },
                              {
                                "const": "medium"
                              },
                              {
                                "const": "high"
                              },
                              {
                                "const": "urgent"
                              }
                            ]
                          },
                          "visibility": {
                            "type": "string",
                            "enum": [
                              "public",
                              "team",
                              "private"
                            ]
                          },
                          "created_by": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "client_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "client_name": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "meeting_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "meeting_title": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "start_on": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "due_on": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "recurrence": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "every": {
                                    "type": "number"
                                  },
                                  "unit": {
                                    "type": "string",
                                    "enum": [
                                      "day",
                                      "week",
                                      "month",
                                      "year"
                                    ]
                                  }
                                },
                                "required": [
                                  "every",
                                  "unit"
                                ]
                              }
                            ]
                          },
                          "completed_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "updated_at": {
                            "type": "string"
                          },
                          "assignee_ids": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "client_assignee_ids": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "tags": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "depends_on": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "title": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "status": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "const": "proposed"
                                    },
                                    {
                                      "const": "backlog"
                                    },
                                    {
                                      "const": "todo"
                                    },
                                    {
                                      "const": "doing"
                                    },
                                    {
                                      "const": "done"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "id",
                                "title",
                                "status"
                              ]
                            }
                          },
                          "blocks": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "title": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "status": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "const": "proposed"
                                    },
                                    {
                                      "const": "backlog"
                                    },
                                    {
                                      "const": "todo"
                                    },
                                    {
                                      "const": "doing"
                                    },
                                    {
                                      "const": "done"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "id",
                                "title",
                                "status"
                              ]
                            }
                          },
                          "comment_count": {
                            "type": "number"
                          }
                        },
                        "required": [
                          "id",
                          "title",
                          "description",
                          "status",
                          "priority",
                          "visibility",
                          "created_by",
                          "client_id",
                          "client_name",
                          "meeting_id",
                          "meeting_title",
                          "start_on",
                          "due_on",
                          "recurrence",
                          "completed_at",
                          "created_at",
                          "updated_at",
                          "assignee_ids",
                          "client_assignee_ids",
                          "tags",
                          "depends_on",
                          "blocks",
                          "comment_count"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_tasks",
        "summary": "Lecture. Tâches de l'équipe, éventuellement restreintes à une fiche client ou à une réunion, échéances les plus proches en tête et tâches sans date en queue. Se parcourt par tranches avec limit et offset, seul moyen d'atteindre la fin d'une longue liste, que le plafond de réponse coupe.",
        "description": "Lecture. Tâches de l'équipe, éventuellement restreintes à une fiche client ou à une réunion, échéances les plus proches en tête et tâches sans date en queue. Se parcourt par tranches avec limit et offset, seul moyen d'atteindre la fin d'une longue liste, que le plafond de réponse coupe.\n\nPortée requise : `read`.",
        "tags": [
          "tasks"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "meeting_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 500,
                    "description": "Combien de lignes rendre au plus (500 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "description": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "proposed",
                              "backlog",
                              "todo",
                              "doing",
                              "done"
                            ]
                          },
                          "priority": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "const": "low"
                              },
                              {
                                "const": "medium"
                              },
                              {
                                "const": "high"
                              },
                              {
                                "const": "urgent"
                              }
                            ]
                          },
                          "visibility": {
                            "type": "string",
                            "enum": [
                              "public",
                              "team",
                              "private"
                            ]
                          },
                          "created_by": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "client_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "client_name": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "meeting_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "meeting_title": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "start_on": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "due_on": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "recurrence": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "every": {
                                    "type": "number"
                                  },
                                  "unit": {
                                    "type": "string",
                                    "enum": [
                                      "day",
                                      "week",
                                      "month",
                                      "year"
                                    ]
                                  }
                                },
                                "required": [
                                  "every",
                                  "unit"
                                ]
                              }
                            ]
                          },
                          "completed_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "updated_at": {
                            "type": "string"
                          },
                          "assignee_ids": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "client_assignee_ids": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "tags": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "depends_on": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "title": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "status": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "const": "proposed"
                                    },
                                    {
                                      "const": "backlog"
                                    },
                                    {
                                      "const": "todo"
                                    },
                                    {
                                      "const": "doing"
                                    },
                                    {
                                      "const": "done"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "id",
                                "title",
                                "status"
                              ]
                            }
                          },
                          "blocks": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "title": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "status": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "const": "proposed"
                                    },
                                    {
                                      "const": "backlog"
                                    },
                                    {
                                      "const": "todo"
                                    },
                                    {
                                      "const": "doing"
                                    },
                                    {
                                      "const": "done"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "id",
                                "title",
                                "status"
                              ]
                            }
                          },
                          "comment_count": {
                            "type": "number"
                          }
                        },
                        "required": [
                          "id",
                          "title",
                          "description",
                          "status",
                          "priority",
                          "visibility",
                          "created_by",
                          "client_id",
                          "client_name",
                          "meeting_id",
                          "meeting_title",
                          "start_on",
                          "due_on",
                          "recurrence",
                          "completed_at",
                          "created_at",
                          "updated_at",
                          "assignee_ids",
                          "client_assignee_ids",
                          "tags",
                          "depends_on",
                          "blocks",
                          "comment_count"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_task": {
      "get": {
        "operationId": "get_task_get",
        "summary": "Lecture. Une tâche et ses rattachements.",
        "description": "Lecture. Une tâche et ses rattachements.\n\nPortée requise : `read`.",
        "tags": [
          "tasks"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "anyOf": [
                        {
                          "type": "null"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "proposed",
                                "backlog",
                                "todo",
                                "doing",
                                "done"
                              ]
                            },
                            "priority": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "const": "low"
                                },
                                {
                                  "const": "medium"
                                },
                                {
                                  "const": "high"
                                },
                                {
                                  "const": "urgent"
                                }
                              ]
                            },
                            "visibility": {
                              "type": "string",
                              "enum": [
                                "public",
                                "team",
                                "private"
                              ]
                            },
                            "created_by": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "client_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "client_name": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "meeting_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "meeting_title": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "start_on": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "due_on": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "recurrence": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "every": {
                                      "type": "number"
                                    },
                                    "unit": {
                                      "type": "string",
                                      "enum": [
                                        "day",
                                        "week",
                                        "month",
                                        "year"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "every",
                                    "unit"
                                  ]
                                }
                              ]
                            },
                            "completed_at": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "created_at": {
                              "type": "string"
                            },
                            "updated_at": {
                              "type": "string"
                            },
                            "assignee_ids": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "client_assignee_ids": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "tags": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "depends_on": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "string"
                                      }
                                    ]
                                  },
                                  "status": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "const": "proposed"
                                      },
                                      {
                                        "const": "backlog"
                                      },
                                      {
                                        "const": "todo"
                                      },
                                      {
                                        "const": "doing"
                                      },
                                      {
                                        "const": "done"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "title",
                                  "status"
                                ]
                              }
                            },
                            "blocks": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "string"
                                      }
                                    ]
                                  },
                                  "status": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "const": "proposed"
                                      },
                                      {
                                        "const": "backlog"
                                      },
                                      {
                                        "const": "todo"
                                      },
                                      {
                                        "const": "doing"
                                      },
                                      {
                                        "const": "done"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "title",
                                  "status"
                                ]
                              }
                            },
                            "comment_count": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "id",
                            "title",
                            "description",
                            "status",
                            "priority",
                            "visibility",
                            "created_by",
                            "client_id",
                            "client_name",
                            "meeting_id",
                            "meeting_title",
                            "start_on",
                            "due_on",
                            "recurrence",
                            "completed_at",
                            "created_at",
                            "updated_at",
                            "assignee_ids",
                            "client_assignee_ids",
                            "tags",
                            "depends_on",
                            "blocks",
                            "comment_count"
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_task",
        "summary": "Lecture. Une tâche et ses rattachements.",
        "description": "Lecture. Une tâche et ses rattachements.\n\nPortée requise : `read`.",
        "tags": [
          "tasks"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "anyOf": [
                        {
                          "type": "null"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "proposed",
                                "backlog",
                                "todo",
                                "doing",
                                "done"
                              ]
                            },
                            "priority": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "const": "low"
                                },
                                {
                                  "const": "medium"
                                },
                                {
                                  "const": "high"
                                },
                                {
                                  "const": "urgent"
                                }
                              ]
                            },
                            "visibility": {
                              "type": "string",
                              "enum": [
                                "public",
                                "team",
                                "private"
                              ]
                            },
                            "created_by": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "client_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "client_name": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "meeting_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "meeting_title": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "start_on": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "due_on": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "recurrence": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "every": {
                                      "type": "number"
                                    },
                                    "unit": {
                                      "type": "string",
                                      "enum": [
                                        "day",
                                        "week",
                                        "month",
                                        "year"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "every",
                                    "unit"
                                  ]
                                }
                              ]
                            },
                            "completed_at": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "created_at": {
                              "type": "string"
                            },
                            "updated_at": {
                              "type": "string"
                            },
                            "assignee_ids": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "client_assignee_ids": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "tags": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "depends_on": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "string"
                                      }
                                    ]
                                  },
                                  "status": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "const": "proposed"
                                      },
                                      {
                                        "const": "backlog"
                                      },
                                      {
                                        "const": "todo"
                                      },
                                      {
                                        "const": "doing"
                                      },
                                      {
                                        "const": "done"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "title",
                                  "status"
                                ]
                              }
                            },
                            "blocks": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "string"
                                      }
                                    ]
                                  },
                                  "status": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "const": "proposed"
                                      },
                                      {
                                        "const": "backlog"
                                      },
                                      {
                                        "const": "todo"
                                      },
                                      {
                                        "const": "doing"
                                      },
                                      {
                                        "const": "done"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "title",
                                  "status"
                                ]
                              }
                            },
                            "comment_count": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "id",
                            "title",
                            "description",
                            "status",
                            "priority",
                            "visibility",
                            "created_by",
                            "client_id",
                            "client_name",
                            "meeting_id",
                            "meeting_title",
                            "start_on",
                            "due_on",
                            "recurrence",
                            "completed_at",
                            "created_at",
                            "updated_at",
                            "assignee_ids",
                            "client_assignee_ids",
                            "tags",
                            "depends_on",
                            "blocks",
                            "comment_count"
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/create_task": {
      "post": {
        "operationId": "create_task",
        "summary": "Écriture. Crée une tâche. Sa visibilité décide qui la voit : l'équipe et le client, l'équipe seule, ou son auteur et ceux à qui elle est confiée. Une règle « recurrence » ({ every, unit : day | week | month | year }) la fait se répéter : la suivante naît quand on la termine, à l'échéance décalée d'un pas, et exige donc une échéance. « depends_on_ids » dit les tâches qu'elle attend : elle est signalée bloquée tant que l'une d'elles n'est pas terminée.",
        "description": "Écriture. Crée une tâche. Sa visibilité décide qui la voit : l'équipe et le client, l'équipe seule, ou son auteur et ceux à qui elle est confiée. Une règle « recurrence » ({ every, unit : day | week | month | year }) la fait se répéter : la suivante naît quand on la termine, à l'échéance décalée d'un pas, et exige donc une échéance. « depends_on_ids » dit les tâches qu'elle attend : elle est signalée bloquée tant que l'une d'elles n'est pas terminée.\n\nPortée requise : `write`.",
        "tags": [
          "tasks"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 300
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 20000
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "proposed",
                      "backlog",
                      "todo",
                      "doing",
                      "done"
                    ]
                  },
                  "priority": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "low",
                          "medium",
                          "high",
                          "urgent"
                        ]
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "visibility": {
                    "type": "string",
                    "enum": [
                      "public",
                      "team",
                      "private"
                    ]
                  },
                  "client_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "meeting_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "start_on": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "due_on": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "assignee_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "maxItems": 20
                  },
                  "client_assignee_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "maxItems": 20
                  },
                  "tags": {
                    "allOf": [
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "maxItems": 40
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "maxLength": 40
                        },
                        "maxItems": 20
                      }
                    ]
                  },
                  "depends_on_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "maxItems": 20
                  },
                  "recurrence": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "every": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 99
                          },
                          "unit": {
                            "type": "string",
                            "enum": [
                              "day",
                              "week",
                              "month",
                              "year"
                            ]
                          }
                        },
                        "required": [
                          "every",
                          "unit"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "title"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "proposed",
                            "backlog",
                            "todo",
                            "doing",
                            "done"
                          ]
                        },
                        "priority": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "const": "low"
                            },
                            {
                              "const": "medium"
                            },
                            {
                              "const": "high"
                            },
                            {
                              "const": "urgent"
                            }
                          ]
                        },
                        "visibility": {
                          "type": "string",
                          "enum": [
                            "public",
                            "team",
                            "private"
                          ]
                        },
                        "created_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "client_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "client_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "meeting_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "meeting_title": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "start_on": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "due_on": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "recurrence": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "every": {
                                  "type": "number"
                                },
                                "unit": {
                                  "type": "string",
                                  "enum": [
                                    "day",
                                    "week",
                                    "month",
                                    "year"
                                  ]
                                }
                              },
                              "required": [
                                "every",
                                "unit"
                              ]
                            }
                          ]
                        },
                        "completed_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        },
                        "assignee_ids": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "client_assignee_ids": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "tags": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "depends_on": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "title": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "status": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "const": "proposed"
                                  },
                                  {
                                    "const": "backlog"
                                  },
                                  {
                                    "const": "todo"
                                  },
                                  {
                                    "const": "doing"
                                  },
                                  {
                                    "const": "done"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "title",
                              "status"
                            ]
                          }
                        },
                        "blocks": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "title": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "status": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "const": "proposed"
                                  },
                                  {
                                    "const": "backlog"
                                  },
                                  {
                                    "const": "todo"
                                  },
                                  {
                                    "const": "doing"
                                  },
                                  {
                                    "const": "done"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "title",
                              "status"
                            ]
                          }
                        },
                        "comment_count": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "id",
                        "title",
                        "description",
                        "status",
                        "priority",
                        "visibility",
                        "created_by",
                        "client_id",
                        "client_name",
                        "meeting_id",
                        "meeting_title",
                        "start_on",
                        "due_on",
                        "recurrence",
                        "completed_at",
                        "created_at",
                        "updated_at",
                        "assignee_ids",
                        "client_assignee_ids",
                        "tags",
                        "depends_on",
                        "blocks",
                        "comment_count"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/update_task": {
      "post": {
        "operationId": "update_task",
        "summary": "Écriture. Modifie une tâche : titre, statut, priorité, échéance, répétition, étiquettes, assignation, dépendances. Passer une tâche récurrente en « done » fait naître sa prochaine occurrence ; la rouvrir la reprend si personne n'y a touché. Une répétition posée sur une tâche sans échéance est refusée, comme une dépendance qui ferait tourner la chaîne en rond. « depends_on_ids » remplace la liste entière : [] libère la tâche.",
        "description": "Écriture. Modifie une tâche : titre, statut, priorité, échéance, répétition, étiquettes, assignation, dépendances. Passer une tâche récurrente en « done » fait naître sa prochaine occurrence ; la rouvrir la reprend si personne n'y a touché. Une répétition posée sur une tâche sans échéance est refusée, comme une dépendance qui ferait tourner la chaîne en rond. « depends_on_ids » remplace la liste entière : [] libère la tâche.\n\nPortée requise : `write`.",
        "tags": [
          "tasks"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 300
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 20000
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "proposed",
                      "backlog",
                      "todo",
                      "doing",
                      "done"
                    ]
                  },
                  "priority": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "low",
                          "medium",
                          "high",
                          "urgent"
                        ]
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "visibility": {
                    "type": "string",
                    "enum": [
                      "public",
                      "team",
                      "private"
                    ]
                  },
                  "client_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "meeting_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "start_on": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "due_on": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "assignee_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "maxItems": 20
                  },
                  "client_assignee_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "maxItems": 20
                  },
                  "tags": {
                    "allOf": [
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "maxItems": 40
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "maxLength": 40
                        },
                        "maxItems": 20
                      }
                    ]
                  },
                  "depends_on_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "maxItems": 20
                  },
                  "recurrence": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "every": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 99
                          },
                          "unit": {
                            "type": "string",
                            "enum": [
                              "day",
                              "week",
                              "month",
                              "year"
                            ]
                          }
                        },
                        "required": [
                          "every",
                          "unit"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "proposed",
                            "backlog",
                            "todo",
                            "doing",
                            "done"
                          ]
                        },
                        "priority": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "const": "low"
                            },
                            {
                              "const": "medium"
                            },
                            {
                              "const": "high"
                            },
                            {
                              "const": "urgent"
                            }
                          ]
                        },
                        "visibility": {
                          "type": "string",
                          "enum": [
                            "public",
                            "team",
                            "private"
                          ]
                        },
                        "created_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "client_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "client_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "meeting_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "meeting_title": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "start_on": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "due_on": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "recurrence": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "every": {
                                  "type": "number"
                                },
                                "unit": {
                                  "type": "string",
                                  "enum": [
                                    "day",
                                    "week",
                                    "month",
                                    "year"
                                  ]
                                }
                              },
                              "required": [
                                "every",
                                "unit"
                              ]
                            }
                          ]
                        },
                        "completed_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        },
                        "assignee_ids": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "client_assignee_ids": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "tags": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "depends_on": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "title": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "status": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "const": "proposed"
                                  },
                                  {
                                    "const": "backlog"
                                  },
                                  {
                                    "const": "todo"
                                  },
                                  {
                                    "const": "doing"
                                  },
                                  {
                                    "const": "done"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "title",
                              "status"
                            ]
                          }
                        },
                        "blocks": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "title": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "status": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "const": "proposed"
                                  },
                                  {
                                    "const": "backlog"
                                  },
                                  {
                                    "const": "todo"
                                  },
                                  {
                                    "const": "doing"
                                  },
                                  {
                                    "const": "done"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "title",
                              "status"
                            ]
                          }
                        },
                        "comment_count": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "id",
                        "title",
                        "description",
                        "status",
                        "priority",
                        "visibility",
                        "created_by",
                        "client_id",
                        "client_name",
                        "meeting_id",
                        "meeting_title",
                        "start_on",
                        "due_on",
                        "recurrence",
                        "completed_at",
                        "created_at",
                        "updated_at",
                        "assignee_ids",
                        "client_assignee_ids",
                        "tags",
                        "depends_on",
                        "blocks",
                        "comment_count"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_task": {
      "post": {
        "operationId": "delete_task",
        "summary": "Suppression définitive, irréversible. Supprime définitivement une tâche.",
        "description": "Suppression définitive, irréversible. Supprime définitivement une tâche.\n\nPortée requise : `destructive`.",
        "tags": [
          "tasks"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "ok": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "ok"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_task_tags": {
      "get": {
        "operationId": "list_task_tags_get",
        "summary": "Lecture. Étiquettes de tâches déjà employées, avec le nombre de tâches qui les portent.",
        "description": "Lecture. Étiquettes de tâches déjà employées, avec le nombre de tâches qui les portent.\n\nPortée requise : `read`.",
        "tags": [
          "tasks"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "tag": {
                            "type": "string"
                          },
                          "count": {
                            "type": "number"
                          },
                          "color": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "const": "blue"
                              },
                              {
                                "const": "violet"
                              },
                              {
                                "const": "green"
                              },
                              {
                                "const": "yellow"
                              },
                              {
                                "const": "orange"
                              },
                              {
                                "const": "red"
                              }
                            ]
                          }
                        },
                        "required": [
                          "tag",
                          "count"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_task_tags",
        "summary": "Lecture. Étiquettes de tâches déjà employées, avec le nombre de tâches qui les portent.",
        "description": "Lecture. Étiquettes de tâches déjà employées, avec le nombre de tâches qui les portent.\n\nPortée requise : `read`.",
        "tags": [
          "tasks"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "tag": {
                            "type": "string"
                          },
                          "count": {
                            "type": "number"
                          },
                          "color": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "const": "blue"
                              },
                              {
                                "const": "violet"
                              },
                              {
                                "const": "green"
                              },
                              {
                                "const": "yellow"
                              },
                              {
                                "const": "orange"
                              },
                              {
                                "const": "red"
                              }
                            ]
                          }
                        },
                        "required": [
                          "tag",
                          "count"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_task_members": {
      "get": {
        "operationId": "list_task_members_get",
        "summary": "Lecture. Membres de l'équipe à qui une tâche peut être assignée.",
        "description": "Lecture. Membres de l'équipe à qui une tâche peut être assignée.\n\nPortée requise : `read`.",
        "tags": [
          "tasks"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "current_user_id": {
                          "type": "string"
                        },
                        "members": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "user_id": {
                                "type": "string"
                              },
                              "email": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "name": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "avatar_url": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "user_id",
                              "email",
                              "name",
                              "avatar_url"
                            ]
                          }
                        }
                      },
                      "required": [
                        "current_user_id",
                        "members"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_task_members",
        "summary": "Lecture. Membres de l'équipe à qui une tâche peut être assignée.",
        "description": "Lecture. Membres de l'équipe à qui une tâche peut être assignée.\n\nPortée requise : `read`.",
        "tags": [
          "tasks"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "current_user_id": {
                          "type": "string"
                        },
                        "members": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "user_id": {
                                "type": "string"
                              },
                              "email": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "name": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "avatar_url": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "user_id",
                              "email",
                              "name",
                              "avatar_url"
                            ]
                          }
                        }
                      },
                      "required": [
                        "current_user_id",
                        "members"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_task_comments": {
      "get": {
        "operationId": "list_task_comments_get",
        "summary": "Lecture. Fil d'une tâche, du plus ancien message au plus récent.",
        "description": "Lecture. Fil d'une tâche, du plus ancien message au plus récent.\n\nPortée requise : `read`.",
        "tags": [
          "task-comments"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "task_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (300 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 300,
              "description": "Combien de lignes rendre au plus (300 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "parent_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "anchor_exact": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "anchor_prefix": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "anchor_suffix": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "resolved_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "resolved_by": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "resolved_by_name": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "id": {
                            "type": "string"
                          },
                          "author_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "author_name": {
                            "type": "string"
                          },
                          "author_avatar_url": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "author_side": {
                            "type": "string",
                            "enum": [
                              "client",
                              "team"
                            ]
                          },
                          "body": {
                            "type": "string"
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "edited_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "shared_with_client": {
                            "anyOf": [
                              {
                                "const": false
                              },
                              {
                                "const": true
                              }
                            ]
                          }
                        },
                        "required": [
                          "parent_id",
                          "anchor_exact",
                          "anchor_prefix",
                          "anchor_suffix",
                          "resolved_at",
                          "resolved_by",
                          "resolved_by_name",
                          "id",
                          "author_id",
                          "author_name",
                          "author_avatar_url",
                          "author_side",
                          "body",
                          "created_at",
                          "edited_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_task_comments",
        "summary": "Lecture. Fil d'une tâche, du plus ancien message au plus récent.",
        "description": "Lecture. Fil d'une tâche, du plus ancien message au plus récent.\n\nPortée requise : `read`.",
        "tags": [
          "task-comments"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "task_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 300,
                    "description": "Combien de lignes rendre au plus (300 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "required": [
                  "task_id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "parent_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "anchor_exact": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "anchor_prefix": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "anchor_suffix": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "resolved_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "resolved_by": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "resolved_by_name": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "id": {
                            "type": "string"
                          },
                          "author_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "author_name": {
                            "type": "string"
                          },
                          "author_avatar_url": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "author_side": {
                            "type": "string",
                            "enum": [
                              "client",
                              "team"
                            ]
                          },
                          "body": {
                            "type": "string"
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "edited_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "shared_with_client": {
                            "anyOf": [
                              {
                                "const": false
                              },
                              {
                                "const": true
                              }
                            ]
                          }
                        },
                        "required": [
                          "parent_id",
                          "anchor_exact",
                          "anchor_prefix",
                          "anchor_suffix",
                          "resolved_at",
                          "resolved_by",
                          "resolved_by_name",
                          "id",
                          "author_id",
                          "author_name",
                          "author_avatar_url",
                          "author_side",
                          "body",
                          "created_at",
                          "edited_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/add_task_comment": {
      "post": {
        "operationId": "add_task_comment",
        "summary": "Écriture. Écrit un message dans le fil d'une tâche, au nom du compte connecté. Sur une tâche publique rattachée à une fiche, le client lit ce fil. Une mention s'écrit « @[Nom](identifiant de compte) » et ne prévient que quelqu'un qui voit déjà la tâche. « parent_id » range le message sous une question déjà posée ; « anchor » l'attache à un passage de la description, en reprenant le texte exact du passage et ce qui l'entoure.",
        "description": "Écriture. Écrit un message dans le fil d'une tâche, au nom du compte connecté. Sur une tâche publique rattachée à une fiche, le client lit ce fil. Une mention s'écrit « @[Nom](identifiant de compte) » et ne prévient que quelqu'un qui voit déjà la tâche. « parent_id » range le message sous une question déjà posée ; « anchor » l'attache à un passage de la description, en reprenant le texte exact du passage et ce qui l'entoure.\n\nPortée requise : `write`.",
        "tags": [
          "task-comments"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "task_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "body": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 10000
                  },
                  "parent_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "anchor": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "exact": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 300
                          },
                          "prefix": {
                            "type": "string",
                            "maxLength": 60,
                            "default": ""
                          },
                          "suffix": {
                            "type": "string",
                            "maxLength": 60,
                            "default": ""
                          }
                        },
                        "required": [
                          "exact"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "task_id",
                  "body"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "parent_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "anchor_exact": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "anchor_prefix": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "anchor_suffix": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "resolved_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "resolved_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "resolved_by_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "id": {
                          "type": "string"
                        },
                        "author_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "author_name": {
                          "type": "string"
                        },
                        "author_avatar_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "author_side": {
                          "type": "string",
                          "enum": [
                            "client",
                            "team"
                          ]
                        },
                        "body": {
                          "type": "string"
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "edited_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "shared_with_client": {
                          "anyOf": [
                            {
                              "const": false
                            },
                            {
                              "const": true
                            }
                          ]
                        }
                      },
                      "required": [
                        "parent_id",
                        "anchor_exact",
                        "anchor_prefix",
                        "anchor_suffix",
                        "resolved_at",
                        "resolved_by",
                        "resolved_by_name",
                        "id",
                        "author_id",
                        "author_name",
                        "author_avatar_url",
                        "author_side",
                        "body",
                        "created_at",
                        "edited_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/resolve_task_comment": {
      "post": {
        "operationId": "resolve_task_comment",
        "summary": "Écriture. Clôt la question posée par un fil de tâche (resolved: true) ou la rouvre (false). Se pose sur le premier message d'un fil, jamais sur une réponse, et ne notifie personne.",
        "description": "Écriture. Clôt la question posée par un fil de tâche (resolved: true) ou la rouvre (false). Se pose sur le premier message d'un fil, jamais sur une réponse, et ne notifie personne.\n\nPortée requise : `write`.",
        "tags": [
          "task-comments"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "comment_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "resolved": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "comment_id",
                  "resolved"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "parent_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "anchor_exact": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "anchor_prefix": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "anchor_suffix": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "resolved_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "resolved_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "resolved_by_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "id": {
                          "type": "string"
                        },
                        "author_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "author_name": {
                          "type": "string"
                        },
                        "author_avatar_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "author_side": {
                          "type": "string",
                          "enum": [
                            "client",
                            "team"
                          ]
                        },
                        "body": {
                          "type": "string"
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "edited_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "shared_with_client": {
                          "anyOf": [
                            {
                              "const": false
                            },
                            {
                              "const": true
                            }
                          ]
                        }
                      },
                      "required": [
                        "parent_id",
                        "anchor_exact",
                        "anchor_prefix",
                        "anchor_suffix",
                        "resolved_at",
                        "resolved_by",
                        "resolved_by_name",
                        "id",
                        "author_id",
                        "author_name",
                        "author_avatar_url",
                        "author_side",
                        "body",
                        "created_at",
                        "edited_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/update_task_comment": {
      "post": {
        "operationId": "update_task_comment",
        "summary": "Écriture. Corrige un message du fil d'une tâche, écrit par le compte au nom duquel la clé MCP agit. Un message écrit par quelqu'un d'autre est refusé, par le moteur lui-même. Le fil affichera « modifié » à côté de sa date. Les mentions se réécrivent comme à l'envoi, et une personne que la correction vient de nommer en est prévenue.",
        "description": "Écriture. Corrige un message du fil d'une tâche, écrit par le compte au nom duquel la clé MCP agit. Un message écrit par quelqu'un d'autre est refusé, par le moteur lui-même. Le fil affichera « modifié » à côté de sa date. Les mentions se réécrivent comme à l'envoi, et une personne que la correction vient de nommer en est prévenue.\n\nPortée requise : `write`.",
        "tags": [
          "task-comments"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "task_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "comment_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "body": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 10000
                  }
                },
                "required": [
                  "task_id",
                  "comment_id",
                  "body"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "parent_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "anchor_exact": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "anchor_prefix": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "anchor_suffix": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "resolved_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "resolved_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "resolved_by_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "id": {
                          "type": "string"
                        },
                        "author_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "author_name": {
                          "type": "string"
                        },
                        "author_avatar_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "author_side": {
                          "type": "string",
                          "enum": [
                            "client",
                            "team"
                          ]
                        },
                        "body": {
                          "type": "string"
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "edited_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "shared_with_client": {
                          "anyOf": [
                            {
                              "const": false
                            },
                            {
                              "const": true
                            }
                          ]
                        }
                      },
                      "required": [
                        "parent_id",
                        "anchor_exact",
                        "anchor_prefix",
                        "anchor_suffix",
                        "resolved_at",
                        "resolved_by",
                        "resolved_by_name",
                        "id",
                        "author_id",
                        "author_name",
                        "author_avatar_url",
                        "author_side",
                        "body",
                        "created_at",
                        "edited_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_task_comment": {
      "post": {
        "operationId": "delete_task_comment",
        "summary": "Suppression définitive, irréversible. Supprime définitivement un message du fil d'une tâche, écrit par le compte au nom duquel la clé MCP agit. Refusé pour un message auquel on a répondu : il se corrige, il ne se supprime plus.",
        "description": "Suppression définitive, irréversible. Supprime définitivement un message du fil d'une tâche, écrit par le compte au nom duquel la clé MCP agit. Refusé pour un message auquel on a répondu : il se corrige, il ne se supprime plus.\n\nPortée requise : `destructive`.",
        "tags": [
          "task-comments"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "task_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "comment_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "task_id",
                  "comment_id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_task_views": {
      "get": {
        "operationId": "list_task_views_get",
        "summary": "Lecture. Vues enregistrées de la liste des tâches du compte au nom duquel la clé MCP agit, et laquelle s'ouvre par défaut.",
        "description": "Lecture. Vues enregistrées de la liste des tâches du compte au nom duquel la clé MCP agit, et laquelle s'ouvre par défaut.\n\nPortée requise : `read`.",
        "tags": [
          "task-views"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "views": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "state": {
                                "type": "object",
                                "properties": {
                                  "filters": {
                                    "type": "object",
                                    "properties": {
                                      "search": {
                                        "type": "string"
                                      },
                                      "status": {
                                        "type": "string",
                                        "enum": [
                                          "proposed",
                                          "backlog",
                                          "todo",
                                          "doing",
                                          "done",
                                          "all",
                                          "open"
                                        ]
                                      },
                                      "clientId": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "assigneeId": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "visibility": {
                                        "type": "string",
                                        "enum": [
                                          "public",
                                          "team",
                                          "private",
                                          "all"
                                        ]
                                      },
                                      "tags": {
                                        "type": "array",
                                        "items": {
                                          "type": "string"
                                        }
                                      },
                                      "due": {
                                        "type": "string",
                                        "enum": [
                                          "week",
                                          "all",
                                          "overdue",
                                          "today",
                                          "none"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "search",
                                      "status",
                                      "clientId",
                                      "assigneeId",
                                      "visibility",
                                      "tags",
                                      "due"
                                    ]
                                  },
                                  "sort": {
                                    "type": "string",
                                    "enum": [
                                      "due-asc",
                                      "due-desc",
                                      "priority",
                                      "created-desc",
                                      "completed-desc"
                                    ]
                                  },
                                  "grouping": {
                                    "type": "string",
                                    "enum": [
                                      "client",
                                      "status",
                                      "none",
                                      "priority",
                                      "due",
                                      "completed",
                                      "assignee",
                                      "tag"
                                    ]
                                  },
                                  "layout": {
                                    "type": "string",
                                    "enum": [
                                      "list",
                                      "board",
                                      "calendar"
                                    ]
                                  }
                                },
                                "required": [
                                  "filters",
                                  "sort",
                                  "grouping",
                                  "layout"
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "state"
                            ]
                          }
                        },
                        "default_view_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "views",
                        "default_view_id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_task_views",
        "summary": "Lecture. Vues enregistrées de la liste des tâches du compte au nom duquel la clé MCP agit, et laquelle s'ouvre par défaut.",
        "description": "Lecture. Vues enregistrées de la liste des tâches du compte au nom duquel la clé MCP agit, et laquelle s'ouvre par défaut.\n\nPortée requise : `read`.",
        "tags": [
          "task-views"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "views": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "state": {
                                "type": "object",
                                "properties": {
                                  "filters": {
                                    "type": "object",
                                    "properties": {
                                      "search": {
                                        "type": "string"
                                      },
                                      "status": {
                                        "type": "string",
                                        "enum": [
                                          "proposed",
                                          "backlog",
                                          "todo",
                                          "doing",
                                          "done",
                                          "all",
                                          "open"
                                        ]
                                      },
                                      "clientId": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "assigneeId": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "visibility": {
                                        "type": "string",
                                        "enum": [
                                          "public",
                                          "team",
                                          "private",
                                          "all"
                                        ]
                                      },
                                      "tags": {
                                        "type": "array",
                                        "items": {
                                          "type": "string"
                                        }
                                      },
                                      "due": {
                                        "type": "string",
                                        "enum": [
                                          "week",
                                          "all",
                                          "overdue",
                                          "today",
                                          "none"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "search",
                                      "status",
                                      "clientId",
                                      "assigneeId",
                                      "visibility",
                                      "tags",
                                      "due"
                                    ]
                                  },
                                  "sort": {
                                    "type": "string",
                                    "enum": [
                                      "due-asc",
                                      "due-desc",
                                      "priority",
                                      "created-desc",
                                      "completed-desc"
                                    ]
                                  },
                                  "grouping": {
                                    "type": "string",
                                    "enum": [
                                      "client",
                                      "status",
                                      "none",
                                      "priority",
                                      "due",
                                      "completed",
                                      "assignee",
                                      "tag"
                                    ]
                                  },
                                  "layout": {
                                    "type": "string",
                                    "enum": [
                                      "list",
                                      "board",
                                      "calendar"
                                    ]
                                  }
                                },
                                "required": [
                                  "filters",
                                  "sort",
                                  "grouping",
                                  "layout"
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "state"
                            ]
                          }
                        },
                        "default_view_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "views",
                        "default_view_id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/create_task_view": {
      "post": {
        "operationId": "create_task_view",
        "summary": "Écriture. Enregistre un jeu de filtres, de tri, de regroupement et d'affichage (liste ou tableau) sous un nom, et peut en faire la vue ouverte par défaut.",
        "description": "Écriture. Enregistre un jeu de filtres, de tri, de regroupement et d'affichage (liste ou tableau) sous un nom, et peut en faire la vue ouverte par défaut.\n\nPortée requise : `write`.",
        "tags": [
          "task-views"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "allOf": [
                      {
                        "type": "string",
                        "maxLength": 120
                      },
                      {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 60
                      }
                    ]
                  },
                  "state": {
                    "type": "object",
                    "properties": {
                      "filters": {
                        "type": "object",
                        "properties": {
                          "search": {
                            "type": "string",
                            "maxLength": 200,
                            "default": ""
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "open",
                              "all",
                              "proposed",
                              "backlog",
                              "todo",
                              "doing",
                              "done"
                            ],
                            "default": "open"
                          },
                          "clientId": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uuid"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null
                          },
                          "assigneeId": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uuid"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null
                          },
                          "visibility": {
                            "type": "string",
                            "enum": [
                              "all",
                              "public",
                              "team",
                              "private"
                            ],
                            "default": "all"
                          },
                          "tags": {
                            "allOf": [
                              {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "maxItems": 40
                              },
                              {
                                "type": "array",
                                "items": {
                                  "type": "string",
                                  "maxLength": 40
                                },
                                "maxItems": 20
                              }
                            ],
                            "default": []
                          },
                          "due": {
                            "type": "string",
                            "enum": [
                              "all",
                              "overdue",
                              "today",
                              "week",
                              "none"
                            ],
                            "default": "all"
                          }
                        },
                        "additionalProperties": false,
                        "default": {}
                      },
                      "sort": {
                        "type": "string",
                        "enum": [
                          "due-asc",
                          "due-desc",
                          "priority",
                          "created-desc",
                          "completed-desc"
                        ],
                        "default": "due-asc"
                      },
                      "grouping": {
                        "type": "string",
                        "enum": [
                          "due",
                          "completed",
                          "client",
                          "assignee",
                          "status",
                          "priority",
                          "tag",
                          "none"
                        ],
                        "default": "due"
                      },
                      "layout": {
                        "type": "string",
                        "enum": [
                          "list",
                          "board",
                          "calendar"
                        ],
                        "default": "list"
                      }
                    },
                    "additionalProperties": false
                  },
                  "makeDefault": {
                    "type": "boolean",
                    "default": false
                  }
                },
                "required": [
                  "name",
                  "state"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "state": {
                          "type": "object",
                          "properties": {
                            "filters": {
                              "type": "object",
                              "properties": {
                                "search": {
                                  "type": "string"
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "proposed",
                                    "backlog",
                                    "todo",
                                    "doing",
                                    "done",
                                    "all",
                                    "open"
                                  ]
                                },
                                "clientId": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "assigneeId": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "visibility": {
                                  "type": "string",
                                  "enum": [
                                    "public",
                                    "team",
                                    "private",
                                    "all"
                                  ]
                                },
                                "tags": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "due": {
                                  "type": "string",
                                  "enum": [
                                    "week",
                                    "all",
                                    "overdue",
                                    "today",
                                    "none"
                                  ]
                                }
                              },
                              "required": [
                                "search",
                                "status",
                                "clientId",
                                "assigneeId",
                                "visibility",
                                "tags",
                                "due"
                              ]
                            },
                            "sort": {
                              "type": "string",
                              "enum": [
                                "due-asc",
                                "due-desc",
                                "priority",
                                "created-desc",
                                "completed-desc"
                              ]
                            },
                            "grouping": {
                              "type": "string",
                              "enum": [
                                "client",
                                "status",
                                "none",
                                "priority",
                                "due",
                                "completed",
                                "assignee",
                                "tag"
                              ]
                            },
                            "layout": {
                              "type": "string",
                              "enum": [
                                "list",
                                "board",
                                "calendar"
                              ]
                            }
                          },
                          "required": [
                            "filters",
                            "sort",
                            "grouping",
                            "layout"
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "name",
                        "state"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/update_task_view": {
      "post": {
        "operationId": "update_task_view",
        "summary": "Écriture. Renomme une vue enregistrée, remplace ses réglages, ou les deux.",
        "description": "Écriture. Renomme une vue enregistrée, remplace ses réglages, ou les deux.\n\nPortée requise : `write`.",
        "tags": [
          "task-views"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "name": {
                    "allOf": [
                      {
                        "type": "string",
                        "maxLength": 120
                      },
                      {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 60
                      }
                    ]
                  },
                  "state": {
                    "type": "object",
                    "properties": {
                      "filters": {
                        "type": "object",
                        "properties": {
                          "search": {
                            "type": "string",
                            "maxLength": 200,
                            "default": ""
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "open",
                              "all",
                              "proposed",
                              "backlog",
                              "todo",
                              "doing",
                              "done"
                            ],
                            "default": "open"
                          },
                          "clientId": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uuid"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null
                          },
                          "assigneeId": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uuid"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null
                          },
                          "visibility": {
                            "type": "string",
                            "enum": [
                              "all",
                              "public",
                              "team",
                              "private"
                            ],
                            "default": "all"
                          },
                          "tags": {
                            "allOf": [
                              {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "maxItems": 40
                              },
                              {
                                "type": "array",
                                "items": {
                                  "type": "string",
                                  "maxLength": 40
                                },
                                "maxItems": 20
                              }
                            ],
                            "default": []
                          },
                          "due": {
                            "type": "string",
                            "enum": [
                              "all",
                              "overdue",
                              "today",
                              "week",
                              "none"
                            ],
                            "default": "all"
                          }
                        },
                        "additionalProperties": false,
                        "default": {}
                      },
                      "sort": {
                        "type": "string",
                        "enum": [
                          "due-asc",
                          "due-desc",
                          "priority",
                          "created-desc",
                          "completed-desc"
                        ],
                        "default": "due-asc"
                      },
                      "grouping": {
                        "type": "string",
                        "enum": [
                          "due",
                          "completed",
                          "client",
                          "assignee",
                          "status",
                          "priority",
                          "tag",
                          "none"
                        ],
                        "default": "due"
                      },
                      "layout": {
                        "type": "string",
                        "enum": [
                          "list",
                          "board",
                          "calendar"
                        ],
                        "default": "list"
                      }
                    },
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "state": {
                          "type": "object",
                          "properties": {
                            "filters": {
                              "type": "object",
                              "properties": {
                                "search": {
                                  "type": "string"
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "proposed",
                                    "backlog",
                                    "todo",
                                    "doing",
                                    "done",
                                    "all",
                                    "open"
                                  ]
                                },
                                "clientId": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "assigneeId": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "visibility": {
                                  "type": "string",
                                  "enum": [
                                    "public",
                                    "team",
                                    "private",
                                    "all"
                                  ]
                                },
                                "tags": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "due": {
                                  "type": "string",
                                  "enum": [
                                    "week",
                                    "all",
                                    "overdue",
                                    "today",
                                    "none"
                                  ]
                                }
                              },
                              "required": [
                                "search",
                                "status",
                                "clientId",
                                "assigneeId",
                                "visibility",
                                "tags",
                                "due"
                              ]
                            },
                            "sort": {
                              "type": "string",
                              "enum": [
                                "due-asc",
                                "due-desc",
                                "priority",
                                "created-desc",
                                "completed-desc"
                              ]
                            },
                            "grouping": {
                              "type": "string",
                              "enum": [
                                "client",
                                "status",
                                "none",
                                "priority",
                                "due",
                                "completed",
                                "assignee",
                                "tag"
                              ]
                            },
                            "layout": {
                              "type": "string",
                              "enum": [
                                "list",
                                "board",
                                "calendar"
                              ]
                            }
                          },
                          "required": [
                            "filters",
                            "sort",
                            "grouping",
                            "layout"
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "name",
                        "state"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_task_view": {
      "post": {
        "operationId": "delete_task_view",
        "summary": "Suppression définitive, irréversible. Supprime une vue enregistrée. Les tâches ne bougent pas.",
        "description": "Suppression définitive, irréversible. Supprime une vue enregistrée. Les tâches ne bougent pas.\n\nPortée requise : `destructive`.",
        "tags": [
          "task-views"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "ok": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "ok"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/set_default_task_view": {
      "post": {
        "operationId": "set_default_task_view",
        "summary": "Écriture. Désigne la vue qui s'ouvre par défaut sur la liste des tâches, ou n'en désigne plus aucune avec id nul.",
        "description": "Écriture. Désigne la vue qui s'ouvre par défaut sur la liste des tâches, ou n'en désigne plus aucune avec id nul.\n\nPortée requise : `write`.",
        "tags": [
          "task-views"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "default_view_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "default_view_id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_social_contents": {
      "get": {
        "operationId": "list_social_contents_get",
        "summary": "Lecture. Contenus de publication, des parutions les plus proches aux plus lointaines, avec leurs étiquettes et leurs visuels. Sans client_id, tous ; avec un identifiant, ceux d'une fiche ; avec null, ceux qui ne visent aucune fiche, c'est-à-dire les idées notées avant leur destination. Un contenu porte son texte, son fil et ses visuels : la réponse est vite pleine, et « offset » est le seul moyen d'atteindre la fin de la liste.",
        "description": "Lecture. Contenus de publication, des parutions les plus proches aux plus lointaines, avec leurs étiquettes et leurs visuels. Sans client_id, tous ; avec un identifiant, ceux d'une fiche ; avec null, ceux qui ne visent aucune fiche, c'est-à-dire les idées notées avant leur destination. Un contenu porte son texte, son fil et ses visuels : la réponse est vite pleine, et « offset » est le seul moyen d'atteindre la fin de la liste.\n\nPortée requise : `read`.",
        "tags": [
          "social"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "client_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (500 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500,
              "description": "Combien de lignes rendre au plus (500 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "client_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "client_name": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "title": {
                            "type": "string"
                          },
                          "body": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "tags": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "todo",
                              "doing",
                              "draft",
                              "to_approve",
                              "to_improve",
                              "approved",
                              "scheduled",
                              "published"
                            ]
                          },
                          "scheduled_on": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "scheduled_time": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "published_url": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "published_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "assignee_ids": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "media": {
                            "type": "array",
                            "items": {
                              "anyOf": [
                                {
                                  "type": "object",
                                  "properties": {
                                    "kind": {
                                      "const": "file"
                                    },
                                    "id": {
                                      "type": "string"
                                    },
                                    "file": {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "type": "string"
                                        },
                                        "client_id": {
                                          "anyOf": [
                                            {
                                              "type": "null"
                                            },
                                            {
                                              "type": "string"
                                            }
                                          ]
                                        },
                                        "name": {
                                          "type": "string"
                                        },
                                        "mime_type": {
                                          "type": "string"
                                        },
                                        "size_bytes": {
                                          "type": "number"
                                        },
                                        "has_thumb": {
                                          "type": "boolean"
                                        },
                                        "folder_id": {
                                          "anyOf": [
                                            {
                                              "type": "null"
                                            },
                                            {
                                              "type": "string"
                                            }
                                          ]
                                        },
                                        "created_by": {
                                          "anyOf": [
                                            {
                                              "type": "null"
                                            },
                                            {
                                              "type": "string"
                                            }
                                          ]
                                        },
                                        "created_side": {
                                          "type": "string",
                                          "enum": [
                                            "client",
                                            "agency"
                                          ]
                                        },
                                        "created_at": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "id",
                                        "client_id",
                                        "name",
                                        "mime_type",
                                        "size_bytes",
                                        "has_thumb",
                                        "folder_id",
                                        "created_by",
                                        "created_side",
                                        "created_at"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "kind",
                                    "id",
                                    "file"
                                  ]
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "kind": {
                                      "const": "link"
                                    },
                                    "id": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "kind",
                                    "id",
                                    "url"
                                  ]
                                }
                              ]
                            }
                          },
                          "comments": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "decision": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "const": "approved"
                                    },
                                    {
                                      "const": "rejected"
                                    }
                                  ]
                                },
                                "comment": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "author_name": {
                                  "type": "string"
                                },
                                "author_side": {
                                  "type": "string",
                                  "enum": [
                                    "client",
                                    "agency"
                                  ]
                                },
                                "shared": {
                                  "type": "boolean"
                                },
                                "created_at": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "id",
                                "decision",
                                "comment",
                                "author_name",
                                "author_side",
                                "shared",
                                "created_at"
                              ]
                            }
                          },
                          "created_by": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "updated_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "client_id",
                          "client_name",
                          "title",
                          "body",
                          "tags",
                          "status",
                          "scheduled_on",
                          "scheduled_time",
                          "published_url",
                          "published_at",
                          "assignee_ids",
                          "media",
                          "comments",
                          "created_by",
                          "created_at",
                          "updated_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_social_contents",
        "summary": "Lecture. Contenus de publication, des parutions les plus proches aux plus lointaines, avec leurs étiquettes et leurs visuels. Sans client_id, tous ; avec un identifiant, ceux d'une fiche ; avec null, ceux qui ne visent aucune fiche, c'est-à-dire les idées notées avant leur destination. Un contenu porte son texte, son fil et ses visuels : la réponse est vite pleine, et « offset » est le seul moyen d'atteindre la fin de la liste.",
        "description": "Lecture. Contenus de publication, des parutions les plus proches aux plus lointaines, avec leurs étiquettes et leurs visuels. Sans client_id, tous ; avec un identifiant, ceux d'une fiche ; avec null, ceux qui ne visent aucune fiche, c'est-à-dire les idées notées avant leur destination. Un contenu porte son texte, son fil et ses visuels : la réponse est vite pleine, et « offset » est le seul moyen d'atteindre la fin de la liste.\n\nPortée requise : `read`.",
        "tags": [
          "social"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 500,
                    "description": "Combien de lignes rendre au plus (500 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "client_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "client_name": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "title": {
                            "type": "string"
                          },
                          "body": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "tags": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "todo",
                              "doing",
                              "draft",
                              "to_approve",
                              "to_improve",
                              "approved",
                              "scheduled",
                              "published"
                            ]
                          },
                          "scheduled_on": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "scheduled_time": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "published_url": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "published_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "assignee_ids": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "media": {
                            "type": "array",
                            "items": {
                              "anyOf": [
                                {
                                  "type": "object",
                                  "properties": {
                                    "kind": {
                                      "const": "file"
                                    },
                                    "id": {
                                      "type": "string"
                                    },
                                    "file": {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "type": "string"
                                        },
                                        "client_id": {
                                          "anyOf": [
                                            {
                                              "type": "null"
                                            },
                                            {
                                              "type": "string"
                                            }
                                          ]
                                        },
                                        "name": {
                                          "type": "string"
                                        },
                                        "mime_type": {
                                          "type": "string"
                                        },
                                        "size_bytes": {
                                          "type": "number"
                                        },
                                        "has_thumb": {
                                          "type": "boolean"
                                        },
                                        "folder_id": {
                                          "anyOf": [
                                            {
                                              "type": "null"
                                            },
                                            {
                                              "type": "string"
                                            }
                                          ]
                                        },
                                        "created_by": {
                                          "anyOf": [
                                            {
                                              "type": "null"
                                            },
                                            {
                                              "type": "string"
                                            }
                                          ]
                                        },
                                        "created_side": {
                                          "type": "string",
                                          "enum": [
                                            "client",
                                            "agency"
                                          ]
                                        },
                                        "created_at": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "id",
                                        "client_id",
                                        "name",
                                        "mime_type",
                                        "size_bytes",
                                        "has_thumb",
                                        "folder_id",
                                        "created_by",
                                        "created_side",
                                        "created_at"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "kind",
                                    "id",
                                    "file"
                                  ]
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "kind": {
                                      "const": "link"
                                    },
                                    "id": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "kind",
                                    "id",
                                    "url"
                                  ]
                                }
                              ]
                            }
                          },
                          "comments": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "decision": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "const": "approved"
                                    },
                                    {
                                      "const": "rejected"
                                    }
                                  ]
                                },
                                "comment": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "author_name": {
                                  "type": "string"
                                },
                                "author_side": {
                                  "type": "string",
                                  "enum": [
                                    "client",
                                    "agency"
                                  ]
                                },
                                "shared": {
                                  "type": "boolean"
                                },
                                "created_at": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "id",
                                "decision",
                                "comment",
                                "author_name",
                                "author_side",
                                "shared",
                                "created_at"
                              ]
                            }
                          },
                          "created_by": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "updated_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "client_id",
                          "client_name",
                          "title",
                          "body",
                          "tags",
                          "status",
                          "scheduled_on",
                          "scheduled_time",
                          "published_url",
                          "published_at",
                          "assignee_ids",
                          "media",
                          "comments",
                          "created_by",
                          "created_at",
                          "updated_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_social_content": {
      "get": {
        "operationId": "get_social_content_get",
        "summary": "Lecture. Un contenu et tout ce qui l'entoure : son texte, ses étiquettes, sa date de parution, ses assignés, ses visuels et les retours du client.",
        "description": "Lecture. Un contenu et tout ce qui l'entoure : son texte, ses étiquettes, sa date de parution, ses assignés, ses visuels et les retours du client.\n\nPortée requise : `read`.",
        "tags": [
          "social"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "anyOf": [
                        {
                          "type": "null"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "client_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "client_name": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "title": {
                              "type": "string"
                            },
                            "body": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "tags": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "todo",
                                "doing",
                                "draft",
                                "to_approve",
                                "to_improve",
                                "approved",
                                "scheduled",
                                "published"
                              ]
                            },
                            "scheduled_on": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "scheduled_time": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "published_url": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "published_at": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "assignee_ids": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "media": {
                              "type": "array",
                              "items": {
                                "anyOf": [
                                  {
                                    "type": "object",
                                    "properties": {
                                      "kind": {
                                        "const": "file"
                                      },
                                      "id": {
                                        "type": "string"
                                      },
                                      "file": {
                                        "type": "object",
                                        "properties": {
                                          "id": {
                                            "type": "string"
                                          },
                                          "client_id": {
                                            "anyOf": [
                                              {
                                                "type": "null"
                                              },
                                              {
                                                "type": "string"
                                              }
                                            ]
                                          },
                                          "name": {
                                            "type": "string"
                                          },
                                          "mime_type": {
                                            "type": "string"
                                          },
                                          "size_bytes": {
                                            "type": "number"
                                          },
                                          "has_thumb": {
                                            "type": "boolean"
                                          },
                                          "folder_id": {
                                            "anyOf": [
                                              {
                                                "type": "null"
                                              },
                                              {
                                                "type": "string"
                                              }
                                            ]
                                          },
                                          "created_by": {
                                            "anyOf": [
                                              {
                                                "type": "null"
                                              },
                                              {
                                                "type": "string"
                                              }
                                            ]
                                          },
                                          "created_side": {
                                            "type": "string",
                                            "enum": [
                                              "client",
                                              "agency"
                                            ]
                                          },
                                          "created_at": {
                                            "type": "string"
                                          }
                                        },
                                        "required": [
                                          "id",
                                          "client_id",
                                          "name",
                                          "mime_type",
                                          "size_bytes",
                                          "has_thumb",
                                          "folder_id",
                                          "created_by",
                                          "created_side",
                                          "created_at"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "kind",
                                      "id",
                                      "file"
                                    ]
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "kind": {
                                        "const": "link"
                                      },
                                      "id": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "kind",
                                      "id",
                                      "url"
                                    ]
                                  }
                                ]
                              }
                            },
                            "comments": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "decision": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "const": "approved"
                                      },
                                      {
                                        "const": "rejected"
                                      }
                                    ]
                                  },
                                  "comment": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "string"
                                      }
                                    ]
                                  },
                                  "author_name": {
                                    "type": "string"
                                  },
                                  "author_side": {
                                    "type": "string",
                                    "enum": [
                                      "client",
                                      "agency"
                                    ]
                                  },
                                  "shared": {
                                    "type": "boolean"
                                  },
                                  "created_at": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "decision",
                                  "comment",
                                  "author_name",
                                  "author_side",
                                  "shared",
                                  "created_at"
                                ]
                              }
                            },
                            "created_by": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "created_at": {
                              "type": "string"
                            },
                            "updated_at": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "client_id",
                            "client_name",
                            "title",
                            "body",
                            "tags",
                            "status",
                            "scheduled_on",
                            "scheduled_time",
                            "published_url",
                            "published_at",
                            "assignee_ids",
                            "media",
                            "comments",
                            "created_by",
                            "created_at",
                            "updated_at"
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_social_content",
        "summary": "Lecture. Un contenu et tout ce qui l'entoure : son texte, ses étiquettes, sa date de parution, ses assignés, ses visuels et les retours du client.",
        "description": "Lecture. Un contenu et tout ce qui l'entoure : son texte, ses étiquettes, sa date de parution, ses assignés, ses visuels et les retours du client.\n\nPortée requise : `read`.",
        "tags": [
          "social"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "anyOf": [
                        {
                          "type": "null"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "client_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "client_name": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "title": {
                              "type": "string"
                            },
                            "body": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "tags": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "todo",
                                "doing",
                                "draft",
                                "to_approve",
                                "to_improve",
                                "approved",
                                "scheduled",
                                "published"
                              ]
                            },
                            "scheduled_on": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "scheduled_time": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "published_url": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "published_at": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "assignee_ids": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "media": {
                              "type": "array",
                              "items": {
                                "anyOf": [
                                  {
                                    "type": "object",
                                    "properties": {
                                      "kind": {
                                        "const": "file"
                                      },
                                      "id": {
                                        "type": "string"
                                      },
                                      "file": {
                                        "type": "object",
                                        "properties": {
                                          "id": {
                                            "type": "string"
                                          },
                                          "client_id": {
                                            "anyOf": [
                                              {
                                                "type": "null"
                                              },
                                              {
                                                "type": "string"
                                              }
                                            ]
                                          },
                                          "name": {
                                            "type": "string"
                                          },
                                          "mime_type": {
                                            "type": "string"
                                          },
                                          "size_bytes": {
                                            "type": "number"
                                          },
                                          "has_thumb": {
                                            "type": "boolean"
                                          },
                                          "folder_id": {
                                            "anyOf": [
                                              {
                                                "type": "null"
                                              },
                                              {
                                                "type": "string"
                                              }
                                            ]
                                          },
                                          "created_by": {
                                            "anyOf": [
                                              {
                                                "type": "null"
                                              },
                                              {
                                                "type": "string"
                                              }
                                            ]
                                          },
                                          "created_side": {
                                            "type": "string",
                                            "enum": [
                                              "client",
                                              "agency"
                                            ]
                                          },
                                          "created_at": {
                                            "type": "string"
                                          }
                                        },
                                        "required": [
                                          "id",
                                          "client_id",
                                          "name",
                                          "mime_type",
                                          "size_bytes",
                                          "has_thumb",
                                          "folder_id",
                                          "created_by",
                                          "created_side",
                                          "created_at"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "kind",
                                      "id",
                                      "file"
                                    ]
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "kind": {
                                        "const": "link"
                                      },
                                      "id": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "kind",
                                      "id",
                                      "url"
                                    ]
                                  }
                                ]
                              }
                            },
                            "comments": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "decision": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "const": "approved"
                                      },
                                      {
                                        "const": "rejected"
                                      }
                                    ]
                                  },
                                  "comment": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "string"
                                      }
                                    ]
                                  },
                                  "author_name": {
                                    "type": "string"
                                  },
                                  "author_side": {
                                    "type": "string",
                                    "enum": [
                                      "client",
                                      "agency"
                                    ]
                                  },
                                  "shared": {
                                    "type": "boolean"
                                  },
                                  "created_at": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "decision",
                                  "comment",
                                  "author_name",
                                  "author_side",
                                  "shared",
                                  "created_at"
                                ]
                              }
                            },
                            "created_by": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "created_at": {
                              "type": "string"
                            },
                            "updated_at": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "client_id",
                            "client_name",
                            "title",
                            "body",
                            "tags",
                            "status",
                            "scheduled_on",
                            "scheduled_time",
                            "published_url",
                            "published_at",
                            "assignee_ids",
                            "media",
                            "comments",
                            "created_by",
                            "created_at",
                            "updated_at"
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/create_social_content": {
      "post": {
        "operationId": "create_social_content",
        "summary": "Écriture. Crée un contenu de publication. Le client est facultatif : une idée de post peut se noter avant sa destination, mais sans lui on ne cite que des visuels qui vivent ailleurs, un fichier déposé appartenant toujours à une fiche. « media » pose le carrousel dans l'ordre voulu : un visuel déposé s'y désigne par « file_id », un visuel cité par « url ». Poser le contenu d'emblée en « to_approve » invite les contacts du client à le relire.",
        "description": "Écriture. Crée un contenu de publication. Le client est facultatif : une idée de post peut se noter avant sa destination, mais sans lui on ne cite que des visuels qui vivent ailleurs, un fichier déposé appartenant toujours à une fiche. « media » pose le carrousel dans l'ordre voulu : un visuel déposé s'y désigne par « file_id », un visuel cité par « url ». Poser le contenu d'emblée en « to_approve » invite les contacts du client à le relire.\n\nPortée requise : `write`.",
        "tags": [
          "social"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 300
                  },
                  "body": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 20000
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "draft",
                      "todo",
                      "doing",
                      "to_approve",
                      "to_improve",
                      "approved",
                      "scheduled",
                      "published"
                    ]
                  },
                  "tags": {
                    "allOf": [
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "maxItems": 40
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "maxLength": 40
                        },
                        "maxItems": 20
                      }
                    ]
                  },
                  "client_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "scheduled_on": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "scheduled_time": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "published_url": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 2000,
                        "format": "uri"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "assignee_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "maxItems": 20
                  },
                  "media": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "file_id": {
                              "type": "string",
                              "format": "uuid"
                            }
                          },
                          "required": [
                            "file_id"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "maxLength": 2000,
                              "format": "uri"
                            }
                          },
                          "required": [
                            "url"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    },
                    "maxItems": 20
                  }
                },
                "required": [
                  "title"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "client_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "title": {
                          "type": "string"
                        },
                        "body": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "tags": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "todo",
                            "doing",
                            "draft",
                            "to_approve",
                            "to_improve",
                            "approved",
                            "scheduled",
                            "published"
                          ]
                        },
                        "scheduled_on": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "scheduled_time": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "published_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "published_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "assignee_ids": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "media": {
                          "type": "array",
                          "items": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "const": "file"
                                  },
                                  "id": {
                                    "type": "string"
                                  },
                                  "file": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string"
                                      },
                                      "client_id": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "mime_type": {
                                        "type": "string"
                                      },
                                      "size_bytes": {
                                        "type": "number"
                                      },
                                      "has_thumb": {
                                        "type": "boolean"
                                      },
                                      "folder_id": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "created_by": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "created_side": {
                                        "type": "string",
                                        "enum": [
                                          "client",
                                          "agency"
                                        ]
                                      },
                                      "created_at": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "client_id",
                                      "name",
                                      "mime_type",
                                      "size_bytes",
                                      "has_thumb",
                                      "folder_id",
                                      "created_by",
                                      "created_side",
                                      "created_at"
                                    ]
                                  }
                                },
                                "required": [
                                  "kind",
                                  "id",
                                  "file"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "const": "link"
                                  },
                                  "id": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "id",
                                  "url"
                                ]
                              }
                            ]
                          }
                        },
                        "comments": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "decision": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "const": "approved"
                                  },
                                  {
                                    "const": "rejected"
                                  }
                                ]
                              },
                              "comment": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "author_name": {
                                "type": "string"
                              },
                              "author_side": {
                                "type": "string",
                                "enum": [
                                  "client",
                                  "agency"
                                ]
                              },
                              "shared": {
                                "type": "boolean"
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "decision",
                              "comment",
                              "author_name",
                              "author_side",
                              "shared",
                              "created_at"
                            ]
                          }
                        },
                        "created_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "client_id",
                        "client_name",
                        "title",
                        "body",
                        "tags",
                        "status",
                        "scheduled_on",
                        "scheduled_time",
                        "published_url",
                        "published_at",
                        "assignee_ids",
                        "media",
                        "comments",
                        "created_by",
                        "created_at",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/update_social_content": {
      "post": {
        "operationId": "update_social_content",
        "summary": "Écriture. Modifie un contenu : titre, texte, étiquettes, statut, date et heure de parution, liens, assignation. Le faire passer en « to_approve » invite les contacts du client à le relire ; « approved », « to_improve » et le retour en production restent des états que l'agence pose, la réponse du client passant par son espace.",
        "description": "Écriture. Modifie un contenu : titre, texte, étiquettes, statut, date et heure de parution, liens, assignation. Le faire passer en « to_approve » invite les contacts du client à le relire ; « approved », « to_improve » et le retour en production restent des états que l'agence pose, la réponse du client passant par son espace.\n\nPortée requise : `write`.",
        "tags": [
          "social"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 300
                  },
                  "body": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 20000
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "draft",
                      "todo",
                      "doing",
                      "to_approve",
                      "to_improve",
                      "approved",
                      "scheduled",
                      "published"
                    ]
                  },
                  "tags": {
                    "allOf": [
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "maxItems": 40
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "maxLength": 40
                        },
                        "maxItems": 20
                      }
                    ]
                  },
                  "client_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "scheduled_on": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "scheduled_time": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "published_url": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 2000,
                        "format": "uri"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "assignee_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "maxItems": 20
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "client_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "title": {
                          "type": "string"
                        },
                        "body": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "tags": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "todo",
                            "doing",
                            "draft",
                            "to_approve",
                            "to_improve",
                            "approved",
                            "scheduled",
                            "published"
                          ]
                        },
                        "scheduled_on": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "scheduled_time": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "published_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "published_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "assignee_ids": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "media": {
                          "type": "array",
                          "items": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "const": "file"
                                  },
                                  "id": {
                                    "type": "string"
                                  },
                                  "file": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string"
                                      },
                                      "client_id": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "mime_type": {
                                        "type": "string"
                                      },
                                      "size_bytes": {
                                        "type": "number"
                                      },
                                      "has_thumb": {
                                        "type": "boolean"
                                      },
                                      "folder_id": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "created_by": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "created_side": {
                                        "type": "string",
                                        "enum": [
                                          "client",
                                          "agency"
                                        ]
                                      },
                                      "created_at": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "client_id",
                                      "name",
                                      "mime_type",
                                      "size_bytes",
                                      "has_thumb",
                                      "folder_id",
                                      "created_by",
                                      "created_side",
                                      "created_at"
                                    ]
                                  }
                                },
                                "required": [
                                  "kind",
                                  "id",
                                  "file"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "const": "link"
                                  },
                                  "id": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "id",
                                  "url"
                                ]
                              }
                            ]
                          }
                        },
                        "comments": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "decision": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "const": "approved"
                                  },
                                  {
                                    "const": "rejected"
                                  }
                                ]
                              },
                              "comment": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "author_name": {
                                "type": "string"
                              },
                              "author_side": {
                                "type": "string",
                                "enum": [
                                  "client",
                                  "agency"
                                ]
                              },
                              "shared": {
                                "type": "boolean"
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "decision",
                              "comment",
                              "author_name",
                              "author_side",
                              "shared",
                              "created_at"
                            ]
                          }
                        },
                        "created_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "client_id",
                        "client_name",
                        "title",
                        "body",
                        "tags",
                        "status",
                        "scheduled_on",
                        "scheduled_time",
                        "published_url",
                        "published_at",
                        "assignee_ids",
                        "media",
                        "comments",
                        "created_by",
                        "created_at",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_social_content": {
      "post": {
        "operationId": "delete_social_content",
        "summary": "Suppression définitive, irréversible. Supprime définitivement un contenu, avec ses visuels et les retours du client qui l'accompagnent.",
        "description": "Suppression définitive, irréversible. Supprime définitivement un contenu, avec ses visuels et les retours du client qui l'accompagnent.\n\nPortée requise : `destructive`.",
        "tags": [
          "social"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "ok": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "ok"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/add_social_comment": {
      "post": {
        "operationId": "add_social_comment",
        "summary": "Écriture. Écrit un commentaire de l'équipe sous un contenu, à n'importe quelle étape. Il n'emporte aucune décision : valider ou renvoyer un contenu reste le geste du client. Il n'est visible du client que si le contenu l'était déjà au moment où il est écrit ; sous un brouillon, il reste interne, et le contenu soumis plus tard ne le publie pas.",
        "description": "Écriture. Écrit un commentaire de l'équipe sous un contenu, à n'importe quelle étape. Il n'emporte aucune décision : valider ou renvoyer un contenu reste le geste du client. Il n'est visible du client que si le contenu l'était déjà au moment où il est écrit ; sous un brouillon, il reste interne, et le contenu soumis plus tard ne le publie pas.\n\nPortée requise : `write`.",
        "tags": [
          "social"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "comment": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 4000
                  }
                },
                "required": [
                  "id",
                  "comment"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "client_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "title": {
                          "type": "string"
                        },
                        "body": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "tags": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "todo",
                            "doing",
                            "draft",
                            "to_approve",
                            "to_improve",
                            "approved",
                            "scheduled",
                            "published"
                          ]
                        },
                        "scheduled_on": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "scheduled_time": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "published_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "published_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "assignee_ids": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "media": {
                          "type": "array",
                          "items": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "const": "file"
                                  },
                                  "id": {
                                    "type": "string"
                                  },
                                  "file": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string"
                                      },
                                      "client_id": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "mime_type": {
                                        "type": "string"
                                      },
                                      "size_bytes": {
                                        "type": "number"
                                      },
                                      "has_thumb": {
                                        "type": "boolean"
                                      },
                                      "folder_id": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "created_by": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "created_side": {
                                        "type": "string",
                                        "enum": [
                                          "client",
                                          "agency"
                                        ]
                                      },
                                      "created_at": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "client_id",
                                      "name",
                                      "mime_type",
                                      "size_bytes",
                                      "has_thumb",
                                      "folder_id",
                                      "created_by",
                                      "created_side",
                                      "created_at"
                                    ]
                                  }
                                },
                                "required": [
                                  "kind",
                                  "id",
                                  "file"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "const": "link"
                                  },
                                  "id": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "id",
                                  "url"
                                ]
                              }
                            ]
                          }
                        },
                        "comments": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "decision": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "const": "approved"
                                  },
                                  {
                                    "const": "rejected"
                                  }
                                ]
                              },
                              "comment": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "author_name": {
                                "type": "string"
                              },
                              "author_side": {
                                "type": "string",
                                "enum": [
                                  "client",
                                  "agency"
                                ]
                              },
                              "shared": {
                                "type": "boolean"
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "decision",
                              "comment",
                              "author_name",
                              "author_side",
                              "shared",
                              "created_at"
                            ]
                          }
                        },
                        "created_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "client_id",
                        "client_name",
                        "title",
                        "body",
                        "tags",
                        "status",
                        "scheduled_on",
                        "scheduled_time",
                        "published_url",
                        "published_at",
                        "assignee_ids",
                        "media",
                        "comments",
                        "created_by",
                        "created_at",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/add_social_link": {
      "post": {
        "operationId": "add_social_link",
        "summary": "Écriture. Ajoute au carrousel d'un contenu un visuel qui vit ailleurs, par son adresse (http ou https). Il se pose à la fin, comme un fichier déposé, et se range ensuite par « reorderSocialMedia ».",
        "description": "Écriture. Ajoute au carrousel d'un contenu un visuel qui vit ailleurs, par son adresse (http ou https). Il se pose à la fin, comme un fichier déposé, et se range ensuite par « reorderSocialMedia ».\n\nPortée requise : `write`.",
        "tags": [
          "social"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "url": {
                    "type": "string",
                    "maxLength": 2000,
                    "format": "uri"
                  }
                },
                "required": [
                  "id",
                  "url"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "client_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "title": {
                          "type": "string"
                        },
                        "body": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "tags": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "todo",
                            "doing",
                            "draft",
                            "to_approve",
                            "to_improve",
                            "approved",
                            "scheduled",
                            "published"
                          ]
                        },
                        "scheduled_on": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "scheduled_time": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "published_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "published_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "assignee_ids": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "media": {
                          "type": "array",
                          "items": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "const": "file"
                                  },
                                  "id": {
                                    "type": "string"
                                  },
                                  "file": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string"
                                      },
                                      "client_id": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "mime_type": {
                                        "type": "string"
                                      },
                                      "size_bytes": {
                                        "type": "number"
                                      },
                                      "has_thumb": {
                                        "type": "boolean"
                                      },
                                      "folder_id": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "created_by": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "created_side": {
                                        "type": "string",
                                        "enum": [
                                          "client",
                                          "agency"
                                        ]
                                      },
                                      "created_at": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "client_id",
                                      "name",
                                      "mime_type",
                                      "size_bytes",
                                      "has_thumb",
                                      "folder_id",
                                      "created_by",
                                      "created_side",
                                      "created_at"
                                    ]
                                  }
                                },
                                "required": [
                                  "kind",
                                  "id",
                                  "file"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "const": "link"
                                  },
                                  "id": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "id",
                                  "url"
                                ]
                              }
                            ]
                          }
                        },
                        "comments": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "decision": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "const": "approved"
                                  },
                                  {
                                    "const": "rejected"
                                  }
                                ]
                              },
                              "comment": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "author_name": {
                                "type": "string"
                              },
                              "author_side": {
                                "type": "string",
                                "enum": [
                                  "client",
                                  "agency"
                                ]
                              },
                              "shared": {
                                "type": "boolean"
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "decision",
                              "comment",
                              "author_name",
                              "author_side",
                              "shared",
                              "created_at"
                            ]
                          }
                        },
                        "created_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "client_id",
                        "client_name",
                        "title",
                        "body",
                        "tags",
                        "status",
                        "scheduled_on",
                        "scheduled_time",
                        "published_url",
                        "published_at",
                        "assignee_ids",
                        "media",
                        "comments",
                        "created_by",
                        "created_at",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_social_link": {
      "post": {
        "operationId": "delete_social_link",
        "summary": "Suppression définitive, irréversible. Retire un visuel cité du carrousel de son contenu. Rien n'est effacé ailleurs : un lien n'héberge aucun octet.",
        "description": "Suppression définitive, irréversible. Retire un visuel cité du carrousel de son contenu. Rien n'est effacé ailleurs : un lien n'héberge aucun octet.\n\nPortée requise : `destructive`.",
        "tags": [
          "social"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "link_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "link_id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "client_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "title": {
                          "type": "string"
                        },
                        "body": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "tags": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "todo",
                            "doing",
                            "draft",
                            "to_approve",
                            "to_improve",
                            "approved",
                            "scheduled",
                            "published"
                          ]
                        },
                        "scheduled_on": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "scheduled_time": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "published_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "published_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "assignee_ids": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "media": {
                          "type": "array",
                          "items": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "const": "file"
                                  },
                                  "id": {
                                    "type": "string"
                                  },
                                  "file": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string"
                                      },
                                      "client_id": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "mime_type": {
                                        "type": "string"
                                      },
                                      "size_bytes": {
                                        "type": "number"
                                      },
                                      "has_thumb": {
                                        "type": "boolean"
                                      },
                                      "folder_id": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "created_by": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "created_side": {
                                        "type": "string",
                                        "enum": [
                                          "client",
                                          "agency"
                                        ]
                                      },
                                      "created_at": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "client_id",
                                      "name",
                                      "mime_type",
                                      "size_bytes",
                                      "has_thumb",
                                      "folder_id",
                                      "created_by",
                                      "created_side",
                                      "created_at"
                                    ]
                                  }
                                },
                                "required": [
                                  "kind",
                                  "id",
                                  "file"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "const": "link"
                                  },
                                  "id": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "id",
                                  "url"
                                ]
                              }
                            ]
                          }
                        },
                        "comments": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "decision": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "const": "approved"
                                  },
                                  {
                                    "const": "rejected"
                                  }
                                ]
                              },
                              "comment": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "author_name": {
                                "type": "string"
                              },
                              "author_side": {
                                "type": "string",
                                "enum": [
                                  "client",
                                  "agency"
                                ]
                              },
                              "shared": {
                                "type": "boolean"
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "decision",
                              "comment",
                              "author_name",
                              "author_side",
                              "shared",
                              "created_at"
                            ]
                          }
                        },
                        "created_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "client_id",
                        "client_name",
                        "title",
                        "body",
                        "tags",
                        "status",
                        "scheduled_on",
                        "scheduled_time",
                        "published_url",
                        "published_at",
                        "assignee_ids",
                        "media",
                        "comments",
                        "created_by",
                        "created_at",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/reorder_social_media": {
      "post": {
        "operationId": "reorder_social_media",
        "summary": "Écriture. Range les visuels d'un contenu dans l'ordre du carrousel : « media_ids » est la liste complète, fichiers déposés et liens cités mêlés, dans l'ordre voulu, et le premier est celui que le réseau montrera sans qu'on clique. Refuse si la liste n'est pas exactement celle du contenu.",
        "description": "Écriture. Range les visuels d'un contenu dans l'ordre du carrousel : « media_ids » est la liste complète, fichiers déposés et liens cités mêlés, dans l'ordre voulu, et le premier est celui que le réseau montrera sans qu'on clique. Refuse si la liste n'est pas exactement celle du contenu.\n\nPortée requise : `write`.",
        "tags": [
          "social"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "media_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "maxItems": 20
                  }
                },
                "required": [
                  "id",
                  "media_ids"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "client_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "title": {
                          "type": "string"
                        },
                        "body": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "tags": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "todo",
                            "doing",
                            "draft",
                            "to_approve",
                            "to_improve",
                            "approved",
                            "scheduled",
                            "published"
                          ]
                        },
                        "scheduled_on": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "scheduled_time": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "published_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "published_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "assignee_ids": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "media": {
                          "type": "array",
                          "items": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "const": "file"
                                  },
                                  "id": {
                                    "type": "string"
                                  },
                                  "file": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string"
                                      },
                                      "client_id": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "mime_type": {
                                        "type": "string"
                                      },
                                      "size_bytes": {
                                        "type": "number"
                                      },
                                      "has_thumb": {
                                        "type": "boolean"
                                      },
                                      "folder_id": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "created_by": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "created_side": {
                                        "type": "string",
                                        "enum": [
                                          "client",
                                          "agency"
                                        ]
                                      },
                                      "created_at": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "client_id",
                                      "name",
                                      "mime_type",
                                      "size_bytes",
                                      "has_thumb",
                                      "folder_id",
                                      "created_by",
                                      "created_side",
                                      "created_at"
                                    ]
                                  }
                                },
                                "required": [
                                  "kind",
                                  "id",
                                  "file"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "const": "link"
                                  },
                                  "id": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "id",
                                  "url"
                                ]
                              }
                            ]
                          }
                        },
                        "comments": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "decision": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "const": "approved"
                                  },
                                  {
                                    "const": "rejected"
                                  }
                                ]
                              },
                              "comment": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "author_name": {
                                "type": "string"
                              },
                              "author_side": {
                                "type": "string",
                                "enum": [
                                  "client",
                                  "agency"
                                ]
                              },
                              "shared": {
                                "type": "boolean"
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "decision",
                              "comment",
                              "author_name",
                              "author_side",
                              "shared",
                              "created_at"
                            ]
                          }
                        },
                        "created_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "client_id",
                        "client_name",
                        "title",
                        "body",
                        "tags",
                        "status",
                        "scheduled_on",
                        "scheduled_time",
                        "published_url",
                        "published_at",
                        "assignee_ids",
                        "media",
                        "comments",
                        "created_by",
                        "created_at",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/set_social_tag_color": {
      "post": {
        "operationId": "set_social_tag_color",
        "summary": "Écriture. Donne une couleur à une étiquette de contenu, ou la lui reprend avec « color: null ». Six teintes : blue, violet, green, yellow, orange, red. La couleur appartient au mot et vaut partout où il est posé. Rend le vocabulaire à jour.",
        "description": "Écriture. Donne une couleur à une étiquette de contenu, ou la lui reprend avec « color: null ». Six teintes : blue, violet, green, yellow, orange, red. La couleur appartient au mot et vaut partout où il est posé. Rend le vocabulaire à jour.\n\nPortée requise : `write`.",
        "tags": [
          "social"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "tag": {
                    "allOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 40
                      }
                    ]
                  },
                  "color": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "blue",
                          "violet",
                          "green",
                          "yellow",
                          "orange",
                          "red"
                        ]
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "tag",
                  "color"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "tag": {
                            "type": "string"
                          },
                          "count": {
                            "type": "number"
                          },
                          "color": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "const": "blue"
                              },
                              {
                                "const": "violet"
                              },
                              {
                                "const": "green"
                              },
                              {
                                "const": "yellow"
                              },
                              {
                                "const": "orange"
                              },
                              {
                                "const": "red"
                              }
                            ]
                          }
                        },
                        "required": [
                          "tag",
                          "count"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_social_tag": {
      "post": {
        "operationId": "delete_social_tag",
        "summary": "Suppression définitive, irréversible. Retire une étiquette de tous les contenus qui la portent, ce qui la fait sortir du vocabulaire, et efface sa couleur. Rien ne se souvient de quels contenus la portaient. Rend le vocabulaire à jour.",
        "description": "Suppression définitive, irréversible. Retire une étiquette de tous les contenus qui la portent, ce qui la fait sortir du vocabulaire, et efface sa couleur. Rien ne se souvient de quels contenus la portaient. Rend le vocabulaire à jour.\n\nPortée requise : `destructive`.",
        "tags": [
          "social"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "tag": {
                    "allOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 40
                      }
                    ]
                  }
                },
                "required": [
                  "tag"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "tag": {
                            "type": "string"
                          },
                          "count": {
                            "type": "number"
                          },
                          "color": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "const": "blue"
                              },
                              {
                                "const": "violet"
                              },
                              {
                                "const": "green"
                              },
                              {
                                "const": "yellow"
                              },
                              {
                                "const": "orange"
                              },
                              {
                                "const": "red"
                              }
                            ]
                          }
                        },
                        "required": [
                          "tag",
                          "count"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_social_tags": {
      "get": {
        "operationId": "list_social_tags_get",
        "summary": "Lecture. Étiquettes de contenus déjà employées, avec le nombre de contenus qui les portent et la couleur choisie. C'est le vocabulaire de l'équipe (le réseau, le format, la campagne) : il n'y a pas d'autre catalogue.",
        "description": "Lecture. Étiquettes de contenus déjà employées, avec le nombre de contenus qui les portent et la couleur choisie. C'est le vocabulaire de l'équipe (le réseau, le format, la campagne) : il n'y a pas d'autre catalogue.\n\nPortée requise : `read`.",
        "tags": [
          "social"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "tag": {
                            "type": "string"
                          },
                          "count": {
                            "type": "number"
                          },
                          "color": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "const": "blue"
                              },
                              {
                                "const": "violet"
                              },
                              {
                                "const": "green"
                              },
                              {
                                "const": "yellow"
                              },
                              {
                                "const": "orange"
                              },
                              {
                                "const": "red"
                              }
                            ]
                          }
                        },
                        "required": [
                          "tag",
                          "count"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_social_tags",
        "summary": "Lecture. Étiquettes de contenus déjà employées, avec le nombre de contenus qui les portent et la couleur choisie. C'est le vocabulaire de l'équipe (le réseau, le format, la campagne) : il n'y a pas d'autre catalogue.",
        "description": "Lecture. Étiquettes de contenus déjà employées, avec le nombre de contenus qui les portent et la couleur choisie. C'est le vocabulaire de l'équipe (le réseau, le format, la campagne) : il n'y a pas d'autre catalogue.\n\nPortée requise : `read`.",
        "tags": [
          "social"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "tag": {
                            "type": "string"
                          },
                          "count": {
                            "type": "number"
                          },
                          "color": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "const": "blue"
                              },
                              {
                                "const": "violet"
                              },
                              {
                                "const": "green"
                              },
                              {
                                "const": "yellow"
                              },
                              {
                                "const": "orange"
                              },
                              {
                                "const": "red"
                              }
                            ]
                          }
                        },
                        "required": [
                          "tag",
                          "count"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_social_views": {
      "get": {
        "operationId": "list_social_views_get",
        "summary": "Lecture. Vues enregistrées du calendrier de publication du compte au nom duquel la clé MCP agit, et laquelle s'ouvre par défaut.",
        "description": "Lecture. Vues enregistrées du calendrier de publication du compte au nom duquel la clé MCP agit, et laquelle s'ouvre par défaut.\n\nPortée requise : `read`.",
        "tags": [
          "social-views"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "views": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "state": {
                                "type": "object",
                                "properties": {
                                  "filters": {
                                    "type": "object",
                                    "properties": {
                                      "search": {
                                        "type": "string"
                                      },
                                      "status": {
                                        "type": "string",
                                        "enum": [
                                          "live",
                                          "todo",
                                          "doing",
                                          "all",
                                          "draft",
                                          "to_approve",
                                          "to_improve",
                                          "approved",
                                          "scheduled",
                                          "published"
                                        ]
                                      },
                                      "clientId": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "assigneeId": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "tags": {
                                        "type": "array",
                                        "items": {
                                          "type": "string"
                                        }
                                      },
                                      "date": {
                                        "type": "string",
                                        "enum": [
                                          "week",
                                          "all",
                                          "today",
                                          "none",
                                          "late"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "search",
                                      "status",
                                      "clientId",
                                      "assigneeId",
                                      "tags",
                                      "date"
                                    ]
                                  },
                                  "sort": {
                                    "type": "string",
                                    "enum": [
                                      "title",
                                      "status",
                                      "created-desc",
                                      "date-asc",
                                      "date-desc"
                                    ]
                                  },
                                  "grouping": {
                                    "type": "string",
                                    "enum": [
                                      "client",
                                      "status",
                                      "date",
                                      "none",
                                      "assignee",
                                      "tag"
                                    ]
                                  },
                                  "layout": {
                                    "type": "string",
                                    "enum": [
                                      "list",
                                      "board",
                                      "calendar"
                                    ]
                                  }
                                },
                                "required": [
                                  "filters",
                                  "sort",
                                  "grouping",
                                  "layout"
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "state"
                            ]
                          }
                        },
                        "default_view_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "views",
                        "default_view_id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_social_views",
        "summary": "Lecture. Vues enregistrées du calendrier de publication du compte au nom duquel la clé MCP agit, et laquelle s'ouvre par défaut.",
        "description": "Lecture. Vues enregistrées du calendrier de publication du compte au nom duquel la clé MCP agit, et laquelle s'ouvre par défaut.\n\nPortée requise : `read`.",
        "tags": [
          "social-views"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "views": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "state": {
                                "type": "object",
                                "properties": {
                                  "filters": {
                                    "type": "object",
                                    "properties": {
                                      "search": {
                                        "type": "string"
                                      },
                                      "status": {
                                        "type": "string",
                                        "enum": [
                                          "live",
                                          "todo",
                                          "doing",
                                          "all",
                                          "draft",
                                          "to_approve",
                                          "to_improve",
                                          "approved",
                                          "scheduled",
                                          "published"
                                        ]
                                      },
                                      "clientId": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "assigneeId": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "tags": {
                                        "type": "array",
                                        "items": {
                                          "type": "string"
                                        }
                                      },
                                      "date": {
                                        "type": "string",
                                        "enum": [
                                          "week",
                                          "all",
                                          "today",
                                          "none",
                                          "late"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "search",
                                      "status",
                                      "clientId",
                                      "assigneeId",
                                      "tags",
                                      "date"
                                    ]
                                  },
                                  "sort": {
                                    "type": "string",
                                    "enum": [
                                      "title",
                                      "status",
                                      "created-desc",
                                      "date-asc",
                                      "date-desc"
                                    ]
                                  },
                                  "grouping": {
                                    "type": "string",
                                    "enum": [
                                      "client",
                                      "status",
                                      "date",
                                      "none",
                                      "assignee",
                                      "tag"
                                    ]
                                  },
                                  "layout": {
                                    "type": "string",
                                    "enum": [
                                      "list",
                                      "board",
                                      "calendar"
                                    ]
                                  }
                                },
                                "required": [
                                  "filters",
                                  "sort",
                                  "grouping",
                                  "layout"
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "state"
                            ]
                          }
                        },
                        "default_view_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "views",
                        "default_view_id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/create_social_view": {
      "post": {
        "operationId": "create_social_view",
        "summary": "Écriture. Enregistre un jeu de filtres, de tri, de regroupement et d'affichage (liste, tableau ou calendrier) sous un nom, et peut en faire la vue ouverte par défaut.",
        "description": "Écriture. Enregistre un jeu de filtres, de tri, de regroupement et d'affichage (liste, tableau ou calendrier) sous un nom, et peut en faire la vue ouverte par défaut.\n\nPortée requise : `write`.",
        "tags": [
          "social-views"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "allOf": [
                      {
                        "type": "string",
                        "maxLength": 120
                      },
                      {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 60
                      }
                    ]
                  },
                  "state": {
                    "type": "object",
                    "properties": {
                      "filters": {
                        "type": "object",
                        "properties": {
                          "search": {
                            "type": "string",
                            "maxLength": 200,
                            "default": ""
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "live",
                              "all",
                              "draft",
                              "todo",
                              "doing",
                              "to_approve",
                              "to_improve",
                              "approved",
                              "scheduled",
                              "published"
                            ],
                            "default": "live"
                          },
                          "clientId": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uuid"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null
                          },
                          "assigneeId": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uuid"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null
                          },
                          "tags": {
                            "allOf": [
                              {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "maxItems": 40
                              },
                              {
                                "type": "array",
                                "items": {
                                  "type": "string",
                                  "maxLength": 40
                                },
                                "maxItems": 20
                              }
                            ],
                            "default": []
                          },
                          "date": {
                            "type": "string",
                            "enum": [
                              "all",
                              "late",
                              "today",
                              "week",
                              "none"
                            ],
                            "default": "all"
                          }
                        },
                        "additionalProperties": false,
                        "default": {}
                      },
                      "sort": {
                        "type": "string",
                        "enum": [
                          "date-asc",
                          "date-desc",
                          "status",
                          "created-desc",
                          "title"
                        ],
                        "default": "date-asc"
                      },
                      "grouping": {
                        "type": "string",
                        "enum": [
                          "status",
                          "date",
                          "client",
                          "tag",
                          "assignee",
                          "none"
                        ],
                        "default": "date"
                      },
                      "layout": {
                        "type": "string",
                        "enum": [
                          "list",
                          "board",
                          "calendar"
                        ],
                        "default": "list"
                      }
                    },
                    "additionalProperties": false
                  },
                  "makeDefault": {
                    "type": "boolean",
                    "default": false
                  }
                },
                "required": [
                  "name",
                  "state"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "state": {
                          "type": "object",
                          "properties": {
                            "filters": {
                              "type": "object",
                              "properties": {
                                "search": {
                                  "type": "string"
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "live",
                                    "todo",
                                    "doing",
                                    "all",
                                    "draft",
                                    "to_approve",
                                    "to_improve",
                                    "approved",
                                    "scheduled",
                                    "published"
                                  ]
                                },
                                "clientId": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "assigneeId": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "tags": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "date": {
                                  "type": "string",
                                  "enum": [
                                    "week",
                                    "all",
                                    "today",
                                    "none",
                                    "late"
                                  ]
                                }
                              },
                              "required": [
                                "search",
                                "status",
                                "clientId",
                                "assigneeId",
                                "tags",
                                "date"
                              ]
                            },
                            "sort": {
                              "type": "string",
                              "enum": [
                                "title",
                                "status",
                                "created-desc",
                                "date-asc",
                                "date-desc"
                              ]
                            },
                            "grouping": {
                              "type": "string",
                              "enum": [
                                "client",
                                "status",
                                "date",
                                "none",
                                "assignee",
                                "tag"
                              ]
                            },
                            "layout": {
                              "type": "string",
                              "enum": [
                                "list",
                                "board",
                                "calendar"
                              ]
                            }
                          },
                          "required": [
                            "filters",
                            "sort",
                            "grouping",
                            "layout"
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "name",
                        "state"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/update_social_view": {
      "post": {
        "operationId": "update_social_view",
        "summary": "Écriture. Renomme une vue enregistrée du calendrier de publication, remplace ses réglages, ou les deux.",
        "description": "Écriture. Renomme une vue enregistrée du calendrier de publication, remplace ses réglages, ou les deux.\n\nPortée requise : `write`.",
        "tags": [
          "social-views"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "name": {
                    "allOf": [
                      {
                        "type": "string",
                        "maxLength": 120
                      },
                      {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 60
                      }
                    ]
                  },
                  "state": {
                    "type": "object",
                    "properties": {
                      "filters": {
                        "type": "object",
                        "properties": {
                          "search": {
                            "type": "string",
                            "maxLength": 200,
                            "default": ""
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "live",
                              "all",
                              "draft",
                              "todo",
                              "doing",
                              "to_approve",
                              "to_improve",
                              "approved",
                              "scheduled",
                              "published"
                            ],
                            "default": "live"
                          },
                          "clientId": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uuid"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null
                          },
                          "assigneeId": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uuid"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "default": null
                          },
                          "tags": {
                            "allOf": [
                              {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "maxItems": 40
                              },
                              {
                                "type": "array",
                                "items": {
                                  "type": "string",
                                  "maxLength": 40
                                },
                                "maxItems": 20
                              }
                            ],
                            "default": []
                          },
                          "date": {
                            "type": "string",
                            "enum": [
                              "all",
                              "late",
                              "today",
                              "week",
                              "none"
                            ],
                            "default": "all"
                          }
                        },
                        "additionalProperties": false,
                        "default": {}
                      },
                      "sort": {
                        "type": "string",
                        "enum": [
                          "date-asc",
                          "date-desc",
                          "status",
                          "created-desc",
                          "title"
                        ],
                        "default": "date-asc"
                      },
                      "grouping": {
                        "type": "string",
                        "enum": [
                          "status",
                          "date",
                          "client",
                          "tag",
                          "assignee",
                          "none"
                        ],
                        "default": "date"
                      },
                      "layout": {
                        "type": "string",
                        "enum": [
                          "list",
                          "board",
                          "calendar"
                        ],
                        "default": "list"
                      }
                    },
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "state": {
                          "type": "object",
                          "properties": {
                            "filters": {
                              "type": "object",
                              "properties": {
                                "search": {
                                  "type": "string"
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "live",
                                    "todo",
                                    "doing",
                                    "all",
                                    "draft",
                                    "to_approve",
                                    "to_improve",
                                    "approved",
                                    "scheduled",
                                    "published"
                                  ]
                                },
                                "clientId": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "assigneeId": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "tags": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "date": {
                                  "type": "string",
                                  "enum": [
                                    "week",
                                    "all",
                                    "today",
                                    "none",
                                    "late"
                                  ]
                                }
                              },
                              "required": [
                                "search",
                                "status",
                                "clientId",
                                "assigneeId",
                                "tags",
                                "date"
                              ]
                            },
                            "sort": {
                              "type": "string",
                              "enum": [
                                "title",
                                "status",
                                "created-desc",
                                "date-asc",
                                "date-desc"
                              ]
                            },
                            "grouping": {
                              "type": "string",
                              "enum": [
                                "client",
                                "status",
                                "date",
                                "none",
                                "assignee",
                                "tag"
                              ]
                            },
                            "layout": {
                              "type": "string",
                              "enum": [
                                "list",
                                "board",
                                "calendar"
                              ]
                            }
                          },
                          "required": [
                            "filters",
                            "sort",
                            "grouping",
                            "layout"
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "name",
                        "state"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_social_view": {
      "post": {
        "operationId": "delete_social_view",
        "summary": "Suppression définitive, irréversible. Supprime une vue enregistrée du calendrier. Les contenus ne bougent pas.",
        "description": "Suppression définitive, irréversible. Supprime une vue enregistrée du calendrier. Les contenus ne bougent pas.\n\nPortée requise : `destructive`.",
        "tags": [
          "social-views"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "ok": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "ok"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/set_default_social_view": {
      "post": {
        "operationId": "set_default_social_view",
        "summary": "Écriture. Désigne la vue qui s'ouvre par défaut sur le calendrier de publication, ou n'en désigne plus aucune avec id nul.",
        "description": "Écriture. Désigne la vue qui s'ouvre par défaut sur le calendrier de publication, ou n'en désigne plus aucune avec id nul.\n\nPortée requise : `write`.",
        "tags": [
          "social-views"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "default_view_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "default_view_id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_meetings": {
      "get": {
        "operationId": "list_meetings_get",
        "summary": "Lecture. Réunions enregistrées, de la plus récente à la plus ancienne. Le transcript n'y figure pas, seule sa longueur.",
        "description": "Lecture. Réunions enregistrées, de la plus récente à la plus ancienne. Le transcript n'y figure pas, seule sa longueur.\n\nPortée requise : `read`.",
        "tags": [
          "meetings"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (300 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 300,
              "description": "Combien de lignes rendre au plus (300 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "source": {
                            "type": "string"
                          },
                          "external_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "title": {
                            "type": "string"
                          },
                          "locale": {
                            "type": "string"
                          },
                          "started_at": {
                            "type": "string"
                          },
                          "ended_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "duration_seconds": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "number"
                              }
                            ]
                          },
                          "participants": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "name": {
                                  "type": "string"
                                },
                                "email": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "role": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "organization": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "name",
                                "email",
                                "role",
                                "organization"
                              ]
                            }
                          },
                          "tags": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "summary": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "transcript_chars": {
                            "type": "number"
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "client_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "client_name": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "source",
                          "external_id",
                          "title",
                          "locale",
                          "started_at",
                          "ended_at",
                          "duration_seconds",
                          "participants",
                          "tags",
                          "summary",
                          "transcript_chars",
                          "created_at",
                          "client_id",
                          "client_name"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_meetings",
        "summary": "Lecture. Réunions enregistrées, de la plus récente à la plus ancienne. Le transcript n'y figure pas, seule sa longueur.",
        "description": "Lecture. Réunions enregistrées, de la plus récente à la plus ancienne. Le transcript n'y figure pas, seule sa longueur.\n\nPortée requise : `read`.",
        "tags": [
          "meetings"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 300,
                    "description": "Combien de lignes rendre au plus (300 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "source": {
                            "type": "string"
                          },
                          "external_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "title": {
                            "type": "string"
                          },
                          "locale": {
                            "type": "string"
                          },
                          "started_at": {
                            "type": "string"
                          },
                          "ended_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "duration_seconds": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "number"
                              }
                            ]
                          },
                          "participants": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "name": {
                                  "type": "string"
                                },
                                "email": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "role": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "organization": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "name",
                                "email",
                                "role",
                                "organization"
                              ]
                            }
                          },
                          "tags": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "summary": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "transcript_chars": {
                            "type": "number"
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "client_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "client_name": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "source",
                          "external_id",
                          "title",
                          "locale",
                          "started_at",
                          "ended_at",
                          "duration_seconds",
                          "participants",
                          "tags",
                          "summary",
                          "transcript_chars",
                          "created_at",
                          "client_id",
                          "client_name"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_meeting": {
      "get": {
        "operationId": "get_meeting_get",
        "summary": "Lecture. Une réunion et son résumé. Le transcript intégral n'est rendu que si include_transcript vaut vrai, car il peut peser plusieurs dizaines de milliers de mots.",
        "description": "Lecture. Une réunion et son résumé. Le transcript intégral n'est rendu que si include_transcript vaut vrai, car il peut peser plusieurs dizaines de milliers de mots.\n\nPortée requise : `read`.",
        "tags": [
          "meetings"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "include_transcript",
            "in": "query",
            "required": false,
            "description": "Joindre le transcript intégral, qui peut être très long.",
            "schema": {
              "type": "boolean",
              "default": false,
              "description": "Joindre le transcript intégral, qui peut être très long."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "created_at": {
                          "type": "string"
                        },
                        "id": {
                          "type": "string"
                        },
                        "locale": {
                          "type": "string"
                        },
                        "client_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "title": {
                          "type": "string"
                        },
                        "source": {
                          "type": "string"
                        },
                        "external_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "started_at": {
                          "type": "string"
                        },
                        "ended_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "duration_seconds": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "tags": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "summary": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "transcript_chars": {
                          "type": "number"
                        },
                        "client_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "participants": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "email": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "role": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "organization": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "account": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "user_id": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "side": {
                                        "type": "string",
                                        "enum": [
                                          "client",
                                          "agency"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "user_id",
                                      "name",
                                      "side"
                                    ]
                                  }
                                ]
                              }
                            },
                            "required": [
                              "name",
                              "email",
                              "role",
                              "organization",
                              "account"
                            ]
                          }
                        },
                        "meeting_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "recording_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "metadata": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/Json"
                          }
                        },
                        "transcript": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "api_key_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "created_at",
                        "id",
                        "locale",
                        "client_id",
                        "title",
                        "source",
                        "external_id",
                        "started_at",
                        "ended_at",
                        "duration_seconds",
                        "tags",
                        "summary",
                        "transcript_chars",
                        "client_name",
                        "participants",
                        "meeting_url",
                        "recording_url",
                        "metadata",
                        "transcript",
                        "api_key_name",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_meeting",
        "summary": "Lecture. Une réunion et son résumé. Le transcript intégral n'est rendu que si include_transcript vaut vrai, car il peut peser plusieurs dizaines de milliers de mots.",
        "description": "Lecture. Une réunion et son résumé. Le transcript intégral n'est rendu que si include_transcript vaut vrai, car il peut peser plusieurs dizaines de milliers de mots.\n\nPortée requise : `read`.",
        "tags": [
          "meetings"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "include_transcript": {
                    "type": "boolean",
                    "default": false,
                    "description": "Joindre le transcript intégral, qui peut être très long."
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "created_at": {
                          "type": "string"
                        },
                        "id": {
                          "type": "string"
                        },
                        "locale": {
                          "type": "string"
                        },
                        "client_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "title": {
                          "type": "string"
                        },
                        "source": {
                          "type": "string"
                        },
                        "external_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "started_at": {
                          "type": "string"
                        },
                        "ended_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "duration_seconds": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "tags": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "summary": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "transcript_chars": {
                          "type": "number"
                        },
                        "client_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "participants": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "email": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "role": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "organization": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "account": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "user_id": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "side": {
                                        "type": "string",
                                        "enum": [
                                          "client",
                                          "agency"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "user_id",
                                      "name",
                                      "side"
                                    ]
                                  }
                                ]
                              }
                            },
                            "required": [
                              "name",
                              "email",
                              "role",
                              "organization",
                              "account"
                            ]
                          }
                        },
                        "meeting_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "recording_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "metadata": {
                          "type": "object",
                          "additionalProperties": {
                            "$ref": "#/components/schemas/Json"
                          }
                        },
                        "transcript": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "api_key_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "created_at",
                        "id",
                        "locale",
                        "client_id",
                        "title",
                        "source",
                        "external_id",
                        "started_at",
                        "ended_at",
                        "duration_seconds",
                        "tags",
                        "summary",
                        "transcript_chars",
                        "client_name",
                        "participants",
                        "meeting_url",
                        "recording_url",
                        "metadata",
                        "transcript",
                        "api_key_name",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/set_meeting_client": {
      "post": {
        "operationId": "set_meeting_client",
        "summary": "Écriture. Rattache une réunion à une fiche client, ou l'en détache avec client_id nul. À l'arrivée, le rattachement se déduit des adresses des participants ; cet outil sert à le corriger quand la déduction s'est tue ou s'est trompée.",
        "description": "Écriture. Rattache une réunion à une fiche client, ou l'en détache avec client_id nul. À l'arrivée, le rattachement se déduit des adresses des participants ; cet outil sert à le corriger quand la déduction s'est tue ou s'est trompée.\n\nPortée requise : `write`.",
        "tags": [
          "meetings"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "client_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "client_id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "ok": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "ok"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/resummarize_meeting": {
      "post": {
        "operationId": "resummarize_meeting",
        "summary": "Écriture. Réécrit le résumé d'une réunion à partir de son transcript et de ce que l'application sait de son client, en rattachant la fiche si personne ne l'a fait. Écrase le résumé précédent, et rend written, skipped (pas de transcript) ou failed.",
        "description": "Écriture. Réécrit le résumé d'une réunion à partir de son transcript et de ce que l'application sait de son client, en rattachant la fiche si personne ne l'a fait. Écrase le résumé précédent, et rend written, skipped (pas de transcript) ou failed.\n\nPortée requise : `write`.",
        "tags": [
          "meetings"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "outcome": {
                          "type": "string",
                          "enum": [
                            "failed",
                            "written",
                            "skipped"
                          ]
                        }
                      },
                      "required": [
                        "outcome"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_meeting": {
      "post": {
        "operationId": "delete_meeting",
        "summary": "Suppression définitive, irréversible. Supprime définitivement une réunion, son résumé et son transcript.",
        "description": "Suppression définitive, irréversible. Supprime définitivement une réunion, son résumé et son transcript.\n\nPortée requise : `destructive`.",
        "tags": [
          "meetings"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "ok": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "ok"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_meeting_proposals": {
      "get": {
        "operationId": "list_meeting_proposals_get",
        "summary": "Lecture. Modifications qu'une réunion propose sur une fiche client, une note ou une tâche existante : ce qu'on lit aujourd'hui, ce que la réunion dit d'y mettre, et le passage qui l'établit. Sans filtre, toutes ; sinon celles d'une réunion ou d'une fiche. Rien n'est encore écrit : chacune attend d'être acceptée ou jetée.",
        "description": "Lecture. Modifications qu'une réunion propose sur une fiche client, une note ou une tâche existante : ce qu'on lit aujourd'hui, ce que la réunion dit d'y mettre, et le passage qui l'établit. Sans filtre, toutes ; sinon celles d'une réunion ou d'une fiche. Rien n'est encore écrit : chacune attend d'être acceptée ou jetée.\n\nPortée requise : `read`.",
        "tags": [
          "meeting-proposals"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "meeting_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "client_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (200 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "description": "Combien de lignes rendre au plus (200 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "meeting_id": {
                            "type": "string"
                          },
                          "client_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "target": {
                            "type": "string",
                            "enum": [
                              "client",
                              "task",
                              "note",
                              "decision",
                              "client_custom_value"
                            ]
                          },
                          "operation": {
                            "type": "string",
                            "enum": [
                              "create",
                              "update"
                            ]
                          },
                          "target_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "changes": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "field": {
                                  "type": "string"
                                },
                                "before": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "after": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "field",
                                "before",
                                "after"
                              ]
                            }
                          },
                          "evidence": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "approved",
                              "rejected",
                              "pending"
                            ]
                          },
                          "applied_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "decided_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "target_name": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "meeting_id",
                          "client_id",
                          "target",
                          "operation",
                          "target_id",
                          "changes",
                          "evidence",
                          "status",
                          "applied_id",
                          "decided_at",
                          "created_at",
                          "target_name"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_meeting_proposals",
        "summary": "Lecture. Modifications qu'une réunion propose sur une fiche client, une note ou une tâche existante : ce qu'on lit aujourd'hui, ce que la réunion dit d'y mettre, et le passage qui l'établit. Sans filtre, toutes ; sinon celles d'une réunion ou d'une fiche. Rien n'est encore écrit : chacune attend d'être acceptée ou jetée.",
        "description": "Lecture. Modifications qu'une réunion propose sur une fiche client, une note ou une tâche existante : ce qu'on lit aujourd'hui, ce que la réunion dit d'y mettre, et le passage qui l'établit. Sans filtre, toutes ; sinon celles d'une réunion ou d'une fiche. Rien n'est encore écrit : chacune attend d'être acceptée ou jetée.\n\nPortée requise : `read`.",
        "tags": [
          "meeting-proposals"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "meeting_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "client_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 200,
                    "description": "Combien de lignes rendre au plus (200 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "meeting_id": {
                            "type": "string"
                          },
                          "client_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "target": {
                            "type": "string",
                            "enum": [
                              "client",
                              "task",
                              "note",
                              "decision",
                              "client_custom_value"
                            ]
                          },
                          "operation": {
                            "type": "string",
                            "enum": [
                              "create",
                              "update"
                            ]
                          },
                          "target_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "changes": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "field": {
                                  "type": "string"
                                },
                                "before": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "after": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "field",
                                "before",
                                "after"
                              ]
                            }
                          },
                          "evidence": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "approved",
                              "rejected",
                              "pending"
                            ]
                          },
                          "applied_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "decided_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "target_name": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "meeting_id",
                          "client_id",
                          "target",
                          "operation",
                          "target_id",
                          "changes",
                          "evidence",
                          "status",
                          "applied_id",
                          "decided_at",
                          "created_at",
                          "target_name"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/approve_meeting_proposal": {
      "post": {
        "operationId": "approve_meeting_proposal",
        "summary": "Écriture. Accepte une proposition et applique la modification, par la même porte que l'écran (validation et règles comprises). changes corrige une valeur avant de l'accepter, champ par champ ; les champs absents gardent ce que la proposition portait. Refuse quand la valeur a changé depuis la réunion, force passe outre après relecture.",
        "description": "Écriture. Accepte une proposition et applique la modification, par la même porte que l'écran (validation et règles comprises). changes corrige une valeur avant de l'accepter, champ par champ ; les champs absents gardent ce que la proposition portait. Refuse quand la valeur a changé depuis la réunion, force passe outre après relecture.\n\nPortée requise : `write`.",
        "tags": [
          "meeting-proposals"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "changes": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "field": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 60
                        },
                        "after": {
                          "type": "string",
                          "maxLength": 20000
                        }
                      },
                      "required": [
                        "field",
                        "after"
                      ],
                      "additionalProperties": false
                    },
                    "maxItems": 6
                  },
                  "force": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "ok": {
                          "type": "boolean"
                        },
                        "applied_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "ok",
                        "applied_id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/reject_meeting_proposal": {
      "post": {
        "operationId": "reject_meeting_proposal",
        "summary": "Écriture. Jette une proposition. Elle reste en base, marquée refusée, pour qu'un nouveau résumé de la même réunion ne la repropose pas.",
        "description": "Écriture. Jette une proposition. Elle reste en base, marquée refusée, pour qu'un nouveau résumé de la même réunion ne la repropose pas.\n\nPortée requise : `write`.",
        "tags": [
          "meeting-proposals"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "ok": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "ok"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_meeting_recordings": {
      "get": {
        "operationId": "list_meeting_recordings_get",
        "summary": "Lecture. Enregistrements de visio demandés à Recall : ce qui est prévu, en cours, terminé ou raté, du plus récent au plus ancien.",
        "description": "Lecture. Enregistrements de visio demandés à Recall : ce qui est prévu, en cours, terminé ou raté, du plus récent au plus ancien.\n\nPortée requise : `read`.",
        "tags": [
          "recall"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (50 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "description": "Combien de lignes rendre au plus (50 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "meeting_url": {
                            "type": "string"
                          },
                          "join_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "failed",
                              "done",
                              "scheduled",
                              "recording",
                              "cancelled"
                            ]
                          },
                          "error": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "meeting_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "meeting_url",
                          "join_at",
                          "status",
                          "error",
                          "meeting_id",
                          "created_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_meeting_recordings",
        "summary": "Lecture. Enregistrements de visio demandés à Recall : ce qui est prévu, en cours, terminé ou raté, du plus récent au plus ancien.",
        "description": "Lecture. Enregistrements de visio demandés à Recall : ce qui est prévu, en cours, terminé ou raté, du plus récent au plus ancien.\n\nPortée requise : `read`.",
        "tags": [
          "recall"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 50,
                    "description": "Combien de lignes rendre au plus (50 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "meeting_url": {
                            "type": "string"
                          },
                          "join_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "failed",
                              "done",
                              "scheduled",
                              "recording",
                              "cancelled"
                            ]
                          },
                          "error": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "meeting_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "meeting_url",
                          "join_at",
                          "status",
                          "error",
                          "meeting_id",
                          "created_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_upcoming_meetings": {
      "get": {
        "operationId": "list_upcoming_meetings_get",
        "summary": "Lecture. Réunions en cours et à venir, de la plus proche à la plus lointaine, avec le lien de la visio pour y entrer. Elles viennent des agendas connectés et des enregistrements lancés à la main : une réunion sans lien de visio n'y figure pas, et ce qui est déjà terminé se lit par listMeetings.",
        "description": "Lecture. Réunions en cours et à venir, de la plus proche à la plus lointaine, avec le lien de la visio pour y entrer. Elles viennent des agendas connectés et des enregistrements lancés à la main : une réunion sans lien de visio n'y figure pas, et ce qui est déjà terminé se lit par listMeetings.\n\nPortée requise : `read`.",
        "tags": [
          "recall"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "hours",
            "in": "query",
            "required": false,
            "description": "Horizon en heures (24 par défaut, 336 au maximum). Ce qui est en cours est rendu quoi qu'il arrive.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 336,
              "description": "Horizon en heures (24 par défaut, 336 au maximum). Ce qui est en cours est rendu quoi qu'il arrive."
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (50 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "description": "Combien de lignes rendre au plus (50 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "title": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "meeting_url": {
                            "type": "string"
                          },
                          "join_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "failed",
                              "done",
                              "scheduled",
                              "recording",
                              "cancelled"
                            ]
                          },
                          "origin": {
                            "type": "string",
                            "enum": [
                              "calendar",
                              "manual",
                              "meet"
                            ]
                          },
                          "meeting_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "title",
                          "meeting_url",
                          "join_at",
                          "status",
                          "origin",
                          "meeting_id",
                          "created_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_upcoming_meetings",
        "summary": "Lecture. Réunions en cours et à venir, de la plus proche à la plus lointaine, avec le lien de la visio pour y entrer. Elles viennent des agendas connectés et des enregistrements lancés à la main : une réunion sans lien de visio n'y figure pas, et ce qui est déjà terminé se lit par listMeetings.",
        "description": "Lecture. Réunions en cours et à venir, de la plus proche à la plus lointaine, avec le lien de la visio pour y entrer. Elles viennent des agendas connectés et des enregistrements lancés à la main : une réunion sans lien de visio n'y figure pas, et ce qui est déjà terminé se lit par listMeetings.\n\nPortée requise : `read`.",
        "tags": [
          "recall"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "hours": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 336,
                    "description": "Horizon en heures (24 par défaut, 336 au maximum). Ce qui est en cours est rendu quoi qu'il arrive."
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 50,
                    "description": "Combien de lignes rendre au plus (50 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "title": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "meeting_url": {
                            "type": "string"
                          },
                          "join_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "failed",
                              "done",
                              "scheduled",
                              "recording",
                              "cancelled"
                            ]
                          },
                          "origin": {
                            "type": "string",
                            "enum": [
                              "calendar",
                              "manual",
                              "meet"
                            ]
                          },
                          "meeting_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "title",
                          "meeting_url",
                          "join_at",
                          "status",
                          "origin",
                          "meeting_id",
                          "created_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/start_meeting_recording": {
      "post": {
        "operationId": "start_meeting_recording",
        "summary": "Écriture. Envoie un bot enregistrer une visio (Google Meet, Zoom, Teams). Sans join_at le bot part tout de suite, ce qui peut échouer faute de machine disponible : au-delà de dix minutes d'avance, l'arrivée est garantie. Une réunion déjà couverte rend le bot existant au lieu d'en créer un second.",
        "description": "Écriture. Envoie un bot enregistrer une visio (Google Meet, Zoom, Teams). Sans join_at le bot part tout de suite, ce qui peut échouer faute de machine disponible : au-delà de dix minutes d'avance, l'arrivée est garantie. Une réunion déjà couverte rend le bot existant au lieu d'en créer un second.\n\nPortée requise : `write`.",
        "tags": [
          "recall"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "meeting_url": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 2000
                  },
                  "join_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "title": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 300
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "meeting_url"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "enum": [
                            "created",
                            "reused"
                          ]
                        },
                        "recording": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "meeting_url": {
                              "type": "string"
                            },
                            "join_at": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "failed",
                                "done",
                                "scheduled",
                                "recording",
                                "cancelled"
                              ]
                            },
                            "error": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "meeting_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "created_at": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "meeting_url",
                            "join_at",
                            "status",
                            "error",
                            "meeting_id",
                            "created_at"
                          ]
                        }
                      },
                      "required": [
                        "status",
                        "recording"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/start_instant_meeting": {
      "post": {
        "operationId": "start_instant_meeting",
        "summary": "Écriture. Ouvre une visio Google Meet et y envoie le bot dans la foulée. La salle est créée au nom de la personne dont l'agenda est connecté, n'est posée dans aucun agenda et n'invite personne : le lien rendu est celui à partager. Demande que cet agenda ait accordé l'ouverture de visio, ce qui se fait en le reconnectant.",
        "description": "Écriture. Ouvre une visio Google Meet et y envoie le bot dans la foulée. La salle est créée au nom de la personne dont l'agenda est connecté, n'est posée dans aucun agenda et n'invite personne : le lien rendu est celui à partager. Demande que cet agenda ait accordé l'ouverture de visio, ce qui se fait en le reconnectant.\n\nPortée requise : `write`.",
        "tags": [
          "recall"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 300
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "meeting_url": {
                          "type": "string"
                        },
                        "recording": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "meeting_url": {
                              "type": "string"
                            },
                            "join_at": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "failed",
                                "done",
                                "scheduled",
                                "recording",
                                "cancelled"
                              ]
                            },
                            "error": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "meeting_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "created_at": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "meeting_url",
                            "join_at",
                            "status",
                            "error",
                            "meeting_id",
                            "created_at"
                          ]
                        }
                      },
                      "required": [
                        "meeting_url",
                        "recording"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/cancel_meeting_recording": {
      "post": {
        "operationId": "cancel_meeting_recording",
        "summary": "Écriture. Rappelle un bot, avant son départ ou pendant la visio. Un enregistrement en cours est perdu, il n'y a pas de reprise.",
        "description": "Écriture. Rappelle un bot, avant son départ ou pendant la visio. Un enregistrement en cours est perdu, il n'y a pas de reprise.\n\nPortée requise : `write`.",
        "tags": [
          "recall"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "meeting_url": {
                          "type": "string"
                        },
                        "join_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "failed",
                            "done",
                            "scheduled",
                            "recording",
                            "cancelled"
                          ]
                        },
                        "error": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "meeting_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "meeting_url",
                        "join_at",
                        "status",
                        "error",
                        "meeting_id",
                        "created_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_meeting_recording_url": {
      "get": {
        "operationId": "get_meeting_recording_url_get",
        "summary": "Lecture. URL fraîche pour réécouter l'enregistrement d'une réunion, à partir de son identifiant. Ces liens expirent vite et Recall ne garde le média que quelques jours : la réponse vaut null passé ce délai.",
        "description": "Lecture. URL fraîche pour réécouter l'enregistrement d'une réunion, à partir de son identifiant. Ces liens expirent vite et Recall ne garde le média que quelques jours : la réponse vaut null passé ce délai.\n\nPortée requise : `read`.",
        "tags": [
          "recall"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "url"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_meeting_recording_url",
        "summary": "Lecture. URL fraîche pour réécouter l'enregistrement d'une réunion, à partir de son identifiant. Ces liens expirent vite et Recall ne garde le média que quelques jours : la réponse vaut null passé ce délai.",
        "description": "Lecture. URL fraîche pour réécouter l'enregistrement d'une réunion, à partir de son identifiant. Ces liens expirent vite et Recall ne garde le média que quelques jours : la réponse vaut null passé ce délai.\n\nPortée requise : `read`.",
        "tags": [
          "recall"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "url"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_calendar_connections": {
      "get": {
        "operationId": "list_calendar_connections_get",
        "summary": "Lecture. Agendas connectés à l'enregistrement automatique : adresse Google autorisée, état de la connexion, pause éventuelle, dernière synchronisation.",
        "description": "Lecture. Agendas connectés à l'enregistrement automatique : adresse Google autorisée, état de la connexion, pause éventuelle, dernière synchronisation.\n\nPortée requise : `read`.",
        "tags": [
          "recall-calendar"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "user_id": {
                            "type": "string"
                          },
                          "platform_email": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "pending",
                              "connected",
                              "disconnected"
                            ]
                          },
                          "active": {
                            "type": "boolean"
                          },
                          "error": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "synced_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "meet_auto_join": {
                            "type": "boolean"
                          },
                          "meet_subscription_name": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "meet_subscription_expire_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "meet_error": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "user_id",
                          "platform_email",
                          "status",
                          "active",
                          "error",
                          "synced_at",
                          "meet_auto_join",
                          "meet_subscription_name",
                          "meet_subscription_expire_at",
                          "meet_error",
                          "created_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_calendar_connections",
        "summary": "Lecture. Agendas connectés à l'enregistrement automatique : adresse Google autorisée, état de la connexion, pause éventuelle, dernière synchronisation.",
        "description": "Lecture. Agendas connectés à l'enregistrement automatique : adresse Google autorisée, état de la connexion, pause éventuelle, dernière synchronisation.\n\nPortée requise : `read`.",
        "tags": [
          "recall-calendar"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "user_id": {
                            "type": "string"
                          },
                          "platform_email": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "pending",
                              "connected",
                              "disconnected"
                            ]
                          },
                          "active": {
                            "type": "boolean"
                          },
                          "error": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "synced_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "meet_auto_join": {
                            "type": "boolean"
                          },
                          "meet_subscription_name": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "meet_subscription_expire_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "meet_error": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "user_id",
                          "platform_email",
                          "status",
                          "active",
                          "error",
                          "synced_at",
                          "meet_auto_join",
                          "meet_subscription_name",
                          "meet_subscription_expire_at",
                          "meet_error",
                          "created_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/start_calendar_connection": {
      "post": {
        "operationId": "start_calendar_connection",
        "summary": "Écriture. Ouvre une autorisation Google pour l'agenda du compte appelant et rend l'adresse où se rendre. N'accorde rien par elle-même : il faut ensuite consentir chez Google pour que l'agenda soit connecté.",
        "description": "Écriture. Ouvre une autorisation Google pour l'agenda du compte appelant et rend l'adresse où se rendre. N'accorde rien par elle-même : il faut ensuite consentir chez Google pour que l'agenda soit connecté.\n\nPortée requise : `write`.",
        "tags": [
          "recall-calendar"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/set_calendar_active": {
      "post": {
        "operationId": "set_calendar_active",
        "summary": "Écriture. Suspend ou reprend l'enregistrement automatique d'un agenda. Les bots déjà planifiés ne sont pas rappelés, seule la suite est concernée.",
        "description": "Écriture. Suspend ou reprend l'enregistrement automatique d'un agenda. Les bots déjà planifiés ne sont pas rappelés, seule la suite est concernée.\n\nPortée requise : `write`.",
        "tags": [
          "recall-calendar"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "active": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "id",
                  "active"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "user_id": {
                          "type": "string"
                        },
                        "platform_email": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "pending",
                            "connected",
                            "disconnected"
                          ]
                        },
                        "active": {
                          "type": "boolean"
                        },
                        "error": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "synced_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "meet_auto_join": {
                          "type": "boolean"
                        },
                        "meet_subscription_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "meet_subscription_expire_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "meet_error": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "user_id",
                        "platform_email",
                        "status",
                        "active",
                        "error",
                        "synced_at",
                        "meet_auto_join",
                        "meet_subscription_name",
                        "meet_subscription_expire_at",
                        "meet_error",
                        "created_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/set_meet_auto_join": {
      "post": {
        "operationId": "set_meet_auto_join",
        "summary": "Écriture. Allume ou éteint l'enregistrement des réunions Meet ouvertes hors agenda, pour un agenda connecté. Allumer pose l'abonnement Google s'il manque ; éteindre le laisse en place et se rallume aussitôt.",
        "description": "Écriture. Allume ou éteint l'enregistrement des réunions Meet ouvertes hors agenda, pour un agenda connecté. Allumer pose l'abonnement Google s'il manque ; éteindre le laisse en place et se rallume aussitôt.\n\nPortée requise : `write`.",
        "tags": [
          "recall-calendar"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "enabled": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "id",
                  "enabled"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "user_id": {
                          "type": "string"
                        },
                        "platform_email": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "pending",
                            "connected",
                            "disconnected"
                          ]
                        },
                        "active": {
                          "type": "boolean"
                        },
                        "error": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "synced_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "meet_auto_join": {
                          "type": "boolean"
                        },
                        "meet_subscription_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "meet_subscription_expire_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "meet_error": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "user_id",
                        "platform_email",
                        "status",
                        "active",
                        "error",
                        "synced_at",
                        "meet_auto_join",
                        "meet_subscription_name",
                        "meet_subscription_expire_at",
                        "meet_error",
                        "created_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/retry_meet_subscription": {
      "post": {
        "operationId": "retry_meet_subscription",
        "summary": "Écriture. Repose l'abonnement Google aux réunions ouvertes hors agenda, après un échec. Sans effet quand l'abonnement est déjà en place et sain.",
        "description": "Écriture. Repose l'abonnement Google aux réunions ouvertes hors agenda, après un échec. Sans effet quand l'abonnement est déjà en place et sain.\n\nPortée requise : `write`.",
        "tags": [
          "recall-calendar"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "user_id": {
                          "type": "string"
                        },
                        "platform_email": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "pending",
                            "connected",
                            "disconnected"
                          ]
                        },
                        "active": {
                          "type": "boolean"
                        },
                        "error": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "synced_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "meet_auto_join": {
                          "type": "boolean"
                        },
                        "meet_subscription_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "meet_subscription_expire_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "meet_error": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "user_id",
                        "platform_email",
                        "status",
                        "active",
                        "error",
                        "synced_at",
                        "meet_auto_join",
                        "meet_subscription_name",
                        "meet_subscription_expire_at",
                        "meet_error",
                        "created_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/disconnect_calendar": {
      "post": {
        "operationId": "disconnect_calendar",
        "summary": "Suppression définitive, irréversible. Retire un agenda : Recall cesse de le suivre et la connexion disparaît. Il faudra repasser par l'autorisation Google pour la rétablir.",
        "description": "Suppression définitive, irréversible. Retire un agenda : Recall cesse de le suivre et la connexion disparaît. Il faudra repasser par l'autorisation Google pour la rétablir.\n\nPortée requise : `destructive`.",
        "tags": [
          "recall-calendar"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_questionnaires": {
      "get": {
        "operationId": "list_questionnaires_get",
        "summary": "Lecture. Questionnaires de l'agence, avec pour chacun son nombre de questions, d'envois et de réponses reçues.",
        "description": "Lecture. Questionnaires de l'agence, avec pour chacun son nombre de questions, d'envois et de réponses reçues.\n\nPortée requise : `read`.",
        "tags": [
          "questionnaires"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (200 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "description": "Combien de lignes rendre au plus (200 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "description": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "locale": {
                            "type": "string"
                          },
                          "questions": {
                            "type": "number"
                          },
                          "sent": {
                            "type": "number"
                          },
                          "completed": {
                            "type": "number"
                          },
                          "updated_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "title",
                          "description",
                          "locale",
                          "questions",
                          "sent",
                          "completed",
                          "updated_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_questionnaires",
        "summary": "Lecture. Questionnaires de l'agence, avec pour chacun son nombre de questions, d'envois et de réponses reçues.",
        "description": "Lecture. Questionnaires de l'agence, avec pour chacun son nombre de questions, d'envois et de réponses reçues.\n\nPortée requise : `read`.",
        "tags": [
          "questionnaires"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 200,
                    "description": "Combien de lignes rendre au plus (200 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "description": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "locale": {
                            "type": "string"
                          },
                          "questions": {
                            "type": "number"
                          },
                          "sent": {
                            "type": "number"
                          },
                          "completed": {
                            "type": "number"
                          },
                          "updated_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "title",
                          "description",
                          "locale",
                          "questions",
                          "sent",
                          "completed",
                          "updated_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_questionnaire": {
      "get": {
        "operationId": "get_questionnaire_get",
        "summary": "Lecture. Un questionnaire et sa structure entière : sections, questions, options.",
        "description": "Lecture. Un questionnaire et sa structure entière : sections, questions, options.\n\nPortée requise : `read`.",
        "tags": [
          "questionnaires"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "locale": {
                          "type": "string"
                        },
                        "content": {
                          "type": "object",
                          "properties": {
                            "sections": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "key": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "hint": {
                                    "type": "string"
                                  },
                                  "showIf": {
                                    "type": "object",
                                    "properties": {
                                      "key": {
                                        "type": "string"
                                      },
                                      "anyOf": {
                                        "type": "array",
                                        "items": {
                                          "type": "string"
                                        }
                                      }
                                    },
                                    "required": [
                                      "key",
                                      "anyOf"
                                    ]
                                  },
                                  "questions": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "key": {
                                          "type": "string"
                                        },
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "number",
                                            "text",
                                            "url",
                                            "select",
                                            "multi",
                                            "textarea"
                                          ]
                                        },
                                        "label": {
                                          "type": "string"
                                        },
                                        "help": {
                                          "type": "string"
                                        },
                                        "placeholder": {
                                          "type": "string"
                                        },
                                        "otherPlaceholder": {
                                          "type": "string"
                                        },
                                        "required": {
                                          "anyOf": [
                                            {
                                              "const": false
                                            },
                                            {
                                              "const": true
                                            }
                                          ]
                                        },
                                        "options": {
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "properties": {
                                              "key": {
                                                "type": "string"
                                              },
                                              "label": {
                                                "type": "string"
                                              },
                                              "other": {
                                                "anyOf": [
                                                  {
                                                    "const": false
                                                  },
                                                  {
                                                    "const": true
                                                  }
                                                ]
                                              }
                                            },
                                            "required": [
                                              "key",
                                              "label"
                                            ]
                                          }
                                        },
                                        "showIf": {
                                          "type": "object",
                                          "properties": {
                                            "key": {
                                              "type": "string"
                                            },
                                            "anyOf": {
                                              "type": "array",
                                              "items": {
                                                "type": "string"
                                              }
                                            }
                                          },
                                          "required": [
                                            "key",
                                            "anyOf"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "key",
                                        "type",
                                        "label"
                                      ]
                                    }
                                  }
                                },
                                "required": [
                                  "key",
                                  "title",
                                  "questions"
                                ]
                              }
                            }
                          },
                          "required": [
                            "sections"
                          ]
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "title",
                        "description",
                        "locale",
                        "content",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_questionnaire",
        "summary": "Lecture. Un questionnaire et sa structure entière : sections, questions, options.",
        "description": "Lecture. Un questionnaire et sa structure entière : sections, questions, options.\n\nPortée requise : `read`.",
        "tags": [
          "questionnaires"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "locale": {
                          "type": "string"
                        },
                        "content": {
                          "type": "object",
                          "properties": {
                            "sections": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "key": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "hint": {
                                    "type": "string"
                                  },
                                  "showIf": {
                                    "type": "object",
                                    "properties": {
                                      "key": {
                                        "type": "string"
                                      },
                                      "anyOf": {
                                        "type": "array",
                                        "items": {
                                          "type": "string"
                                        }
                                      }
                                    },
                                    "required": [
                                      "key",
                                      "anyOf"
                                    ]
                                  },
                                  "questions": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "key": {
                                          "type": "string"
                                        },
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "number",
                                            "text",
                                            "url",
                                            "select",
                                            "multi",
                                            "textarea"
                                          ]
                                        },
                                        "label": {
                                          "type": "string"
                                        },
                                        "help": {
                                          "type": "string"
                                        },
                                        "placeholder": {
                                          "type": "string"
                                        },
                                        "otherPlaceholder": {
                                          "type": "string"
                                        },
                                        "required": {
                                          "anyOf": [
                                            {
                                              "const": false
                                            },
                                            {
                                              "const": true
                                            }
                                          ]
                                        },
                                        "options": {
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "properties": {
                                              "key": {
                                                "type": "string"
                                              },
                                              "label": {
                                                "type": "string"
                                              },
                                              "other": {
                                                "anyOf": [
                                                  {
                                                    "const": false
                                                  },
                                                  {
                                                    "const": true
                                                  }
                                                ]
                                              }
                                            },
                                            "required": [
                                              "key",
                                              "label"
                                            ]
                                          }
                                        },
                                        "showIf": {
                                          "type": "object",
                                          "properties": {
                                            "key": {
                                              "type": "string"
                                            },
                                            "anyOf": {
                                              "type": "array",
                                              "items": {
                                                "type": "string"
                                              }
                                            }
                                          },
                                          "required": [
                                            "key",
                                            "anyOf"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "key",
                                        "type",
                                        "label"
                                      ]
                                    }
                                  }
                                },
                                "required": [
                                  "key",
                                  "title",
                                  "questions"
                                ]
                              }
                            }
                          },
                          "required": [
                            "sections"
                          ]
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "title",
                        "description",
                        "locale",
                        "content",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/upsert_questionnaire": {
      "post": {
        "operationId": "upsert_questionnaire",
        "summary": "Écriture. Crée ou modifie un questionnaire. Modifier ne touche à aucune réponse déjà reçue : chaque envoi garde la copie des questions telles qu'elles ont été posées.",
        "description": "Écriture. Crée ou modifie un questionnaire. Modifier ne touche à aucune réponse déjà reçue : chaque envoi garde la copie des questions telles qu'elles ont été posées.\n\nPortée requise : `write`.",
        "tags": [
          "questionnaires"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "description": {
                    "type": "string",
                    "maxLength": 1000
                  },
                  "locale": {
                    "type": "string",
                    "enum": [
                      "fr",
                      "en",
                      "es"
                    ],
                    "default": "fr"
                  },
                  "content": {
                    "type": "object",
                    "properties": {
                      "sections": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "key": {
                              "type": "string",
                              "pattern": "^[a-z0-9_]{1,40}$"
                            },
                            "title": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 300
                            },
                            "hint": {
                              "type": "string",
                              "maxLength": 500
                            },
                            "showIf": {
                              "type": "object",
                              "properties": {
                                "key": {
                                  "type": "string",
                                  "pattern": "^[a-z0-9_]{1,40}$"
                                },
                                "anyOf": {
                                  "type": "array",
                                  "items": {
                                    "type": "string",
                                    "pattern": "^[a-z0-9_]{1,40}$"
                                  },
                                  "minItems": 1,
                                  "maxItems": 60
                                }
                              },
                              "required": [
                                "key",
                                "anyOf"
                              ],
                              "additionalProperties": false
                            },
                            "questions": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "key": {
                                    "type": "string",
                                    "pattern": "^[a-z0-9_]{1,40}$"
                                  },
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "select",
                                      "multi",
                                      "text",
                                      "textarea",
                                      "number",
                                      "url"
                                    ]
                                  },
                                  "label": {
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 300
                                  },
                                  "help": {
                                    "type": "string",
                                    "maxLength": 500
                                  },
                                  "placeholder": {
                                    "type": "string",
                                    "maxLength": 120
                                  },
                                  "otherPlaceholder": {
                                    "type": "string",
                                    "maxLength": 120
                                  },
                                  "required": {
                                    "type": "boolean"
                                  },
                                  "options": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "key": {
                                          "type": "string",
                                          "pattern": "^[a-z0-9_]{1,40}$"
                                        },
                                        "label": {
                                          "type": "string",
                                          "minLength": 1,
                                          "maxLength": 200
                                        },
                                        "other": {
                                          "type": "boolean"
                                        }
                                      },
                                      "required": [
                                        "key",
                                        "label"
                                      ],
                                      "additionalProperties": false
                                    },
                                    "maxItems": 60
                                  },
                                  "showIf": {
                                    "type": "object",
                                    "properties": {
                                      "key": {
                                        "type": "string",
                                        "pattern": "^[a-z0-9_]{1,40}$"
                                      },
                                      "anyOf": {
                                        "type": "array",
                                        "items": {
                                          "type": "string",
                                          "pattern": "^[a-z0-9_]{1,40}$"
                                        },
                                        "minItems": 1,
                                        "maxItems": 60
                                      }
                                    },
                                    "required": [
                                      "key",
                                      "anyOf"
                                    ],
                                    "additionalProperties": false
                                  }
                                },
                                "required": [
                                  "key",
                                  "type",
                                  "label"
                                ],
                                "additionalProperties": false
                              },
                              "maxItems": 60
                            }
                          },
                          "required": [
                            "key",
                            "title",
                            "questions"
                          ],
                          "additionalProperties": false
                        },
                        "maxItems": 30
                      }
                    },
                    "required": [
                      "sections"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "title",
                  "content"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/duplicate_questionnaire": {
      "post": {
        "operationId": "duplicate_questionnaire",
        "summary": "Écriture. Copie un questionnaire sous un nouveau nom, pour en faire une variante qu'on modifie ensuite.",
        "description": "Écriture. Copie un questionnaire sous un nouveau nom, pour en faire une variante qu'on modifie ensuite.\n\nPortée requise : `write`.",
        "tags": [
          "questionnaires"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  }
                },
                "required": [
                  "id",
                  "title"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_questionnaire": {
      "post": {
        "operationId": "delete_questionnaire",
        "summary": "Suppression définitive, irréversible. Supprime un questionnaire de la bibliothèque. Les envois déjà faits restent lisibles.",
        "description": "Suppression définitive, irréversible. Supprime un questionnaire de la bibliothèque. Les envois déjà faits restent lisibles.\n\nPortée requise : `destructive`.",
        "tags": [
          "questionnaires"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "ok": {
                          "const": true
                        }
                      },
                      "required": [
                        "ok"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/send_questionnaire": {
      "post": {
        "operationId": "send_questionnaire",
        "summary": "Écriture. Envoie un questionnaire à un client : crée le lien à jeton et, sauf mention contraire, l'envoie par e-mail à l'adresse de la fiche.",
        "description": "Écriture. Envoie un questionnaire à un client : crée le lien à jeton et, sauf mention contraire, l'envoie par e-mail à l'adresse de la fiche.\n\nPortée requise : `write`.",
        "tags": [
          "questionnaires"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "questionnaire_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "client_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "email": {
                    "type": "string",
                    "format": "email",
                    "maxLength": 200
                  },
                  "notify": {
                    "type": "boolean",
                    "default": true
                  }
                },
                "required": [
                  "questionnaire_id",
                  "client_id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "url": {
                          "type": "string"
                        },
                        "sent": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "id",
                        "url",
                        "sent"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_questionnaire_responses": {
      "get": {
        "operationId": "list_questionnaire_responses_get",
        "summary": "Lecture. Envois faits et où ils en sont, éventuellement filtrés sur un client ou un questionnaire.",
        "description": "Lecture. Envois faits et où ils en sont, éventuellement filtrés sur un client ou un questionnaire.\n\nPortée requise : `read`.",
        "tags": [
          "questionnaires"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "client_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "questionnaire_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (500 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500,
              "description": "Combien de lignes rendre au plus (500 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "client_id": {
                            "type": "string"
                          },
                          "client_name": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "questionnaire_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "questionnaire_title": {
                            "type": "string"
                          },
                          "email": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "locale": {
                            "type": "string"
                          },
                          "token": {
                            "type": "string"
                          },
                          "sent_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "opened_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "completed_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "updated_at": {
                            "type": "string"
                          },
                          "answered": {
                            "type": "number"
                          },
                          "total": {
                            "type": "number"
                          }
                        },
                        "required": [
                          "id",
                          "client_id",
                          "client_name",
                          "questionnaire_id",
                          "questionnaire_title",
                          "email",
                          "locale",
                          "token",
                          "sent_at",
                          "opened_at",
                          "completed_at",
                          "updated_at",
                          "answered",
                          "total"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_questionnaire_responses",
        "summary": "Lecture. Envois faits et où ils en sont, éventuellement filtrés sur un client ou un questionnaire.",
        "description": "Lecture. Envois faits et où ils en sont, éventuellement filtrés sur un client ou un questionnaire.\n\nPortée requise : `read`.",
        "tags": [
          "questionnaires"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "questionnaire_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 500,
                    "description": "Combien de lignes rendre au plus (500 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "client_id": {
                            "type": "string"
                          },
                          "client_name": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "questionnaire_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "questionnaire_title": {
                            "type": "string"
                          },
                          "email": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "locale": {
                            "type": "string"
                          },
                          "token": {
                            "type": "string"
                          },
                          "sent_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "opened_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "completed_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "updated_at": {
                            "type": "string"
                          },
                          "answered": {
                            "type": "number"
                          },
                          "total": {
                            "type": "number"
                          }
                        },
                        "required": [
                          "id",
                          "client_id",
                          "client_name",
                          "questionnaire_id",
                          "questionnaire_title",
                          "email",
                          "locale",
                          "token",
                          "sent_at",
                          "opened_at",
                          "completed_at",
                          "updated_at",
                          "answered",
                          "total"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_questionnaire_response": {
      "get": {
        "operationId": "get_questionnaire_response_get",
        "summary": "Lecture. Une réponse, question par question, telle qu'elle a été posée.",
        "description": "Lecture. Une réponse, question par question, telle qu'elle a été posée.\n\nPortée requise : `read`.",
        "tags": [
          "questionnaires"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "client_id": {
                              "type": "string"
                            },
                            "client_name": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "questionnaire_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "questionnaire_title": {
                              "type": "string"
                            },
                            "email": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "locale": {
                              "type": "string"
                            },
                            "token": {
                              "type": "string"
                            },
                            "sent_at": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "opened_at": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "completed_at": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "created_at": {
                              "type": "string"
                            },
                            "updated_at": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "client_id",
                            "client_name",
                            "questionnaire_id",
                            "questionnaire_title",
                            "email",
                            "locale",
                            "token",
                            "sent_at",
                            "opened_at",
                            "completed_at",
                            "created_at",
                            "updated_at"
                          ]
                        },
                        "content": {
                          "type": "object",
                          "properties": {
                            "sections": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "key": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "hint": {
                                    "type": "string"
                                  },
                                  "showIf": {
                                    "type": "object",
                                    "properties": {
                                      "key": {
                                        "type": "string"
                                      },
                                      "anyOf": {
                                        "type": "array",
                                        "items": {
                                          "type": "string"
                                        }
                                      }
                                    },
                                    "required": [
                                      "key",
                                      "anyOf"
                                    ]
                                  },
                                  "questions": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "key": {
                                          "type": "string"
                                        },
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "number",
                                            "text",
                                            "url",
                                            "select",
                                            "multi",
                                            "textarea"
                                          ]
                                        },
                                        "label": {
                                          "type": "string"
                                        },
                                        "help": {
                                          "type": "string"
                                        },
                                        "placeholder": {
                                          "type": "string"
                                        },
                                        "otherPlaceholder": {
                                          "type": "string"
                                        },
                                        "required": {
                                          "anyOf": [
                                            {
                                              "const": false
                                            },
                                            {
                                              "const": true
                                            }
                                          ]
                                        },
                                        "options": {
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "properties": {
                                              "key": {
                                                "type": "string"
                                              },
                                              "label": {
                                                "type": "string"
                                              },
                                              "other": {
                                                "anyOf": [
                                                  {
                                                    "const": false
                                                  },
                                                  {
                                                    "const": true
                                                  }
                                                ]
                                              }
                                            },
                                            "required": [
                                              "key",
                                              "label"
                                            ]
                                          }
                                        },
                                        "showIf": {
                                          "type": "object",
                                          "properties": {
                                            "key": {
                                              "type": "string"
                                            },
                                            "anyOf": {
                                              "type": "array",
                                              "items": {
                                                "type": "string"
                                              }
                                            }
                                          },
                                          "required": [
                                            "key",
                                            "anyOf"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "key",
                                        "type",
                                        "label"
                                      ]
                                    }
                                  }
                                },
                                "required": [
                                  "key",
                                  "title",
                                  "questions"
                                ]
                              }
                            }
                          },
                          "required": [
                            "sections"
                          ]
                        },
                        "answers": {
                          "type": "object",
                          "additionalProperties": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              },
                              {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              }
                            ]
                          }
                        }
                      },
                      "required": [
                        "response",
                        "content",
                        "answers"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_questionnaire_response",
        "summary": "Lecture. Une réponse, question par question, telle qu'elle a été posée.",
        "description": "Lecture. Une réponse, question par question, telle qu'elle a été posée.\n\nPortée requise : `read`.",
        "tags": [
          "questionnaires"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "client_id": {
                              "type": "string"
                            },
                            "client_name": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "questionnaire_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "questionnaire_title": {
                              "type": "string"
                            },
                            "email": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "locale": {
                              "type": "string"
                            },
                            "token": {
                              "type": "string"
                            },
                            "sent_at": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "opened_at": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "completed_at": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "created_at": {
                              "type": "string"
                            },
                            "updated_at": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "client_id",
                            "client_name",
                            "questionnaire_id",
                            "questionnaire_title",
                            "email",
                            "locale",
                            "token",
                            "sent_at",
                            "opened_at",
                            "completed_at",
                            "created_at",
                            "updated_at"
                          ]
                        },
                        "content": {
                          "type": "object",
                          "properties": {
                            "sections": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "key": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "hint": {
                                    "type": "string"
                                  },
                                  "showIf": {
                                    "type": "object",
                                    "properties": {
                                      "key": {
                                        "type": "string"
                                      },
                                      "anyOf": {
                                        "type": "array",
                                        "items": {
                                          "type": "string"
                                        }
                                      }
                                    },
                                    "required": [
                                      "key",
                                      "anyOf"
                                    ]
                                  },
                                  "questions": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "key": {
                                          "type": "string"
                                        },
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "number",
                                            "text",
                                            "url",
                                            "select",
                                            "multi",
                                            "textarea"
                                          ]
                                        },
                                        "label": {
                                          "type": "string"
                                        },
                                        "help": {
                                          "type": "string"
                                        },
                                        "placeholder": {
                                          "type": "string"
                                        },
                                        "otherPlaceholder": {
                                          "type": "string"
                                        },
                                        "required": {
                                          "anyOf": [
                                            {
                                              "const": false
                                            },
                                            {
                                              "const": true
                                            }
                                          ]
                                        },
                                        "options": {
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "properties": {
                                              "key": {
                                                "type": "string"
                                              },
                                              "label": {
                                                "type": "string"
                                              },
                                              "other": {
                                                "anyOf": [
                                                  {
                                                    "const": false
                                                  },
                                                  {
                                                    "const": true
                                                  }
                                                ]
                                              }
                                            },
                                            "required": [
                                              "key",
                                              "label"
                                            ]
                                          }
                                        },
                                        "showIf": {
                                          "type": "object",
                                          "properties": {
                                            "key": {
                                              "type": "string"
                                            },
                                            "anyOf": {
                                              "type": "array",
                                              "items": {
                                                "type": "string"
                                              }
                                            }
                                          },
                                          "required": [
                                            "key",
                                            "anyOf"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "key",
                                        "type",
                                        "label"
                                      ]
                                    }
                                  }
                                },
                                "required": [
                                  "key",
                                  "title",
                                  "questions"
                                ]
                              }
                            }
                          },
                          "required": [
                            "sections"
                          ]
                        },
                        "answers": {
                          "type": "object",
                          "additionalProperties": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              },
                              {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              }
                            ]
                          }
                        }
                      },
                      "required": [
                        "response",
                        "content",
                        "answers"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_questionnaire_response": {
      "post": {
        "operationId": "delete_questionnaire_response",
        "summary": "Suppression définitive, irréversible. Supprime définitivement un envoi et les réponses qu'il portait.",
        "description": "Suppression définitive, irréversible. Supprime définitivement un envoi et les réponses qu'il portait.\n\nPortée requise : `destructive`.",
        "tags": [
          "questionnaires"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "ok": {
                          "const": true
                        }
                      },
                      "required": [
                        "ok"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_credential_board": {
      "get": {
        "operationId": "get_credential_board_get",
        "summary": "Lecture. Identifiants déposés pour un client et demandes en cours. Les secrets restent chiffrés et ne sont jamais rendus ici.",
        "description": "Lecture. Identifiants déposés pour un client et demandes en cours. Les secrets restent chiffrés et ne sont jamais rendus ici.\n\nPortée requise : `read`.",
        "tags": [
          "credentials"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "client_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "credentials": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "client_id": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string",
                                "enum": [
                                  "login",
                                  "api_key"
                                ]
                              },
                              "key_version": {
                                "type": "number"
                              },
                              "created_by": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_side": {
                                "type": "string",
                                "enum": [
                                  "client",
                                  "agency"
                                ]
                              },
                              "created_at": {
                                "type": "string"
                              },
                              "updated_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "client_id",
                              "label",
                              "type",
                              "key_version",
                              "created_by",
                              "created_side",
                              "created_at",
                              "updated_at"
                            ]
                          }
                        },
                        "requests": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "client_id": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string",
                                "enum": [
                                  "login",
                                  "api_key"
                                ]
                              },
                              "message": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "open",
                                  "cancelled",
                                  "fulfilled",
                                  "declined"
                                ]
                              },
                              "requested_side": {
                                "type": "string",
                                "enum": [
                                  "client",
                                  "agency"
                                ]
                              },
                              "requested_by_label": {
                                "type": "string"
                              },
                              "fulfilled_credential_id": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_at": {
                                "type": "string"
                              },
                              "updated_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "client_id",
                              "label",
                              "type",
                              "message",
                              "status",
                              "requested_side",
                              "requested_by_label",
                              "fulfilled_credential_id",
                              "created_at",
                              "updated_at"
                            ]
                          }
                        },
                        "events": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "credential_id": {
                                "type": "string"
                              },
                              "credential_label": {
                                "type": "string"
                              },
                              "event": {
                                "type": "string",
                                "enum": [
                                  "created",
                                  "updated",
                                  "revealed",
                                  "deleted",
                                  "rekeyed"
                                ]
                              },
                              "actor_side": {
                                "type": "string",
                                "enum": [
                                  "client",
                                  "agency"
                                ]
                              },
                              "actor_label": {
                                "type": "string"
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "credential_id",
                              "credential_label",
                              "event",
                              "actor_side",
                              "actor_label",
                              "created_at"
                            ]
                          }
                        },
                        "side": {
                          "type": "string",
                          "enum": [
                            "client",
                            "agency"
                          ]
                        },
                        "key_available": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "credentials",
                        "requests",
                        "events",
                        "side",
                        "key_available"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_credential_board",
        "summary": "Lecture. Identifiants déposés pour un client et demandes en cours. Les secrets restent chiffrés et ne sont jamais rendus ici.",
        "description": "Lecture. Identifiants déposés pour un client et demandes en cours. Les secrets restent chiffrés et ne sont jamais rendus ici.\n\nPortée requise : `read`.",
        "tags": [
          "credentials"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "credentials": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "client_id": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string",
                                "enum": [
                                  "login",
                                  "api_key"
                                ]
                              },
                              "key_version": {
                                "type": "number"
                              },
                              "created_by": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_side": {
                                "type": "string",
                                "enum": [
                                  "client",
                                  "agency"
                                ]
                              },
                              "created_at": {
                                "type": "string"
                              },
                              "updated_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "client_id",
                              "label",
                              "type",
                              "key_version",
                              "created_by",
                              "created_side",
                              "created_at",
                              "updated_at"
                            ]
                          }
                        },
                        "requests": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "client_id": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string",
                                "enum": [
                                  "login",
                                  "api_key"
                                ]
                              },
                              "message": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "open",
                                  "cancelled",
                                  "fulfilled",
                                  "declined"
                                ]
                              },
                              "requested_side": {
                                "type": "string",
                                "enum": [
                                  "client",
                                  "agency"
                                ]
                              },
                              "requested_by_label": {
                                "type": "string"
                              },
                              "fulfilled_credential_id": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_at": {
                                "type": "string"
                              },
                              "updated_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "client_id",
                              "label",
                              "type",
                              "message",
                              "status",
                              "requested_side",
                              "requested_by_label",
                              "fulfilled_credential_id",
                              "created_at",
                              "updated_at"
                            ]
                          }
                        },
                        "events": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "credential_id": {
                                "type": "string"
                              },
                              "credential_label": {
                                "type": "string"
                              },
                              "event": {
                                "type": "string",
                                "enum": [
                                  "created",
                                  "updated",
                                  "revealed",
                                  "deleted",
                                  "rekeyed"
                                ]
                              },
                              "actor_side": {
                                "type": "string",
                                "enum": [
                                  "client",
                                  "agency"
                                ]
                              },
                              "actor_label": {
                                "type": "string"
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "credential_id",
                              "credential_label",
                              "event",
                              "actor_side",
                              "actor_label",
                              "created_at"
                            ]
                          }
                        },
                        "side": {
                          "type": "string",
                          "enum": [
                            "client",
                            "agency"
                          ]
                        },
                        "key_available": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "credentials",
                        "requests",
                        "events",
                        "side",
                        "key_available"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/create_credential": {
      "post": {
        "operationId": "create_credential",
        "summary": "Écriture. Dépose un identifiant chiffré pour un client. Le secret transite par la conversation : préférer l'écran quand c'est possible.",
        "description": "Écriture. Dépose un identifiant chiffré pour un client. Le secret transite par la conversation : préférer l'écran quand c'est possible.\n\nPortée requise : `write`.",
        "tags": [
          "credentials"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "label": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 160
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "login",
                      "api_key"
                    ]
                  },
                  "values": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "maxLength": 2000
                      },
                      "username": {
                        "type": "string",
                        "maxLength": 320
                      },
                      "password": {
                        "type": "string",
                        "maxLength": 1000
                      },
                      "key": {
                        "type": "string",
                        "maxLength": 4000
                      },
                      "secret": {
                        "type": "string",
                        "maxLength": 4000
                      },
                      "notes": {
                        "type": "string",
                        "maxLength": 10000
                      }
                    },
                    "additionalProperties": false
                  },
                  "request_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "label",
                  "type",
                  "values"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "login",
                            "api_key"
                          ]
                        },
                        "key_version": {
                          "type": "number"
                        },
                        "created_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_side": {
                          "type": "string",
                          "enum": [
                            "client",
                            "agency"
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "client_id",
                        "label",
                        "type",
                        "key_version",
                        "created_by",
                        "created_side",
                        "created_at",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/update_credential": {
      "post": {
        "operationId": "update_credential",
        "summary": "Écriture. Modifie un identifiant déposé. Remplacer le secret écrase l'ancien sans recours.",
        "description": "Écriture. Modifie un identifiant déposé. Remplacer le secret écrase l'ancien sans recours.\n\nPortée requise : `write`.",
        "tags": [
          "credentials"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "label": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 160
                  },
                  "values": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "maxLength": 2000
                      },
                      "username": {
                        "type": "string",
                        "maxLength": 320
                      },
                      "password": {
                        "type": "string",
                        "maxLength": 1000
                      },
                      "key": {
                        "type": "string",
                        "maxLength": 4000
                      },
                      "secret": {
                        "type": "string",
                        "maxLength": 4000
                      },
                      "notes": {
                        "type": "string",
                        "maxLength": 10000
                      }
                    },
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "login",
                            "api_key"
                          ]
                        },
                        "key_version": {
                          "type": "number"
                        },
                        "created_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_side": {
                          "type": "string",
                          "enum": [
                            "client",
                            "agency"
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "client_id",
                        "label",
                        "type",
                        "key_version",
                        "created_by",
                        "created_side",
                        "created_at",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_credential": {
      "post": {
        "operationId": "delete_credential",
        "summary": "Suppression définitive, irréversible. Supprime définitivement un identifiant déposé.",
        "description": "Suppression définitive, irréversible. Supprime définitivement un identifiant déposé.\n\nPortée requise : `destructive`.",
        "tags": [
          "credentials"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "null",
                      "description": "Ce geste ne rend rien."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/create_credential_request": {
      "post": {
        "operationId": "create_credential_request",
        "summary": "Écriture. Demande un identifiant à un client. Aucun secret n'entre ici, seulement la demande.",
        "description": "Écriture. Demande un identifiant à un client. Aucun secret n'entre ici, seulement la demande.\n\nPortée requise : `write`.",
        "tags": [
          "credentials"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "label": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 160
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "login",
                      "api_key"
                    ]
                  },
                  "message": {
                    "type": "string",
                    "maxLength": 2000
                  }
                },
                "required": [
                  "label",
                  "type"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "login",
                            "api_key"
                          ]
                        },
                        "message": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "open",
                            "cancelled",
                            "fulfilled",
                            "declined"
                          ]
                        },
                        "requested_side": {
                          "type": "string",
                          "enum": [
                            "client",
                            "agency"
                          ]
                        },
                        "requested_by_label": {
                          "type": "string"
                        },
                        "fulfilled_credential_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "client_id",
                        "label",
                        "type",
                        "message",
                        "status",
                        "requested_side",
                        "requested_by_label",
                        "fulfilled_credential_id",
                        "created_at",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/close_credential_request": {
      "post": {
        "operationId": "close_credential_request",
        "summary": "Écriture. Clôt une demande d'identifiant.",
        "description": "Écriture. Clôt une demande d'identifiant.\n\nPortée requise : `write`.",
        "tags": [
          "credentials"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "declined",
                      "cancelled"
                    ]
                  }
                },
                "required": [
                  "id",
                  "status"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "login",
                            "api_key"
                          ]
                        },
                        "message": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "open",
                            "cancelled",
                            "fulfilled",
                            "declined"
                          ]
                        },
                        "requested_side": {
                          "type": "string",
                          "enum": [
                            "client",
                            "agency"
                          ]
                        },
                        "requested_by_label": {
                          "type": "string"
                        },
                        "fulfilled_credential_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "client_id",
                        "label",
                        "type",
                        "message",
                        "status",
                        "requested_side",
                        "requested_by_label",
                        "fulfilled_credential_id",
                        "created_at",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_key_rotation_status": {
      "get": {
        "operationId": "get_key_rotation_status_get",
        "summary": "Lecture. État du chiffrement des identifiants : version de clé en service et nombre de secrets restant à re-chiffrer.",
        "description": "Lecture. État du chiffrement des identifiants : version de clé en service et nombre de secrets restant à re-chiffrer.\n\nPortée requise : `read`.",
        "tags": [
          "credentials"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "current": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "available": {
                          "type": "array",
                          "items": {
                            "type": "number"
                          }
                        },
                        "counts": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "version": {
                                "type": "number"
                              },
                              "count": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "version",
                              "count"
                            ]
                          }
                        },
                        "orphaned": {
                          "type": "array",
                          "items": {
                            "type": "number"
                          }
                        }
                      },
                      "required": [
                        "current",
                        "available",
                        "counts",
                        "orphaned"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_key_rotation_status",
        "summary": "Lecture. État du chiffrement des identifiants : version de clé en service et nombre de secrets restant à re-chiffrer.",
        "description": "Lecture. État du chiffrement des identifiants : version de clé en service et nombre de secrets restant à re-chiffrer.\n\nPortée requise : `read`.",
        "tags": [
          "credentials"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "current": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "available": {
                          "type": "array",
                          "items": {
                            "type": "number"
                          }
                        },
                        "counts": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "version": {
                                "type": "number"
                              },
                              "count": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "version",
                              "count"
                            ]
                          }
                        },
                        "orphaned": {
                          "type": "array",
                          "items": {
                            "type": "number"
                          }
                        }
                      },
                      "required": [
                        "current",
                        "available",
                        "counts",
                        "orphaned"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_client_bills": {
      "get": {
        "operationId": "list_client_bills_get",
        "summary": "Lecture. Factures adressées à un client : numéro, date d'émission, total TVA comprise, TVA, nom du PDF. Aucune URL n'est rendue ici.",
        "description": "Lecture. Factures adressées à un client : numéro, date d'émission, total TVA comprise, TVA, nom du PDF. Aucune URL n'est rendue ici.\n\nPortée requise : `read`.",
        "tags": [
          "bills"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "client_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (500 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500,
              "description": "Combien de lignes rendre au plus (500 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "client_id": {
                            "type": "string"
                          },
                          "number": {
                            "type": "string"
                          },
                          "issued_on": {
                            "type": "string"
                          },
                          "due_on": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "paid_on": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "total_cents": {
                            "type": "number"
                          },
                          "vat_cents": {
                            "type": "number"
                          },
                          "file_name": {
                            "type": "string"
                          },
                          "size_bytes": {
                            "type": "number"
                          },
                          "created_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "client_id",
                          "number",
                          "issued_on",
                          "due_on",
                          "paid_on",
                          "total_cents",
                          "vat_cents",
                          "file_name",
                          "size_bytes",
                          "created_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_client_bills",
        "summary": "Lecture. Factures adressées à un client : numéro, date d'émission, total TVA comprise, TVA, nom du PDF. Aucune URL n'est rendue ici.",
        "description": "Lecture. Factures adressées à un client : numéro, date d'émission, total TVA comprise, TVA, nom du PDF. Aucune URL n'est rendue ici.\n\nPortée requise : `read`.",
        "tags": [
          "bills"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 500,
                    "description": "Combien de lignes rendre au plus (500 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "client_id": {
                            "type": "string"
                          },
                          "number": {
                            "type": "string"
                          },
                          "issued_on": {
                            "type": "string"
                          },
                          "due_on": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "paid_on": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "total_cents": {
                            "type": "number"
                          },
                          "vat_cents": {
                            "type": "number"
                          },
                          "file_name": {
                            "type": "string"
                          },
                          "size_bytes": {
                            "type": "number"
                          },
                          "created_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "client_id",
                          "number",
                          "issued_on",
                          "due_on",
                          "paid_on",
                          "total_cents",
                          "vat_cents",
                          "file_name",
                          "size_bytes",
                          "created_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/create_client_bill": {
      "post": {
        "operationId": "create_client_bill",
        "summary": "Écriture. Enregistre une facture pour un client et pousse son PDF, attendu en data URL complète. Le numéro, la date d'émission et les montants en centimes sont affirmés par l'appelant : l'écran, lui, les lit dans le document et les fait valider.",
        "description": "Écriture. Enregistre une facture pour un client et pousse son PDF, attendu en data URL complète. Le numéro, la date d'émission et les montants en centimes sont affirmés par l'appelant : l'écran, lui, les lit dans le document et les fait valider.\n\nPortée requise : `write`.",
        "tags": [
          "bills"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "number": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 60
                  },
                  "issued_on": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                  },
                  "due_on": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "total_cents": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "vat_cents": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "file_name": {
                    "type": "string",
                    "minLength": 1
                  },
                  "data_url": {
                    "type": "string",
                    "minLength": 1
                  }
                },
                "required": [
                  "client_id",
                  "number",
                  "issued_on",
                  "total_cents",
                  "vat_cents",
                  "file_name",
                  "data_url"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "type": "string"
                        },
                        "number": {
                          "type": "string"
                        },
                        "issued_on": {
                          "type": "string"
                        },
                        "due_on": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "paid_on": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "total_cents": {
                          "type": "number"
                        },
                        "vat_cents": {
                          "type": "number"
                        },
                        "file_name": {
                          "type": "string"
                        },
                        "size_bytes": {
                          "type": "number"
                        },
                        "created_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "client_id",
                        "number",
                        "issued_on",
                        "due_on",
                        "paid_on",
                        "total_cents",
                        "vat_cents",
                        "file_name",
                        "size_bytes",
                        "created_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/set_client_bill_due_date": {
      "post": {
        "operationId": "set_client_bill_due_date",
        "summary": "Écriture. Pose ou corrige l'échéance d'une facture déjà déposée, `null` l'effaçant. C'est la seule valeur d'une facture enregistrée qui se modifie : les autres recopient un document immuable. Une échéance antérieure à la date d'émission est refusée.",
        "description": "Écriture. Pose ou corrige l'échéance d'une facture déjà déposée, `null` l'effaçant. C'est la seule valeur d'une facture enregistrée qui se modifie : les autres recopient un document immuable. Une échéance antérieure à la date d'émission est refusée.\n\nPortée requise : `write`.",
        "tags": [
          "bills"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "due_on": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "due_on"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "type": "string"
                        },
                        "number": {
                          "type": "string"
                        },
                        "issued_on": {
                          "type": "string"
                        },
                        "due_on": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "paid_on": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "total_cents": {
                          "type": "number"
                        },
                        "vat_cents": {
                          "type": "number"
                        },
                        "file_name": {
                          "type": "string"
                        },
                        "size_bytes": {
                          "type": "number"
                        },
                        "created_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "client_id",
                        "number",
                        "issued_on",
                        "due_on",
                        "paid_on",
                        "total_cents",
                        "vat_cents",
                        "file_name",
                        "size_bytes",
                        "created_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/set_client_bill_payment_date": {
      "post": {
        "operationId": "set_client_bill_payment_date",
        "summary": "Écriture. Indique qu'une facture a été réglée, à la date où l'agence l'a constaté, `null` la remettant en attente. C'est la seule valeur d'une facture qui ne vienne pas du document : une facture est émise avant d'être payée. Une date antérieure à la date d'émission est refusée, et le client n'en est pas averti.",
        "description": "Écriture. Indique qu'une facture a été réglée, à la date où l'agence l'a constaté, `null` la remettant en attente. C'est la seule valeur d'une facture qui ne vienne pas du document : une facture est émise avant d'être payée. Une date antérieure à la date d'émission est refusée, et le client n'en est pas averti.\n\nPortée requise : `write`.",
        "tags": [
          "bills"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "paid_on": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "paid_on"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "type": "string"
                        },
                        "number": {
                          "type": "string"
                        },
                        "issued_on": {
                          "type": "string"
                        },
                        "due_on": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "paid_on": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "total_cents": {
                          "type": "number"
                        },
                        "vat_cents": {
                          "type": "number"
                        },
                        "file_name": {
                          "type": "string"
                        },
                        "size_bytes": {
                          "type": "number"
                        },
                        "created_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "client_id",
                        "number",
                        "issued_on",
                        "due_on",
                        "paid_on",
                        "total_cents",
                        "vat_cents",
                        "file_name",
                        "size_bytes",
                        "created_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_client_bill": {
      "post": {
        "operationId": "delete_client_bill",
        "summary": "Suppression définitive, irréversible. Retire définitivement une facture de la fiche d'un client, et son PDF avec. N'annule rien en comptabilité : ce qui annule une facture est un avoir, qui se dépose comme le document qu'il est.",
        "description": "Suppression définitive, irréversible. Retire définitivement une facture de la fiche d'un client, et son PDF avec. N'annule rien en comptabilité : ce qui annule une facture est un avoir, qui se dépose comme le document qu'il est.\n\nPortée requise : `destructive`.",
        "tags": [
          "bills"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_client_metrics": {
      "get": {
        "operationId": "list_client_metrics_get",
        "summary": "Lecture. Mesures (KPI) suivies pour un client, chacune avec tous ses relevés : nom, unité, sens favorable, façon de réunir les relevés, décimales, puis les valeurs avec la période qu'elles couvrent et leurs notes.",
        "description": "Lecture. Mesures (KPI) suivies pour un client, chacune avec tous ses relevés : nom, unité, sens favorable, façon de réunir les relevés, décimales, puis les valeurs avec la période qu'elles couvrent et leurs notes.\n\nPortée requise : `read`.",
        "tags": [
          "metrics"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "client_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "metrics": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "client_id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "unit": {
                                "type": "string"
                              },
                              "description": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "direction": {
                                "type": "string",
                                "enum": [
                                  "up",
                                  "down",
                                  "neutral"
                                ]
                              },
                              "aggregation": {
                                "type": "string",
                                "enum": [
                                  "sum",
                                  "last",
                                  "average"
                                ]
                              },
                              "decimals": {
                                "type": "number"
                              },
                              "created_at": {
                                "type": "string"
                              },
                              "readings": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string"
                                    },
                                    "metric_id": {
                                      "type": "string"
                                    },
                                    "period_start": {
                                      "type": "string"
                                    },
                                    "period_end": {
                                      "type": "string"
                                    },
                                    "grain": {
                                      "type": "string",
                                      "enum": [
                                        "custom",
                                        "day",
                                        "week",
                                        "month",
                                        "year",
                                        "quarter"
                                      ]
                                    },
                                    "value": {
                                      "type": "number"
                                    },
                                    "note": {
                                      "anyOf": [
                                        {
                                          "type": "null"
                                        },
                                        {
                                          "type": "string"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "metric_id",
                                    "period_start",
                                    "period_end",
                                    "grain",
                                    "value",
                                    "note"
                                  ]
                                }
                              }
                            },
                            "required": [
                              "id",
                              "client_id",
                              "name",
                              "unit",
                              "description",
                              "direction",
                              "aggregation",
                              "decimals",
                              "created_at",
                              "readings"
                            ]
                          }
                        }
                      },
                      "required": [
                        "metrics"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_client_metrics",
        "summary": "Lecture. Mesures (KPI) suivies pour un client, chacune avec tous ses relevés : nom, unité, sens favorable, façon de réunir les relevés, décimales, puis les valeurs avec la période qu'elles couvrent et leurs notes.",
        "description": "Lecture. Mesures (KPI) suivies pour un client, chacune avec tous ses relevés : nom, unité, sens favorable, façon de réunir les relevés, décimales, puis les valeurs avec la période qu'elles couvrent et leurs notes.\n\nPortée requise : `read`.",
        "tags": [
          "metrics"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "metrics": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "client_id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "unit": {
                                "type": "string"
                              },
                              "description": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "direction": {
                                "type": "string",
                                "enum": [
                                  "up",
                                  "down",
                                  "neutral"
                                ]
                              },
                              "aggregation": {
                                "type": "string",
                                "enum": [
                                  "sum",
                                  "last",
                                  "average"
                                ]
                              },
                              "decimals": {
                                "type": "number"
                              },
                              "created_at": {
                                "type": "string"
                              },
                              "readings": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string"
                                    },
                                    "metric_id": {
                                      "type": "string"
                                    },
                                    "period_start": {
                                      "type": "string"
                                    },
                                    "period_end": {
                                      "type": "string"
                                    },
                                    "grain": {
                                      "type": "string",
                                      "enum": [
                                        "custom",
                                        "day",
                                        "week",
                                        "month",
                                        "year",
                                        "quarter"
                                      ]
                                    },
                                    "value": {
                                      "type": "number"
                                    },
                                    "note": {
                                      "anyOf": [
                                        {
                                          "type": "null"
                                        },
                                        {
                                          "type": "string"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "metric_id",
                                    "period_start",
                                    "period_end",
                                    "grain",
                                    "value",
                                    "note"
                                  ]
                                }
                              }
                            },
                            "required": [
                              "id",
                              "client_id",
                              "name",
                              "unit",
                              "description",
                              "direction",
                              "aggregation",
                              "decimals",
                              "created_at",
                              "readings"
                            ]
                          }
                        }
                      },
                      "required": [
                        "metrics"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/create_client_metric": {
      "post": {
        "operationId": "create_client_metric",
        "summary": "Écriture. Crée une mesure sur la fiche d'un client. Le nom et l'unité sont obligatoires ; la mesure est visible dans l'espace du client dès sa création, même sans relevé. `aggregation` dit comment réunir plusieurs relevés quand on les regroupe (sum pour un chiffre d'affaires, average pour un taux, last pour un stock) : le défaut est la somme, et il est faux pour un taux. Un nom déjà pris sur cette fiche est refusé.",
        "description": "Écriture. Crée une mesure sur la fiche d'un client. Le nom et l'unité sont obligatoires ; la mesure est visible dans l'espace du client dès sa création, même sans relevé. `aggregation` dit comment réunir plusieurs relevés quand on les regroupe (sum pour un chiffre d'affaires, average pour un taux, last pour un stock) : le défaut est la somme, et il est faux pour un taux. Un nom déjà pris sur cette fiche est refusé.\n\nPortée requise : `write`.",
        "tags": [
          "metrics"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "unit": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 16
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 500
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "direction": {
                    "type": "string",
                    "enum": [
                      "up",
                      "down",
                      "neutral"
                    ],
                    "default": "up"
                  },
                  "aggregation": {
                    "type": "string",
                    "enum": [
                      "sum",
                      "average",
                      "last"
                    ],
                    "default": "sum"
                  },
                  "decimals": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 4,
                    "default": 0
                  }
                },
                "required": [
                  "client_id",
                  "name",
                  "unit"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "unit": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "direction": {
                          "type": "string",
                          "enum": [
                            "up",
                            "down",
                            "neutral"
                          ]
                        },
                        "aggregation": {
                          "type": "string",
                          "enum": [
                            "sum",
                            "last",
                            "average"
                          ]
                        },
                        "decimals": {
                          "type": "number"
                        },
                        "created_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "client_id",
                        "name",
                        "unit",
                        "description",
                        "direction",
                        "aggregation",
                        "decimals",
                        "created_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/update_client_metric": {
      "post": {
        "operationId": "update_client_metric",
        "summary": "Écriture. Corrige une mesure : son nom, son unité, ce qu'elle décrit, son sens favorable, sa façon de réunir les relevés et ses décimales d'affichage. Ne touche à aucun relevé, et ne change jamais la fiche à laquelle elle appartient.",
        "description": "Écriture. Corrige une mesure : son nom, son unité, ce qu'elle décrit, son sens favorable, sa façon de réunir les relevés et ses décimales d'affichage. Ne touche à aucun relevé, et ne change jamais la fiche à laquelle elle appartient.\n\nPortée requise : `write`.",
        "tags": [
          "metrics"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "unit": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 16
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 500
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "direction": {
                    "type": "string",
                    "enum": [
                      "up",
                      "down",
                      "neutral"
                    ],
                    "default": "up"
                  },
                  "aggregation": {
                    "type": "string",
                    "enum": [
                      "sum",
                      "average",
                      "last"
                    ],
                    "default": "sum"
                  },
                  "decimals": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 4,
                    "default": 0
                  }
                },
                "required": [
                  "id",
                  "name",
                  "unit"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "unit": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "direction": {
                          "type": "string",
                          "enum": [
                            "up",
                            "down",
                            "neutral"
                          ]
                        },
                        "aggregation": {
                          "type": "string",
                          "enum": [
                            "sum",
                            "last",
                            "average"
                          ]
                        },
                        "decimals": {
                          "type": "number"
                        },
                        "created_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "client_id",
                        "name",
                        "unit",
                        "description",
                        "direction",
                        "aggregation",
                        "decimals",
                        "created_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_client_metric": {
      "post": {
        "operationId": "delete_client_metric",
        "summary": "Suppression définitive, irréversible. Supprime une mesure ET TOUS SES RELEVÉS, définitivement. Rien ne les reconstitue : demander confirmation avant d'appeler.",
        "description": "Suppression définitive, irréversible. Supprime une mesure ET TOUS SES RELEVÉS, définitivement. Rien ne les reconstitue : demander confirmation avant d'appeler.\n\nPortée requise : `destructive`.",
        "tags": [
          "metrics"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/save_metric_reading": {
      "post": {
        "operationId": "save_metric_reading",
        "summary": "Écriture. Enregistre un relevé sur une mesure : une valeur, la période qu'elle décrit et une note facultative. La période est donnée par ses deux bornes incluses (`period_start`, `period_end`, jours civils, égales pour un relevé quotidien) plus `grain`, qui dit le pas choisi et décide de ce qui s'écrira sous le point (day, week, month, quarter, year, custom). Deux pièges : un relevé qui couvre EXACTEMENT la même période est remplacé, et un relevé qui en chevauche partiellement un autre est refusé.",
        "description": "Écriture. Enregistre un relevé sur une mesure : une valeur, la période qu'elle décrit et une note facultative. La période est donnée par ses deux bornes incluses (`period_start`, `period_end`, jours civils, égales pour un relevé quotidien) plus `grain`, qui dit le pas choisi et décide de ce qui s'écrira sous le point (day, week, month, quarter, year, custom). Deux pièges : un relevé qui couvre EXACTEMENT la même période est remplacé, et un relevé qui en chevauche partiellement un autre est refusé.\n\nPortée requise : `write`.",
        "tags": [
          "metrics"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "metric_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "period_start": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                  },
                  "period_end": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                  },
                  "grain": {
                    "type": "string",
                    "enum": [
                      "day",
                      "week",
                      "month",
                      "quarter",
                      "year",
                      "custom"
                    ],
                    "default": "day"
                  },
                  "value": {
                    "type": "number",
                    "exclusiveMinimum": -100000000000000,
                    "exclusiveMaximum": 100000000000000
                  },
                  "note": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 300
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "metric_id",
                  "period_start",
                  "period_end",
                  "value"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "metric_id": {
                          "type": "string"
                        },
                        "period_start": {
                          "type": "string"
                        },
                        "period_end": {
                          "type": "string"
                        },
                        "grain": {
                          "type": "string",
                          "enum": [
                            "custom",
                            "day",
                            "week",
                            "month",
                            "year",
                            "quarter"
                          ]
                        },
                        "value": {
                          "type": "number"
                        },
                        "note": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "metric_id",
                        "period_start",
                        "period_end",
                        "grain",
                        "value",
                        "note"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/save_metric_readings": {
      "post": {
        "operationId": "save_metric_readings",
        "summary": "Écriture. Enregistre PLUSIEURS relevés d'un coup sur une seule mesure : c'est ce qu'il faut appeler pour poser une série (douze mois de chiffre d'affaires, trente jours de trafic), plutôt que saveMetricReading autant de fois. Chaque relevé porte ses deux bornes incluses (`period_start`, `period_end`, jours civils, égales pour un relevé quotidien), son `grain` (day, week, month, quarter, year, custom), sa valeur et une note facultative. Tout ou rien : les chevauchements sont cherchés avant la moindre écriture, contre les relevés déjà posés ET entre les relevés de l'envoi, et un seul chevauchement fait refuser l'envoi entier en nommant la période fautive. Une période EXACTEMENT identique à un relevé existant le corrige, ce qui n'est pas un chevauchement. La réponse dit combien ont été créés et combien corrigés. Une mesure par appel : pour en remplir trois, faire trois appels.",
        "description": "Écriture. Enregistre PLUSIEURS relevés d'un coup sur une seule mesure : c'est ce qu'il faut appeler pour poser une série (douze mois de chiffre d'affaires, trente jours de trafic), plutôt que saveMetricReading autant de fois. Chaque relevé porte ses deux bornes incluses (`period_start`, `period_end`, jours civils, égales pour un relevé quotidien), son `grain` (day, week, month, quarter, year, custom), sa valeur et une note facultative. Tout ou rien : les chevauchements sont cherchés avant la moindre écriture, contre les relevés déjà posés ET entre les relevés de l'envoi, et un seul chevauchement fait refuser l'envoi entier en nommant la période fautive. Une période EXACTEMENT identique à un relevé existant le corrige, ce qui n'est pas un chevauchement. La réponse dit combien ont été créés et combien corrigés. Une mesure par appel : pour en remplir trois, faire trois appels.\n\nPortée requise : `write`.",
        "tags": [
          "metrics"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "metric_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "readings": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "period_start": {
                          "type": "string",
                          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                        },
                        "period_end": {
                          "type": "string",
                          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                        },
                        "grain": {
                          "type": "string",
                          "enum": [
                            "day",
                            "week",
                            "month",
                            "quarter",
                            "year",
                            "custom"
                          ],
                          "default": "day"
                        },
                        "value": {
                          "type": "number",
                          "exclusiveMinimum": -100000000000000,
                          "exclusiveMaximum": 100000000000000
                        },
                        "note": {
                          "anyOf": [
                            {
                              "type": "string",
                              "maxLength": 300
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "period_start",
                        "period_end",
                        "value"
                      ],
                      "additionalProperties": false
                    },
                    "minItems": 1,
                    "maxItems": 750
                  }
                },
                "required": [
                  "metric_id",
                  "readings"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "saved": {
                          "type": "number"
                        },
                        "replaced": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "saved",
                        "replaced"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_metric_reading": {
      "post": {
        "operationId": "delete_metric_reading",
        "summary": "Suppression définitive, irréversible. Retire un relevé d'une mesure. La courbe se referme sur les points voisins ; la mesure, elle, reste.",
        "description": "Suppression définitive, irréversible. Retire un relevé d'une mesure. La courbe se referme sur les points voisins ; la mesure, elle, reste.\n\nPortée requise : `destructive`.",
        "tags": [
          "metrics"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_client_file_board": {
      "get": {
        "operationId": "get_client_file_board_get",
        "summary": "Lecture. Fichiers partagés avec un client : noms, types, tailles, qui les a déposés, et la place occupée. Aucune URL n'est rendue ici : pour lire un document, prendre son identifiant et appeler get_client_file_text.",
        "description": "Lecture. Fichiers partagés avec un client : noms, types, tailles, qui les a déposés, et la place occupée. Aucune URL n'est rendue ici : pour lire un document, prendre son identifiant et appeler get_client_file_text.\n\nPortée requise : `read`.",
        "tags": [
          "files"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "client_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (500 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500,
              "description": "Combien de lignes rendre au plus (500 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "client_id": {
                          "type": "string"
                        },
                        "folders": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "parent_id": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "name": {
                                "type": "string"
                              },
                              "client_id": {
                                "type": "string"
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "parent_id",
                              "name",
                              "client_id",
                              "created_at"
                            ]
                          }
                        },
                        "files": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "client_id": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "name": {
                                "type": "string"
                              },
                              "mime_type": {
                                "type": "string"
                              },
                              "size_bytes": {
                                "type": "number"
                              },
                              "has_thumb": {
                                "type": "boolean"
                              },
                              "folder_id": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_by": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_side": {
                                "type": "string",
                                "enum": [
                                  "client",
                                  "agency"
                                ]
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "client_id",
                              "name",
                              "mime_type",
                              "size_bytes",
                              "has_thumb",
                              "folder_id",
                              "created_by",
                              "created_side",
                              "created_at"
                            ]
                          }
                        },
                        "used_bytes": {
                          "type": "number"
                        },
                        "quota_bytes": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "client_id",
                        "folders",
                        "files",
                        "used_bytes",
                        "quota_bytes"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_client_file_board",
        "summary": "Lecture. Fichiers partagés avec un client : noms, types, tailles, qui les a déposés, et la place occupée. Aucune URL n'est rendue ici : pour lire un document, prendre son identifiant et appeler get_client_file_text.",
        "description": "Lecture. Fichiers partagés avec un client : noms, types, tailles, qui les a déposés, et la place occupée. Aucune URL n'est rendue ici : pour lire un document, prendre son identifiant et appeler get_client_file_text.\n\nPortée requise : `read`.",
        "tags": [
          "files"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 500,
                    "description": "Combien de lignes rendre au plus (500 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "client_id": {
                          "type": "string"
                        },
                        "folders": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "parent_id": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "name": {
                                "type": "string"
                              },
                              "client_id": {
                                "type": "string"
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "parent_id",
                              "name",
                              "client_id",
                              "created_at"
                            ]
                          }
                        },
                        "files": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "client_id": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "name": {
                                "type": "string"
                              },
                              "mime_type": {
                                "type": "string"
                              },
                              "size_bytes": {
                                "type": "number"
                              },
                              "has_thumb": {
                                "type": "boolean"
                              },
                              "folder_id": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_by": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_side": {
                                "type": "string",
                                "enum": [
                                  "client",
                                  "agency"
                                ]
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "client_id",
                              "name",
                              "mime_type",
                              "size_bytes",
                              "has_thumb",
                              "folder_id",
                              "created_by",
                              "created_side",
                              "created_at"
                            ]
                          }
                        },
                        "used_bytes": {
                          "type": "number"
                        },
                        "quota_bytes": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "client_id",
                        "folders",
                        "files",
                        "used_bytes",
                        "quota_bytes"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_client_file_text": {
      "get": {
        "operationId": "get_client_file_text_get",
        "summary": "Lecture. Le TEXTE d'un fichier partagé, par son identifiant (celui que rend get_client_file_board) : un PDF qui porte une couche de texte (certificat d'analyse, facture, contrat, rapport de laboratoire) ou un fichier textuel (txt, csv, md, json, xml, yaml). Rend une tranche de 12 000 caractères au plus, avec le nombre de pages du document et jusqu'où la lecture est allée ; quand `next_offset` n'est pas nul, rappeler le même outil avec cette valeur pour la suite. Ne rend jamais le fichier lui-même ni d'URL. Un PDF scanné (des pages qui sont des images) ne porte aucun texte : la réponse le dit alors dans `note` plutôt que de rendre un vide qu'on lirait comme un document vide. Une image, une vidéo, une archive, un .docx et un tableur sont refusés en le disant.",
        "description": "Lecture. Le TEXTE d'un fichier partagé, par son identifiant (celui que rend get_client_file_board) : un PDF qui porte une couche de texte (certificat d'analyse, facture, contrat, rapport de laboratoire) ou un fichier textuel (txt, csv, md, json, xml, yaml). Rend une tranche de 12 000 caractères au plus, avec le nombre de pages du document et jusqu'où la lecture est allée ; quand `next_offset` n'est pas nul, rappeler le même outil avec cette valeur pour la suite. Ne rend jamais le fichier lui-même ni d'URL. Un PDF scanné (des pages qui sont des images) ne porte aucun texte : la réponse le dit alors dans `note` plutôt que de rendre un vide qu'on lirait comme un document vide. Une image, une vidéo, une archive, un .docx et un tableur sont refusés en le disant.\n\nPortée requise : `read`.",
        "tags": [
          "files"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "mime_type": {
                          "type": "string"
                        },
                        "size_bytes": {
                          "type": "number"
                        },
                        "pages": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "pages_read": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "offset": {
                          "type": "number"
                        },
                        "text": {
                          "type": "string"
                        },
                        "next_offset": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "note": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "name",
                        "mime_type",
                        "size_bytes",
                        "pages",
                        "pages_read",
                        "offset",
                        "text",
                        "next_offset",
                        "note"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_client_file_text",
        "summary": "Lecture. Le TEXTE d'un fichier partagé, par son identifiant (celui que rend get_client_file_board) : un PDF qui porte une couche de texte (certificat d'analyse, facture, contrat, rapport de laboratoire) ou un fichier textuel (txt, csv, md, json, xml, yaml). Rend une tranche de 12 000 caractères au plus, avec le nombre de pages du document et jusqu'où la lecture est allée ; quand `next_offset` n'est pas nul, rappeler le même outil avec cette valeur pour la suite. Ne rend jamais le fichier lui-même ni d'URL. Un PDF scanné (des pages qui sont des images) ne porte aucun texte : la réponse le dit alors dans `note` plutôt que de rendre un vide qu'on lirait comme un document vide. Une image, une vidéo, une archive, un .docx et un tableur sont refusés en le disant.",
        "description": "Lecture. Le TEXTE d'un fichier partagé, par son identifiant (celui que rend get_client_file_board) : un PDF qui porte une couche de texte (certificat d'analyse, facture, contrat, rapport de laboratoire) ou un fichier textuel (txt, csv, md, json, xml, yaml). Rend une tranche de 12 000 caractères au plus, avec le nombre de pages du document et jusqu'où la lecture est allée ; quand `next_offset` n'est pas nul, rappeler le même outil avec cette valeur pour la suite. Ne rend jamais le fichier lui-même ni d'URL. Un PDF scanné (des pages qui sont des images) ne porte aucun texte : la réponse le dit alors dans `note` plutôt que de rendre un vide qu'on lirait comme un document vide. Une image, une vidéo, une archive, un .docx et un tableur sont refusés en le disant.\n\nPortée requise : `read`.",
        "tags": [
          "files"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "default": 0
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "mime_type": {
                          "type": "string"
                        },
                        "size_bytes": {
                          "type": "number"
                        },
                        "pages": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "pages_read": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "offset": {
                          "type": "number"
                        },
                        "text": {
                          "type": "string"
                        },
                        "next_offset": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "note": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "name",
                        "mime_type",
                        "size_bytes",
                        "pages",
                        "pages_read",
                        "offset",
                        "text",
                        "next_offset",
                        "note"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/create_client_file_links": {
      "post": {
        "operationId": "create_client_file_links",
        "summary": "Écriture. Fabrique des liens de téléchargement temporaires vers des fichiers partagés, à REMETTRE À UN SERVICE TIERS qui doit aller les chercher lui-même (envoyer des visuels sur une boutique, un outil de publication, un CMS). Rend une URL absolue par fichier, valable trente minutes et dix téléchargements, suivie sans compte : c'est ce qu'attend un service qui télécharge une image par son adresse. À n'employer que pour cela, et jamais pour montrer un fichier à quelqu'un, qui le voit déjà dans son espace : ce qui détient l'URL ouvre le fichier. Chaque téléchargement revérifie que celui qui a demandé le lien y a toujours droit, et laisse une trace.",
        "description": "Écriture. Fabrique des liens de téléchargement temporaires vers des fichiers partagés, à REMETTRE À UN SERVICE TIERS qui doit aller les chercher lui-même (envoyer des visuels sur une boutique, un outil de publication, un CMS). Rend une URL absolue par fichier, valable trente minutes et dix téléchargements, suivie sans compte : c'est ce qu'attend un service qui télécharge une image par son adresse. À n'employer que pour cela, et jamais pour montrer un fichier à quelqu'un, qui le voit déjà dans son espace : ce qui détient l'URL ouvre le fichier. Chaque téléchargement revérifie que celui qui a demandé le lien y a toujours droit, et laisse une trace.\n\nPortée requise : `write`.",
        "tags": [
          "files"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "minItems": 1,
                    "maxItems": 20
                  }
                },
                "required": [
                  "ids"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "mime_type": {
                            "type": "string"
                          },
                          "size_bytes": {
                            "type": "number"
                          },
                          "url": {
                            "type": "string"
                          },
                          "expires_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "name",
                          "mime_type",
                          "size_bytes",
                          "url",
                          "expires_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/confirm_client_file_upload": {
      "post": {
        "operationId": "confirm_client_file_upload",
        "summary": "Écriture. Termine un envoi commencé ailleurs : relit la taille et le type dans le stockage, puis publie le fichier dans le dossier partagé.",
        "description": "Écriture. Termine un envoi commencé ailleurs : relit la taille et le type dans le stockage, puis publie le fichier dans le dossier partagé.\n\nPortée requise : `write`.",
        "tags": [
          "files"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "thumb_uploaded": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "name": {
                          "type": "string"
                        },
                        "mime_type": {
                          "type": "string"
                        },
                        "size_bytes": {
                          "type": "number"
                        },
                        "has_thumb": {
                          "type": "boolean"
                        },
                        "folder_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_side": {
                          "type": "string",
                          "enum": [
                            "client",
                            "agency"
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "client_id",
                        "name",
                        "mime_type",
                        "size_bytes",
                        "has_thumb",
                        "folder_id",
                        "created_by",
                        "created_side",
                        "created_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_client_file": {
      "post": {
        "operationId": "delete_client_file",
        "summary": "Suppression définitive, irréversible. Supprime définitivement un fichier partagé, et l'octet avec.",
        "description": "Suppression définitive, irréversible. Supprime définitivement un fichier partagé, et l'octet avec.\n\nPortée requise : `destructive`.",
        "tags": [
          "files"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_client_files": {
      "post": {
        "operationId": "delete_client_files",
        "summary": "Suppression définitive, irréversible. Supprime définitivement plusieurs fichiers partagés d'un coup, et les octets avec. Rien n'est effacé si l'un d'eux ne peut pas l'être.",
        "description": "Suppression définitive, irréversible. Supprime définitivement plusieurs fichiers partagés d'un coup, et les octets avec. Rien n'est effacé si l'un d'eux ne peut pas l'être.\n\nPortée requise : `destructive`.",
        "tags": [
          "files"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "minItems": 1,
                    "maxItems": 100
                  }
                },
                "required": [
                  "ids"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "ids": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      },
                      "required": [
                        "ids"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/create_client_file_folder": {
      "post": {
        "operationId": "create_client_file_folder",
        "summary": "Écriture. Crée un dossier dans le dossier partagé d'un client, à la racine ou dans un autre dossier. Deux dossiers de même nom ne cohabitent pas au même endroit.",
        "description": "Écriture. Crée un dossier dans le dossier partagé d'un client, à la racine ou dans un autre dossier. Deux dossiers de même nom ne cohabitent pas au même endroit.\n\nPortée requise : `write`.",
        "tags": [
          "file-folders"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "parent_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  }
                },
                "required": [
                  "name"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "parent_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "name": {
                          "type": "string"
                        },
                        "client_id": {
                          "type": "string"
                        },
                        "created_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "parent_id",
                        "name",
                        "client_id",
                        "created_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/rename_client_file_folder": {
      "post": {
        "operationId": "rename_client_file_folder",
        "summary": "Écriture. Renomme un dossier du dossier partagé. Ce qu'il contient n'est pas touché et ne change pas de place.",
        "description": "Écriture. Renomme un dossier du dossier partagé. Ce qu'il contient n'est pas touché et ne change pas de place.\n\nPortée requise : `write`.",
        "tags": [
          "file-folders"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "parent_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "name": {
                          "type": "string"
                        },
                        "client_id": {
                          "type": "string"
                        },
                        "created_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "parent_id",
                        "name",
                        "client_id",
                        "created_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_client_file_folder": {
      "post": {
        "operationId": "delete_client_file_folder",
        "summary": "Écriture. Supprime un dossier du dossier partagé. Aucun fichier n'est supprimé : son contenu, sous-dossiers compris, remonte dans le dossier qui le contenait.",
        "description": "Écriture. Supprime un dossier du dossier partagé. Aucun fichier n'est supprimé : son contenu, sous-dossiers compris, remonte dans le dossier qui le contenait.\n\nPortée requise : `write`.",
        "tags": [
          "file-folders"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/move_client_file_items": {
      "post": {
        "operationId": "move_client_file_items",
        "summary": "Écriture. Range des fichiers et des dossiers dans un autre dossier, ou les remet à la racine. Aucun octet ne bouge, et un dossier ne peut pas être rangé dans l'un de ses sous-dossiers.",
        "description": "Écriture. Range des fichiers et des dossiers dans un autre dossier, ou les remet à la racine. Aucun octet ne bouge, et un dossier ne peut pas être rangé dans l'un de ses sous-dossiers.\n\nPortée requise : `write`.",
        "tags": [
          "file-folders"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "file_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "maxItems": 100,
                    "default": []
                  },
                  "folder_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "maxItems": 50,
                    "default": []
                  },
                  "to_folder_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "file_ids": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "folder_ids": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "to_folder_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "file_ids",
                        "folder_ids",
                        "to_folder_id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_decisions": {
      "get": {
        "operationId": "list_decisions_get",
        "summary": "Lecture. Décisions de l'agence : ce qui a été tranché, le motif, l'option écartée, le jour et avec qui. Sans status, seules les décisions qui valent encore ; avec « all », l'histoire complète, remplacées et abandonnées comprises. Sans client_id, toutes ; avec null, celles qui ne concernent aucune fiche.",
        "description": "Lecture. Décisions de l'agence : ce qui a été tranché, le motif, l'option écartée, le jour et avec qui. Sans status, seules les décisions qui valent encore ; avec « all », l'histoire complète, remplacées et abandonnées comprises. Sans client_id, toutes ; avec null, celles qui ne concernent aucune fiche.\n\nPortée requise : `read`.",
        "tags": [
          "decisions"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "client_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "active",
                "superseded",
                "abandoned",
                "all"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (300 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 300,
              "description": "Combien de lignes rendre au plus (300 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "client_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "title": {
                            "type": "string"
                          },
                          "rationale": {
                            "type": "string"
                          },
                          "rejected": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "decided_on": {
                            "type": "string"
                          },
                          "decided_with": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "active",
                              "superseded",
                              "abandoned"
                            ]
                          },
                          "superseded_by": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "meeting_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "note_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "evidence": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_by": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "updated_at": {
                            "type": "string"
                          },
                          "client_name": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_by_name": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "client_id",
                          "title",
                          "rationale",
                          "rejected",
                          "decided_on",
                          "decided_with",
                          "status",
                          "superseded_by",
                          "meeting_id",
                          "note_id",
                          "evidence",
                          "created_by",
                          "created_at",
                          "updated_at",
                          "client_name",
                          "created_by_name"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_decisions",
        "summary": "Lecture. Décisions de l'agence : ce qui a été tranché, le motif, l'option écartée, le jour et avec qui. Sans status, seules les décisions qui valent encore ; avec « all », l'histoire complète, remplacées et abandonnées comprises. Sans client_id, toutes ; avec null, celles qui ne concernent aucune fiche.",
        "description": "Lecture. Décisions de l'agence : ce qui a été tranché, le motif, l'option écartée, le jour et avec qui. Sans status, seules les décisions qui valent encore ; avec « all », l'histoire complète, remplacées et abandonnées comprises. Sans client_id, toutes ; avec null, celles qui ne concernent aucune fiche.\n\nPortée requise : `read`.",
        "tags": [
          "decisions"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "active",
                      "superseded",
                      "abandoned",
                      "all"
                    ]
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 300,
                    "description": "Combien de lignes rendre au plus (300 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "client_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "title": {
                            "type": "string"
                          },
                          "rationale": {
                            "type": "string"
                          },
                          "rejected": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "decided_on": {
                            "type": "string"
                          },
                          "decided_with": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "active",
                              "superseded",
                              "abandoned"
                            ]
                          },
                          "superseded_by": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "meeting_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "note_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "evidence": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_by": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "updated_at": {
                            "type": "string"
                          },
                          "client_name": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_by_name": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "client_id",
                          "title",
                          "rationale",
                          "rejected",
                          "decided_on",
                          "decided_with",
                          "status",
                          "superseded_by",
                          "meeting_id",
                          "note_id",
                          "evidence",
                          "created_by",
                          "created_at",
                          "updated_at",
                          "client_name",
                          "created_by_name"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_decision": {
      "get": {
        "operationId": "get_decision_get",
        "summary": "Lecture. Une décision et sa chaîne : ce qu'elle a remplacé, ce qui l'a remplacée, la réunion d'où elle vient et la note qui la développe. Lue de haut en bas, la chaîne dit pourquoi on en est là.",
        "description": "Lecture. Une décision et sa chaîne : ce qu'elle a remplacé, ce qui l'a remplacée, la réunion d'où elle vient et la note qui la développe. Lue de haut en bas, la chaîne dit pourquoi on en est là.\n\nPortée requise : `read`.",
        "tags": [
          "decisions"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "decision": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "client_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "title": {
                              "type": "string"
                            },
                            "rationale": {
                              "type": "string"
                            },
                            "rejected": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "decided_on": {
                              "type": "string"
                            },
                            "decided_with": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "active",
                                "superseded",
                                "abandoned"
                              ]
                            },
                            "superseded_by": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "meeting_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "note_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "evidence": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "created_by": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "created_at": {
                              "type": "string"
                            },
                            "updated_at": {
                              "type": "string"
                            },
                            "client_name": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "created_by_name": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "client_id",
                            "title",
                            "rationale",
                            "rejected",
                            "decided_on",
                            "decided_with",
                            "status",
                            "superseded_by",
                            "meeting_id",
                            "note_id",
                            "evidence",
                            "created_by",
                            "created_at",
                            "updated_at",
                            "client_name",
                            "created_by_name"
                          ]
                        },
                        "supersedes": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "title": {
                                  "type": "string"
                                },
                                "decided_on": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "id",
                                "title",
                                "decided_on"
                              ]
                            }
                          ]
                        },
                        "supersededBy": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "title": {
                                  "type": "string"
                                },
                                "decided_on": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "id",
                                "title",
                                "decided_on"
                              ]
                            }
                          ]
                        },
                        "meeting_title": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "note_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "decision",
                        "supersedes",
                        "supersededBy",
                        "meeting_title",
                        "note_name"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_decision",
        "summary": "Lecture. Une décision et sa chaîne : ce qu'elle a remplacé, ce qui l'a remplacée, la réunion d'où elle vient et la note qui la développe. Lue de haut en bas, la chaîne dit pourquoi on en est là.",
        "description": "Lecture. Une décision et sa chaîne : ce qu'elle a remplacé, ce qui l'a remplacée, la réunion d'où elle vient et la note qui la développe. Lue de haut en bas, la chaîne dit pourquoi on en est là.\n\nPortée requise : `read`.",
        "tags": [
          "decisions"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "decision": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "client_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "title": {
                              "type": "string"
                            },
                            "rationale": {
                              "type": "string"
                            },
                            "rejected": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "decided_on": {
                              "type": "string"
                            },
                            "decided_with": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "active",
                                "superseded",
                                "abandoned"
                              ]
                            },
                            "superseded_by": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "meeting_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "note_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "evidence": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "created_by": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "created_at": {
                              "type": "string"
                            },
                            "updated_at": {
                              "type": "string"
                            },
                            "client_name": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "created_by_name": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "client_id",
                            "title",
                            "rationale",
                            "rejected",
                            "decided_on",
                            "decided_with",
                            "status",
                            "superseded_by",
                            "meeting_id",
                            "note_id",
                            "evidence",
                            "created_by",
                            "created_at",
                            "updated_at",
                            "client_name",
                            "created_by_name"
                          ]
                        },
                        "supersedes": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "title": {
                                  "type": "string"
                                },
                                "decided_on": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "id",
                                "title",
                                "decided_on"
                              ]
                            }
                          ]
                        },
                        "supersededBy": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "title": {
                                  "type": "string"
                                },
                                "decided_on": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "id",
                                "title",
                                "decided_on"
                              ]
                            }
                          ]
                        },
                        "meeting_title": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "note_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "decision",
                        "supersedes",
                        "supersededBy",
                        "meeting_title",
                        "note_name"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/create_decision": {
      "post": {
        "operationId": "create_decision",
        "summary": "Écriture. Note une décision : ce qui est tranché (au présent, comme un fait), pourquoi, et ce qui a été écarté. N'écrase rien. À n'employer que pour ce que quelqu'un pourrait contredire demain, jamais pour un fait qui a déjà son champ. Si elle contredit une décision qui vaut encore, c'est supersedeDecision qu'il faut.",
        "description": "Écriture. Note une décision : ce qui est tranché (au présent, comme un fait), pourquoi, et ce qui a été écarté. N'écrase rien. À n'employer que pour ce que quelqu'un pourrait contredire demain, jamais pour un fait qui a déjà son champ. Si elle contredit une décision qui vaut encore, c'est supersedeDecision qu'il faut.\n\nPortée requise : `write`.",
        "tags": [
          "decisions"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 300
                  },
                  "rationale": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 2000
                  },
                  "rejected": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 1000
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "client_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "decided_on": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                  },
                  "decided_with": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 200
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "meeting_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "note_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 2000
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "title",
                  "rationale"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "title": {
                          "type": "string"
                        },
                        "rationale": {
                          "type": "string"
                        },
                        "rejected": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "decided_on": {
                          "type": "string"
                        },
                        "decided_with": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "active",
                            "superseded",
                            "abandoned"
                          ]
                        },
                        "superseded_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "meeting_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "note_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "evidence": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "client_id",
                        "title",
                        "rationale",
                        "rejected",
                        "decided_on",
                        "decided_with",
                        "status",
                        "superseded_by",
                        "meeting_id",
                        "note_id",
                        "evidence",
                        "created_by",
                        "created_at",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/supersede_decision": {
      "post": {
        "operationId": "supersede_decision",
        "summary": "Écriture. Remplace une décision par une nouvelle : celle d'avant cesse de valoir et pointe vers celle-ci, sans rien perdre de son motif. C'est le geste du revirement (« finalement on ne fait plus ça, on fait ça »). Refusé sur une décision déjà remplacée ou abandonnée.",
        "description": "Écriture. Remplace une décision par une nouvelle : celle d'avant cesse de valoir et pointe vers celle-ci, sans rien perdre de son motif. C'est le geste du revirement (« finalement on ne fait plus ça, on fait ça »). Refusé sur une décision déjà remplacée ou abandonnée.\n\nPortée requise : `write`.",
        "tags": [
          "decisions"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 300
                  },
                  "rationale": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 2000
                  },
                  "rejected": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 1000
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "client_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "decided_on": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                  },
                  "decided_with": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 200
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "meeting_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "note_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 2000
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "title",
                  "rationale"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "title": {
                          "type": "string"
                        },
                        "rationale": {
                          "type": "string"
                        },
                        "rejected": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "decided_on": {
                          "type": "string"
                        },
                        "decided_with": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "active",
                            "superseded",
                            "abandoned"
                          ]
                        },
                        "superseded_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "meeting_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "note_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "evidence": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "client_id",
                        "title",
                        "rationale",
                        "rejected",
                        "decided_on",
                        "decided_with",
                        "status",
                        "superseded_by",
                        "meeting_id",
                        "note_id",
                        "evidence",
                        "created_by",
                        "created_at",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/update_decision": {
      "post": {
        "operationId": "update_decision",
        "summary": "Écriture. Corrige une décision : sa formulation, son motif, sa date, la fiche ou la source qu'elle cite, ou son statut (abandoned quand on ne fait plus ça sans que rien ne prenne la place, active pour revenir dessus). Mise à jour partielle. Ce n'est PAS le geste du revirement, qui est supersedeDecision : réécrire un motif efface le pourquoi d'avant.",
        "description": "Écriture. Corrige une décision : sa formulation, son motif, sa date, la fiche ou la source qu'elle cite, ou son statut (abandoned quand on ne fait plus ça sans que rien ne prenne la place, active pour revenir dessus). Mise à jour partielle. Ce n'est PAS le geste du revirement, qui est supersedeDecision : réécrire un motif efface le pourquoi d'avant.\n\nPortée requise : `write`.",
        "tags": [
          "decisions"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 300
                  },
                  "rationale": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 2000
                  },
                  "rejected": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 1000
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "client_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "decided_on": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                  },
                  "decided_with": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 200
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "meeting_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "note_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 2000
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "active",
                      "abandoned"
                    ]
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "title": {
                          "type": "string"
                        },
                        "rationale": {
                          "type": "string"
                        },
                        "rejected": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "decided_on": {
                          "type": "string"
                        },
                        "decided_with": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "active",
                            "superseded",
                            "abandoned"
                          ]
                        },
                        "superseded_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "meeting_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "note_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "evidence": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "client_id",
                        "title",
                        "rationale",
                        "rejected",
                        "decided_on",
                        "decided_with",
                        "status",
                        "superseded_by",
                        "meeting_id",
                        "note_id",
                        "evidence",
                        "created_by",
                        "created_at",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_decision": {
      "post": {
        "operationId": "delete_decision",
        "summary": "Suppression définitive, irréversible. Supprime définitivement une décision, son motif et sa place dans la chaîne. Réservé à ce qui n'aurait jamais dû être noté (un doublon, un contresens) : une décision réellement prise se remplace ou s'abandonne, elle ne s'efface pas.",
        "description": "Suppression définitive, irréversible. Supprime définitivement une décision, son motif et sa place dans la chaîne. Réservé à ce qui n'aurait jamais dû être noté (un doublon, un contresens) : une décision réellement prise se remplace ou s'abandonne, elle ne s'efface pas.\n\nPortée requise : `destructive`.",
        "tags": [
          "decisions"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_assistant_conversations": {
      "get": {
        "operationId": "list_assistant_conversations_get",
        "summary": "Lecture. Vos conversations avec l'assistant de l'espace admin, de la plus récente à la plus ancienne : leur titre et leur dernière activité. « search » ne filtre que sur le titre. Celles des autres membres de l'agence ne sont jamais rendues.",
        "description": "Lecture. Vos conversations avec l'assistant de l'espace admin, de la plus récente à la plus ancienne : leur titre et leur dernière activité. « search » ne filtre que sur le titre. Celles des autres membres de l'agence ne sont jamais rendues.\n\nPortée requise : `read`.",
        "tags": [
          "assistant-conversations"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "required": false,
            "description": "Ne garde que les conversations dont le TITRE contient ces mots. Le contenu des messages n'est pas fouillé, et un fil jamais nommé ne ressort donc d'aucune recherche.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120,
              "description": "Ne garde que les conversations dont le TITRE contient ces mots. Le contenu des messages n'est pas fouillé, et un fil jamais nommé ne ressort donc d'aucune recherche."
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (100 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "description": "Combien de lignes rendre au plus (100 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "title": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "updated_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "title",
                          "created_at",
                          "updated_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_assistant_conversations",
        "summary": "Lecture. Vos conversations avec l'assistant de l'espace admin, de la plus récente à la plus ancienne : leur titre et leur dernière activité. « search » ne filtre que sur le titre. Celles des autres membres de l'agence ne sont jamais rendues.",
        "description": "Lecture. Vos conversations avec l'assistant de l'espace admin, de la plus récente à la plus ancienne : leur titre et leur dernière activité. « search » ne filtre que sur le titre. Celles des autres membres de l'agence ne sont jamais rendues.\n\nPortée requise : `read`.",
        "tags": [
          "assistant-conversations"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "search": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 120,
                    "description": "Ne garde que les conversations dont le TITRE contient ces mots. Le contenu des messages n'est pas fouillé, et un fil jamais nommé ne ressort donc d'aucune recherche."
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100,
                    "description": "Combien de lignes rendre au plus (100 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "title": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "updated_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "title",
                          "created_at",
                          "updated_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_assistant_conversation": {
      "get": {
        "operationId": "get_assistant_conversation_get",
        "summary": "Lecture. Une de vos conversations avec l'assistant, avec tout ce qui s'y est dit : les messages, les outils appelés et ce qu'ils ont rendu. À demander pour reprendre le fil d'un échange passé.",
        "description": "Lecture. Une de vos conversations avec l'assistant, avec tout ce qui s'y est dit : les messages, les outils appelés et ce qu'ils ont rendu. À demander pour reprendre le fil d'un échange passé.\n\nPortée requise : `read`.",
        "tags": [
          "assistant-conversations"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "description": "Identifiant de la conversation.",
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Identifiant de la conversation."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "title": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        },
                        "turns": {
                          "type": "array",
                          "items": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "content": {
                                    "type": "string"
                                  },
                                  "role": {
                                    "const": "user"
                                  }
                                },
                                "required": [
                                  "content",
                                  "role"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "content": {
                                    "type": "string"
                                  },
                                  "role": {
                                    "const": "assistant"
                                  },
                                  "calls": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "type": "string"
                                        },
                                        "name": {
                                          "type": "string"
                                        },
                                        "arguments": {
                                          "type": "string"
                                        },
                                        "target": {
                                          "type": "object",
                                          "properties": {
                                            "tool": {
                                              "type": "string"
                                            },
                                            "level": {
                                              "type": "string",
                                              "enum": [
                                                "read",
                                                "write",
                                                "destructive"
                                              ]
                                            }
                                          },
                                          "required": [
                                            "tool",
                                            "level"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "id",
                                        "name",
                                        "arguments"
                                      ]
                                    }
                                  }
                                },
                                "required": [
                                  "content",
                                  "role",
                                  "calls"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "content": {
                                    "type": "string"
                                  },
                                  "role": {
                                    "const": "tool"
                                  },
                                  "ok": {
                                    "type": "boolean"
                                  },
                                  "callId": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "content",
                                  "role",
                                  "ok",
                                  "callId"
                                ]
                              }
                            ]
                          }
                        }
                      },
                      "required": [
                        "id",
                        "title",
                        "created_at",
                        "updated_at",
                        "turns"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_assistant_conversation",
        "summary": "Lecture. Une de vos conversations avec l'assistant, avec tout ce qui s'y est dit : les messages, les outils appelés et ce qu'ils ont rendu. À demander pour reprendre le fil d'un échange passé.",
        "description": "Lecture. Une de vos conversations avec l'assistant, avec tout ce qui s'y est dit : les messages, les outils appelés et ce qu'ils ont rendu. À demander pour reprendre le fil d'un échange passé.\n\nPortée requise : `read`.",
        "tags": [
          "assistant-conversations"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Identifiant de la conversation."
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "title": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        },
                        "turns": {
                          "type": "array",
                          "items": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "content": {
                                    "type": "string"
                                  },
                                  "role": {
                                    "const": "user"
                                  }
                                },
                                "required": [
                                  "content",
                                  "role"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "content": {
                                    "type": "string"
                                  },
                                  "role": {
                                    "const": "assistant"
                                  },
                                  "calls": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "type": "string"
                                        },
                                        "name": {
                                          "type": "string"
                                        },
                                        "arguments": {
                                          "type": "string"
                                        },
                                        "target": {
                                          "type": "object",
                                          "properties": {
                                            "tool": {
                                              "type": "string"
                                            },
                                            "level": {
                                              "type": "string",
                                              "enum": [
                                                "read",
                                                "write",
                                                "destructive"
                                              ]
                                            }
                                          },
                                          "required": [
                                            "tool",
                                            "level"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "id",
                                        "name",
                                        "arguments"
                                      ]
                                    }
                                  }
                                },
                                "required": [
                                  "content",
                                  "role",
                                  "calls"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "content": {
                                    "type": "string"
                                  },
                                  "role": {
                                    "const": "tool"
                                  },
                                  "ok": {
                                    "type": "boolean"
                                  },
                                  "callId": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "content",
                                  "role",
                                  "ok",
                                  "callId"
                                ]
                              }
                            ]
                          }
                        }
                      },
                      "required": [
                        "id",
                        "title",
                        "created_at",
                        "updated_at",
                        "turns"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/rename_assistant_conversation": {
      "post": {
        "operationId": "rename_assistant_conversation",
        "summary": "Écriture. Corrige le titre d'une de vos conversations. Ce qu'elle contient ne bouge pas : c'est le nom qu'on lit dans la liste, rien d'autre.",
        "description": "Écriture. Corrige le titre d'une de vos conversations. Ce qu'elle contient ne bouge pas : c'est le nom qu'on lit dans la liste, rien d'autre.\n\nPortée requise : `write`.",
        "tags": [
          "assistant-conversations"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Identifiant de la conversation."
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 120,
                    "description": "Titre de la conversation, tel qu'il se lit dans la liste."
                  }
                },
                "required": [
                  "id",
                  "title"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "title": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "title",
                        "created_at",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_assistant_conversation": {
      "post": {
        "operationId": "delete_assistant_conversation",
        "summary": "Suppression définitive, irréversible. Supprime définitivement une de vos conversations avec l'assistant, et tout ce qui s'y est dit. Rien ne se récupère ensuite.",
        "description": "Suppression définitive, irréversible. Supprime définitivement une de vos conversations avec l'assistant, et tout ce qui s'y est dit. Rien ne se récupère ensuite.\n\nPortée requise : `destructive`.",
        "tags": [
          "assistant-conversations"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Identifiant de la conversation."
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_media_conversations": {
      "get": {
        "operationId": "list_media_conversations_get",
        "summary": "Lecture. Les fils du Studio, du plus récemment nourri au plus ancien : leur titre, leur rangement et leur dernière activité. Sans filtre, seuls les fils en cours ; « archived » rend ceux qui sont rangés, « all » les deux.",
        "description": "Lecture. Les fils du Studio, du plus récemment nourri au plus ancien : leur titre, leur rangement et leur dernière activité. Sans filtre, seuls les fils en cours ; « archived » rend ceux qui sont rangés, « all » les deux.\n\nPortée requise : `read`.",
        "tags": [
          "media"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "archived",
            "in": "query",
            "required": false,
            "description": "« active » (défaut) pour les conversations en cours, « archived » pour celles qui sont rangées, « all » pour les deux.",
            "schema": {
              "type": "string",
              "enum": [
                "active",
                "archived",
                "all"
              ],
              "description": "« active » (défaut) pour les conversations en cours, « archived » pour celles qui sont rangées, « all » pour les deux."
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (100 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "description": "Combien de lignes rendre au plus (100 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "title": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "archived_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "updated_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "title",
                          "archived_at",
                          "created_at",
                          "updated_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_media_conversations",
        "summary": "Lecture. Les fils du Studio, du plus récemment nourri au plus ancien : leur titre, leur rangement et leur dernière activité. Sans filtre, seuls les fils en cours ; « archived » rend ceux qui sont rangés, « all » les deux.",
        "description": "Lecture. Les fils du Studio, du plus récemment nourri au plus ancien : leur titre, leur rangement et leur dernière activité. Sans filtre, seuls les fils en cours ; « archived » rend ceux qui sont rangés, « all » les deux.\n\nPortée requise : `read`.",
        "tags": [
          "media"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "archived": {
                    "type": "string",
                    "enum": [
                      "active",
                      "archived",
                      "all"
                    ],
                    "description": "« active » (défaut) pour les conversations en cours, « archived » pour celles qui sont rangées, « all » pour les deux."
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100,
                    "description": "Combien de lignes rendre au plus (100 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "title": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "archived_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "updated_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "title",
                          "archived_at",
                          "created_at",
                          "updated_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_media_conversation": {
      "get": {
        "operationId": "get_media_conversation_get",
        "summary": "Lecture. Un fil du Studio : son titre, s'il est rangé, et quand il a servi pour la dernière fois. Ce qu'il contient se lit par listMediaGenerations, avec son identifiant.",
        "description": "Lecture. Un fil du Studio : son titre, s'il est rangé, et quand il a servi pour la dernière fois. Ce qu'il contient se lit par listMediaGenerations, avec son identifiant.\n\nPortée requise : `read`.",
        "tags": [
          "media"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "description": "Identifiant de la conversation.",
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Identifiant de la conversation."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "title": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "archived_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "title",
                        "archived_at",
                        "created_at",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_media_conversation",
        "summary": "Lecture. Un fil du Studio : son titre, s'il est rangé, et quand il a servi pour la dernière fois. Ce qu'il contient se lit par listMediaGenerations, avec son identifiant.",
        "description": "Lecture. Un fil du Studio : son titre, s'il est rangé, et quand il a servi pour la dernière fois. Ce qu'il contient se lit par listMediaGenerations, avec son identifiant.\n\nPortée requise : `read`.",
        "tags": [
          "media"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Identifiant de la conversation."
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "title": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "archived_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "title",
                        "archived_at",
                        "created_at",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/create_media_conversation": {
      "post": {
        "operationId": "create_media_conversation",
        "summary": "Écriture. Ouvre un fil dans le Studio. N'écrase rien. Le titre est facultatif : sans lui, la première consigne écrite dans le fil le nomme toute seule.",
        "description": "Écriture. Ouvre un fil dans le Studio. N'écrase rien. Le titre est facultatif : sans lui, la première consigne écrite dans le fil le nomme toute seule.\n\nPortée requise : `write`.",
        "tags": [
          "media"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 120,
                    "description": "Titre du fil, tel qu'il se lit dans la liste."
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "title": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "archived_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "title",
                        "archived_at",
                        "created_at",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/rename_media_conversation": {
      "post": {
        "operationId": "rename_media_conversation",
        "summary": "Écriture. Corrige le titre d'un fil. Ce qu'il contient ne bouge pas : c'est le nom qu'on lit dans la liste, rien d'autre.",
        "description": "Écriture. Corrige le titre d'un fil. Ce qu'il contient ne bouge pas : c'est le nom qu'on lit dans la liste, rien d'autre.\n\nPortée requise : `write`.",
        "tags": [
          "media"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Identifiant de la conversation."
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 120,
                    "description": "Titre du fil, tel qu'il se lit dans la liste."
                  }
                },
                "required": [
                  "id",
                  "title"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "title": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "archived_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "title",
                        "archived_at",
                        "created_at",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/set_media_conversation_archived": {
      "post": {
        "operationId": "set_media_conversation_archived",
        "summary": "Écriture. Range un fil (archived: true) ou le reprend (false). Rien ne se perd dans un sens ni dans l'autre : un fil rangé sort de la liste courante et se rouvre quand on en a de nouveau besoin. Tant qu'il est rangé, aucune demande ne peut y être ajoutée.",
        "description": "Écriture. Range un fil (archived: true) ou le reprend (false). Rien ne se perd dans un sens ni dans l'autre : un fil rangé sort de la liste courante et se rouvre quand on en a de nouveau besoin. Tant qu'il est rangé, aucune demande ne peut y être ajoutée.\n\nPortée requise : `write`.",
        "tags": [
          "media"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Identifiant de la conversation."
                  },
                  "archived": {
                    "type": "boolean",
                    "description": "true range la conversation, false la reprend. Rien ne se perd dans un sens ni dans l'autre."
                  }
                },
                "required": [
                  "id",
                  "archived"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "title": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "archived_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "title",
                        "archived_at",
                        "created_at",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_media_generations": {
      "get": {
        "operationId": "list_media_generations_get",
        "summary": "Lecture. Les demandes d'un fil, de la plus récente à la plus ancienne : ce qui a été demandé, dans quel format et quel cadrage, où en est chaque demande, et ce que le rendu a coûté. Sans conversation_id, toutes les demandes de l'agence. Le rendu lui-même se regarde dans l'espace d'administration.",
        "description": "Lecture. Les demandes d'un fil, de la plus récente à la plus ancienne : ce qui a été demandé, dans quel format et quel cadrage, où en est chaque demande, et ce que le rendu a coûté. Sans conversation_id, toutes les demandes de l'agence. Le rendu lui-même se regarde dans l'espace d'administration.\n\nPortée requise : `read`.",
        "tags": [
          "media"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "conversation_id",
            "in": "query",
            "required": false,
            "description": "Ne rend que les demandes de cette conversation. Sans lui, toutes.",
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Ne rend que les demandes de cette conversation. Sans lui, toutes."
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (100 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "description": "Combien de lignes rendre au plus (100 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "conversation_id": {
                            "type": "string"
                          },
                          "prompt": {
                            "type": "string"
                          },
                          "format": {
                            "type": "string",
                            "enum": [
                              "image",
                              "video"
                            ]
                          },
                          "orientation": {
                            "type": "string",
                            "enum": [
                              "portrait",
                              "landscape"
                            ]
                          },
                          "model": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "failed",
                              "pending",
                              "running",
                              "ready"
                            ]
                          },
                          "input_count": {
                            "type": "number"
                          },
                          "mime_type": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "width": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "number"
                              }
                            ]
                          },
                          "height": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "number"
                              }
                            ]
                          },
                          "duration_seconds": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "number"
                              }
                            ]
                          },
                          "cost_usd": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "number"
                              }
                            ]
                          },
                          "error": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "conversation_id",
                          "prompt",
                          "format",
                          "orientation",
                          "model",
                          "status",
                          "input_count",
                          "mime_type",
                          "width",
                          "height",
                          "duration_seconds",
                          "cost_usd",
                          "error",
                          "created_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_media_generations",
        "summary": "Lecture. Les demandes d'un fil, de la plus récente à la plus ancienne : ce qui a été demandé, dans quel format et quel cadrage, où en est chaque demande, et ce que le rendu a coûté. Sans conversation_id, toutes les demandes de l'agence. Le rendu lui-même se regarde dans l'espace d'administration.",
        "description": "Lecture. Les demandes d'un fil, de la plus récente à la plus ancienne : ce qui a été demandé, dans quel format et quel cadrage, où en est chaque demande, et ce que le rendu a coûté. Sans conversation_id, toutes les demandes de l'agence. Le rendu lui-même se regarde dans l'espace d'administration.\n\nPortée requise : `read`.",
        "tags": [
          "media"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "conversation_id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Ne rend que les demandes de cette conversation. Sans lui, toutes."
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100,
                    "description": "Combien de lignes rendre au plus (100 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "conversation_id": {
                            "type": "string"
                          },
                          "prompt": {
                            "type": "string"
                          },
                          "format": {
                            "type": "string",
                            "enum": [
                              "image",
                              "video"
                            ]
                          },
                          "orientation": {
                            "type": "string",
                            "enum": [
                              "portrait",
                              "landscape"
                            ]
                          },
                          "model": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "failed",
                              "pending",
                              "running",
                              "ready"
                            ]
                          },
                          "input_count": {
                            "type": "number"
                          },
                          "mime_type": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "width": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "number"
                              }
                            ]
                          },
                          "height": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "number"
                              }
                            ]
                          },
                          "duration_seconds": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "number"
                              }
                            ]
                          },
                          "cost_usd": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "number"
                              }
                            ]
                          },
                          "error": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "conversation_id",
                          "prompt",
                          "format",
                          "orientation",
                          "model",
                          "status",
                          "input_count",
                          "mime_type",
                          "width",
                          "height",
                          "duration_seconds",
                          "cost_usd",
                          "error",
                          "created_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_media_generation": {
      "get": {
        "operationId": "get_media_generation_get",
        "summary": "Lecture. Une demande de génération et son état : en attente, en cours, rendue, ou échouée avec la raison. C'est ce qu'on relit pour savoir si un rendu lancé il y a deux minutes est arrivé.",
        "description": "Lecture. Une demande de génération et son état : en attente, en cours, rendue, ou échouée avec la raison. C'est ce qu'on relit pour savoir si un rendu lancé il y a deux minutes est arrivé.\n\nPortée requise : `read`.",
        "tags": [
          "media"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "description": "Identifiant de la génération.",
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Identifiant de la génération."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "conversation_id": {
                          "type": "string"
                        },
                        "prompt": {
                          "type": "string"
                        },
                        "format": {
                          "type": "string",
                          "enum": [
                            "image",
                            "video"
                          ]
                        },
                        "orientation": {
                          "type": "string",
                          "enum": [
                            "portrait",
                            "landscape"
                          ]
                        },
                        "model": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "failed",
                            "pending",
                            "running",
                            "ready"
                          ]
                        },
                        "input_count": {
                          "type": "number"
                        },
                        "mime_type": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "width": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "height": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "duration_seconds": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "cost_usd": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "error": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "conversation_id",
                        "prompt",
                        "format",
                        "orientation",
                        "model",
                        "status",
                        "input_count",
                        "mime_type",
                        "width",
                        "height",
                        "duration_seconds",
                        "cost_usd",
                        "error",
                        "created_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_media_generation",
        "summary": "Lecture. Une demande de génération et son état : en attente, en cours, rendue, ou échouée avec la raison. C'est ce qu'on relit pour savoir si un rendu lancé il y a deux minutes est arrivé.",
        "description": "Lecture. Une demande de génération et son état : en attente, en cours, rendue, ou échouée avec la raison. C'est ce qu'on relit pour savoir si un rendu lancé il y a deux minutes est arrivé.\n\nPortée requise : `read`.",
        "tags": [
          "media"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Identifiant de la génération."
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "conversation_id": {
                          "type": "string"
                        },
                        "prompt": {
                          "type": "string"
                        },
                        "format": {
                          "type": "string",
                          "enum": [
                            "image",
                            "video"
                          ]
                        },
                        "orientation": {
                          "type": "string",
                          "enum": [
                            "portrait",
                            "landscape"
                          ]
                        },
                        "model": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "failed",
                            "pending",
                            "running",
                            "ready"
                          ]
                        },
                        "input_count": {
                          "type": "number"
                        },
                        "mime_type": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "width": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "height": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "duration_seconds": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "cost_usd": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "error": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "conversation_id",
                        "prompt",
                        "format",
                        "orientation",
                        "model",
                        "status",
                        "input_count",
                        "mime_type",
                        "width",
                        "height",
                        "duration_seconds",
                        "cost_usd",
                        "error",
                        "created_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/create_media_generation": {
      "post": {
        "operationId": "create_media_generation",
        "summary": "Écriture. Demande une image ou un plan de six secondes à partir d'une consigne écrite, en portrait ou en paysage, avec jusqu'à quatre images de référence. Sans conversation_id, la demande rejoint le fil le plus récemment nourri, ou en ouvre un si l'agence n'en a aucun ; un fil rangé la refuse. N'écrase rien et ne lance rien : la demande naît en attente, c'est advanceMediaGeneration qui l'envoie au modèle.",
        "description": "Écriture. Demande une image ou un plan de six secondes à partir d'une consigne écrite, en portrait ou en paysage, avec jusqu'à quatre images de référence. Sans conversation_id, la demande rejoint le fil le plus récemment nourri, ou en ouvre un si l'agence n'en a aucun ; un fil rangé la refuse. N'écrase rien et ne lance rien : la demande naît en attente, c'est advanceMediaGeneration qui l'envoie au modèle.\n\nPortée requise : `write`.",
        "tags": [
          "media"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "conversation_id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "La conversation où poser la demande. Sans lui, la plus récemment nourrie, ou une nouvelle si l'agence n'en a aucune."
                  },
                  "prompt": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 2000,
                    "description": "Ce qu'on veut voir, en toutes lettres. La consigne part telle quelle au modèle."
                  },
                  "format": {
                    "type": "string",
                    "enum": [
                      "image",
                      "video"
                    ],
                    "description": "« image » pour un visuel fixe, « video » pour un plan de six secondes avec le son."
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "portrait",
                      "landscape"
                    ],
                    "description": "« portrait » (9:16, une story) ou « landscape » (16:9, un post ou une bannière)."
                  },
                  "images": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 6000000
                    },
                    "maxItems": 4,
                    "description": "Images de référence en data URL, quatre au plus. Le modèle s'en inspire pour une image ; pour une vidéo, la première sert de premier plan."
                  }
                },
                "required": [
                  "prompt",
                  "format",
                  "orientation"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "conversation_id": {
                          "type": "string"
                        },
                        "prompt": {
                          "type": "string"
                        },
                        "format": {
                          "type": "string",
                          "enum": [
                            "image",
                            "video"
                          ]
                        },
                        "orientation": {
                          "type": "string",
                          "enum": [
                            "portrait",
                            "landscape"
                          ]
                        },
                        "model": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "failed",
                            "pending",
                            "running",
                            "ready"
                          ]
                        },
                        "input_count": {
                          "type": "number"
                        },
                        "mime_type": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "width": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "height": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "duration_seconds": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "cost_usd": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "error": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "conversation_id",
                        "prompt",
                        "format",
                        "orientation",
                        "model",
                        "status",
                        "input_count",
                        "mime_type",
                        "width",
                        "height",
                        "duration_seconds",
                        "cost_usd",
                        "error",
                        "created_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/advance_media_generation": {
      "post": {
        "operationId": "advance_media_generation",
        "summary": "Écriture. Fait avancer une demande d'un cran : l'envoie au modèle si elle attendait, relit le travail en cours, et range le rendu quand il arrive. À rappeler toutes les quelques dizaines de secondes tant que l'état n'est ni « ready » ni « failed ». Sans effet sur ce qui a fini, et une demande déjà en vol n'est jamais relancée : elle ne se paie pas deux fois.",
        "description": "Écriture. Fait avancer une demande d'un cran : l'envoie au modèle si elle attendait, relit le travail en cours, et range le rendu quand il arrive. À rappeler toutes les quelques dizaines de secondes tant que l'état n'est ni « ready » ni « failed ». Sans effet sur ce qui a fini, et une demande déjà en vol n'est jamais relancée : elle ne se paie pas deux fois.\n\nPortée requise : `write`.",
        "tags": [
          "media"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Identifiant de la génération."
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "conversation_id": {
                          "type": "string"
                        },
                        "prompt": {
                          "type": "string"
                        },
                        "format": {
                          "type": "string",
                          "enum": [
                            "image",
                            "video"
                          ]
                        },
                        "orientation": {
                          "type": "string",
                          "enum": [
                            "portrait",
                            "landscape"
                          ]
                        },
                        "model": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "failed",
                            "pending",
                            "running",
                            "ready"
                          ]
                        },
                        "input_count": {
                          "type": "number"
                        },
                        "mime_type": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "width": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "height": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "duration_seconds": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "cost_usd": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "error": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "conversation_id",
                        "prompt",
                        "format",
                        "orientation",
                        "model",
                        "status",
                        "input_count",
                        "mime_type",
                        "width",
                        "height",
                        "duration_seconds",
                        "cost_usd",
                        "error",
                        "created_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_media_generation": {
      "post": {
        "operationId": "delete_media_generation",
        "summary": "Suppression définitive, irréversible. Supprime une génération, ses images de référence et son rendu. Les octets partent avec la ligne : ce qui n'a pas été téléchargé est perdu.",
        "description": "Suppression définitive, irréversible. Supprime une génération, ses images de référence et son rendu. Les octets partent avec la ligne : ce qui n'a pas été téléchargé est perdu.\n\nPortée requise : `destructive`.",
        "tags": [
          "media"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Identifiant de la génération."
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_admin_notes": {
      "get": {
        "operationId": "list_admin_notes_get",
        "summary": "Lecture. Notes de l'équipe : nom, fiche client rattachée, auteur, dates, nombre de commentaires, date de publication au client (null si la note n'est pas partie). Sans le corps des notes. Sans client_id, rend toutes les notes ; avec null, celles qui ne sont rattachées à aucune fiche.",
        "description": "Lecture. Notes de l'équipe : nom, fiche client rattachée, auteur, dates, nombre de commentaires, date de publication au client (null si la note n'est pas partie). Sans le corps des notes. Sans client_id, rend toutes les notes ; avec null, celles qui ne sont rattachées à aucune fiche.\n\nPortée requise : `read`.",
        "tags": [
          "notes"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "client_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (300 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 300,
              "description": "Combien de lignes rendre au plus (300 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "client_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "folders": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "parent_id": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "name": {
                                "type": "string"
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "parent_id",
                              "name",
                              "created_at"
                            ]
                          }
                        },
                        "notes": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "created_at": {
                                "type": "string"
                              },
                              "id": {
                                "type": "string"
                              },
                              "updated_at": {
                                "type": "string"
                              },
                              "created_by": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "name": {
                                "type": "string"
                              },
                              "client_id": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "folder_id": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "client_name": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_by_name": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "comment_count": {
                                "type": "number"
                              },
                              "published_at": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "created_at",
                              "id",
                              "updated_at",
                              "created_by",
                              "name",
                              "client_id",
                              "folder_id",
                              "client_name",
                              "created_by_name",
                              "comment_count",
                              "published_at"
                            ]
                          }
                        }
                      },
                      "required": [
                        "client_id",
                        "folders",
                        "notes"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_admin_notes",
        "summary": "Lecture. Notes de l'équipe : nom, fiche client rattachée, auteur, dates, nombre de commentaires, date de publication au client (null si la note n'est pas partie). Sans le corps des notes. Sans client_id, rend toutes les notes ; avec null, celles qui ne sont rattachées à aucune fiche.",
        "description": "Lecture. Notes de l'équipe : nom, fiche client rattachée, auteur, dates, nombre de commentaires, date de publication au client (null si la note n'est pas partie). Sans le corps des notes. Sans client_id, rend toutes les notes ; avec null, celles qui ne sont rattachées à aucune fiche.\n\nPortée requise : `read`.",
        "tags": [
          "notes"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 300,
                    "description": "Combien de lignes rendre au plus (300 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "client_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "folders": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "parent_id": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "name": {
                                "type": "string"
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "parent_id",
                              "name",
                              "created_at"
                            ]
                          }
                        },
                        "notes": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "created_at": {
                                "type": "string"
                              },
                              "id": {
                                "type": "string"
                              },
                              "updated_at": {
                                "type": "string"
                              },
                              "created_by": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "name": {
                                "type": "string"
                              },
                              "client_id": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "folder_id": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "client_name": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_by_name": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "comment_count": {
                                "type": "number"
                              },
                              "published_at": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "created_at",
                              "id",
                              "updated_at",
                              "created_by",
                              "name",
                              "client_id",
                              "folder_id",
                              "client_name",
                              "created_by_name",
                              "comment_count",
                              "published_at"
                            ]
                          }
                        }
                      },
                      "required": [
                        "client_id",
                        "folders",
                        "notes"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_admin_note": {
      "get": {
        "operationId": "get_admin_note_get",
        "summary": "Lecture. Une note en entier, corps Markdown compris : ce qui s'écrit en ce moment, l'instantané publié au client s'il y en a un, ses médias, et l'annuaire des personnes que son fil peut interpeller.",
        "description": "Lecture. Une note en entier, corps Markdown compris : ce qui s'écrit en ce moment, l'instantané publié au client s'il y en a un, ses médias, et l'annuaire des personnes que son fil peut interpeller.\n\nPortée requise : `read`.",
        "tags": [
          "notes"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "note": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "client_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "folder_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "name": {
                              "type": "string"
                            },
                            "content": {
                              "type": "string"
                            },
                            "created_by": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "created_at": {
                              "type": "string"
                            },
                            "updated_at": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "client_id",
                            "folder_id",
                            "name",
                            "content",
                            "created_by",
                            "created_at",
                            "updated_at"
                          ]
                        },
                        "publication": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "note_id": {
                                  "type": "string"
                                },
                                "client_id": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "content": {
                                  "type": "string"
                                },
                                "published_at": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "note_id",
                                "client_id",
                                "name",
                                "content",
                                "published_at"
                              ]
                            }
                          ]
                        },
                        "created_by_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "media": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "client_id": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "name": {
                                "type": "string"
                              },
                              "mime_type": {
                                "type": "string"
                              },
                              "size_bytes": {
                                "type": "number"
                              },
                              "has_thumb": {
                                "type": "boolean"
                              },
                              "folder_id": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_by": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_side": {
                                "type": "string",
                                "enum": [
                                  "client",
                                  "agency"
                                ]
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "client_id",
                              "name",
                              "mime_type",
                              "size_bytes",
                              "has_thumb",
                              "folder_id",
                              "created_by",
                              "created_side",
                              "created_at"
                            ]
                          }
                        },
                        "current_user_id": {
                          "type": "string"
                        },
                        "team": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "user_id": {
                                "type": "string"
                              },
                              "email": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "name": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "avatar_url": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "user_id",
                              "email",
                              "name",
                              "avatar_url"
                            ]
                          }
                        },
                        "members": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "user_id": {
                                "type": "string"
                              },
                              "email": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "name": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "avatar_url": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "user_id",
                              "email",
                              "name",
                              "avatar_url"
                            ]
                          }
                        },
                        "folders": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "parent_id": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "name": {
                                "type": "string"
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "parent_id",
                              "name",
                              "created_at"
                            ]
                          }
                        }
                      },
                      "required": [
                        "note",
                        "publication",
                        "created_by_name",
                        "media",
                        "current_user_id",
                        "team",
                        "members",
                        "folders"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_admin_note",
        "summary": "Lecture. Une note en entier, corps Markdown compris : ce qui s'écrit en ce moment, l'instantané publié au client s'il y en a un, ses médias, et l'annuaire des personnes que son fil peut interpeller.",
        "description": "Lecture. Une note en entier, corps Markdown compris : ce qui s'écrit en ce moment, l'instantané publié au client s'il y en a un, ses médias, et l'annuaire des personnes que son fil peut interpeller.\n\nPortée requise : `read`.",
        "tags": [
          "notes"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "note": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "client_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "folder_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "name": {
                              "type": "string"
                            },
                            "content": {
                              "type": "string"
                            },
                            "created_by": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "created_at": {
                              "type": "string"
                            },
                            "updated_at": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "client_id",
                            "folder_id",
                            "name",
                            "content",
                            "created_by",
                            "created_at",
                            "updated_at"
                          ]
                        },
                        "publication": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "note_id": {
                                  "type": "string"
                                },
                                "client_id": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "content": {
                                  "type": "string"
                                },
                                "published_at": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "note_id",
                                "client_id",
                                "name",
                                "content",
                                "published_at"
                              ]
                            }
                          ]
                        },
                        "created_by_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "media": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "client_id": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "name": {
                                "type": "string"
                              },
                              "mime_type": {
                                "type": "string"
                              },
                              "size_bytes": {
                                "type": "number"
                              },
                              "has_thumb": {
                                "type": "boolean"
                              },
                              "folder_id": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_by": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_side": {
                                "type": "string",
                                "enum": [
                                  "client",
                                  "agency"
                                ]
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "client_id",
                              "name",
                              "mime_type",
                              "size_bytes",
                              "has_thumb",
                              "folder_id",
                              "created_by",
                              "created_side",
                              "created_at"
                            ]
                          }
                        },
                        "current_user_id": {
                          "type": "string"
                        },
                        "team": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "user_id": {
                                "type": "string"
                              },
                              "email": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "name": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "avatar_url": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "user_id",
                              "email",
                              "name",
                              "avatar_url"
                            ]
                          }
                        },
                        "members": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "user_id": {
                                "type": "string"
                              },
                              "email": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "name": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "avatar_url": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "user_id",
                              "email",
                              "name",
                              "avatar_url"
                            ]
                          }
                        },
                        "folders": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "parent_id": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "name": {
                                "type": "string"
                              },
                              "created_at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "parent_id",
                              "name",
                              "created_at"
                            ]
                          }
                        }
                      },
                      "required": [
                        "note",
                        "publication",
                        "created_by_name",
                        "media",
                        "current_user_id",
                        "team",
                        "members",
                        "folders"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/create_admin_note": {
      "post": {
        "operationId": "create_admin_note",
        "summary": "Écriture. Ouvre une note, rattachée ou non à une fiche client. Le client ne la voit pas : le corps Markdown peut être fourni d'emblée ou écrit ensuite par updateAdminNote, puis remis par publishAdminNote.",
        "description": "Écriture. Ouvre une note, rattachée ou non à une fiche client. Le client ne la voit pas : le corps Markdown peut être fourni d'emblée ou écrit ensuite par updateAdminNote, puis remis par publishAdminNote.\n\nPortée requise : `write`.",
        "tags": [
          "notes"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "client_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "folder_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "content": {
                    "type": "string",
                    "maxLength": 20000
                  }
                },
                "required": [
                  "name"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "folder_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "name": {
                          "type": "string"
                        },
                        "content": {
                          "type": "string"
                        },
                        "created_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "client_id",
                        "folder_id",
                        "name",
                        "content",
                        "created_by",
                        "created_at",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/update_admin_note": {
      "post": {
        "operationId": "update_admin_note",
        "summary": "Écriture. Écrit une note : son nom, son corps Markdown ou la fiche client qu'elle vise. Mise à jour partielle, les champs absents restent en place ; client_id à null détache la note de sa fiche. Rien n'arrive au client tant que publishAdminNote n'a pas été rappelé, et changer la fiche d'une note publiée la dépublie.",
        "description": "Écriture. Écrit une note : son nom, son corps Markdown ou la fiche client qu'elle vise. Mise à jour partielle, les champs absents restent en place ; client_id à null détache la note de sa fiche. Rien n'arrive au client tant que publishAdminNote n'a pas été rappelé, et changer la fiche d'une note publiée la dépublie.\n\nPortée requise : `write`.",
        "tags": [
          "notes"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "client_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "folder_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "content": {
                    "type": "string",
                    "maxLength": 20000
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "folder_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "name": {
                          "type": "string"
                        },
                        "content": {
                          "type": "string"
                        },
                        "created_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "client_id",
                        "folder_id",
                        "name",
                        "content",
                        "created_by",
                        "created_at",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/publish_admin_note": {
      "post": {
        "operationId": "publish_admin_note",
        "summary": "Écriture. Publie une note au client de sa fiche : elle devient un rapport, lisible dans son espace, fil de commentaires et médias compris. Refusé si la note n'est rattachée à aucune fiche. Sans versions conservées, la dernière publication fait foi.",
        "description": "Écriture. Publie une note au client de sa fiche : elle devient un rapport, lisible dans son espace, fil de commentaires et médias compris. Refusé si la note n'est rattachée à aucune fiche. Sans versions conservées, la dernière publication fait foi.\n\nPortée requise : `write`.",
        "tags": [
          "notes"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "note_id": {
                          "type": "string"
                        },
                        "client_id": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "content": {
                          "type": "string"
                        },
                        "published_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "note_id",
                        "client_id",
                        "name",
                        "content",
                        "published_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/unpublish_admin_note": {
      "post": {
        "operationId": "unpublish_admin_note",
        "summary": "Écriture. Retire une note de l'espace de son client : elle redevient interne, son fil se referme et ses médias avec. Rien n'est supprimé, republier la rend d'un coup.",
        "description": "Écriture. Retire une note de l'espace de son client : elle redevient interne, son fil se referme et ses médias avec. Rien n'est supprimé, republier la rend d'un coup.\n\nPortée requise : `write`.",
        "tags": [
          "notes"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_admin_note": {
      "post": {
        "operationId": "delete_admin_note",
        "summary": "Suppression définitive, irréversible. Supprime définitivement une note, tout son fil de commentaires, et ce que le client en lisait si elle était publiée.",
        "description": "Suppression définitive, irréversible. Supprime définitivement une note, tout son fil de commentaires, et ce que le client en lisait si elle était publiée.\n\nPortée requise : `destructive`.",
        "tags": [
          "notes"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_note_comments": {
      "get": {
        "operationId": "list_note_comments_get",
        "summary": "Lecture. Fil d'une note, du plus ancien message au plus récent.",
        "description": "Lecture. Fil d'une note, du plus ancien message au plus récent.\n\nPortée requise : `read`.",
        "tags": [
          "notes"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "note_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (300 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 300,
              "description": "Combien de lignes rendre au plus (300 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "parent_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "anchor_exact": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "anchor_prefix": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "anchor_suffix": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "resolved_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "resolved_by": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "resolved_by_name": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "id": {
                            "type": "string"
                          },
                          "author_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "author_name": {
                            "type": "string"
                          },
                          "author_avatar_url": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "author_side": {
                            "type": "string",
                            "enum": [
                              "client",
                              "team"
                            ]
                          },
                          "body": {
                            "type": "string"
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "edited_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "shared_with_client": {
                            "anyOf": [
                              {
                                "const": false
                              },
                              {
                                "const": true
                              }
                            ]
                          }
                        },
                        "required": [
                          "parent_id",
                          "anchor_exact",
                          "anchor_prefix",
                          "anchor_suffix",
                          "resolved_at",
                          "resolved_by",
                          "resolved_by_name",
                          "id",
                          "author_id",
                          "author_name",
                          "author_avatar_url",
                          "author_side",
                          "body",
                          "created_at",
                          "edited_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_note_comments",
        "summary": "Lecture. Fil d'une note, du plus ancien message au plus récent.",
        "description": "Lecture. Fil d'une note, du plus ancien message au plus récent.\n\nPortée requise : `read`.",
        "tags": [
          "notes"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "note_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 300,
                    "description": "Combien de lignes rendre au plus (300 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "required": [
                  "note_id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "parent_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "anchor_exact": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "anchor_prefix": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "anchor_suffix": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "resolved_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "resolved_by": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "resolved_by_name": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "id": {
                            "type": "string"
                          },
                          "author_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "author_name": {
                            "type": "string"
                          },
                          "author_avatar_url": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "author_side": {
                            "type": "string",
                            "enum": [
                              "client",
                              "team"
                            ]
                          },
                          "body": {
                            "type": "string"
                          },
                          "created_at": {
                            "type": "string"
                          },
                          "edited_at": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "shared_with_client": {
                            "anyOf": [
                              {
                                "const": false
                              },
                              {
                                "const": true
                              }
                            ]
                          }
                        },
                        "required": [
                          "parent_id",
                          "anchor_exact",
                          "anchor_prefix",
                          "anchor_suffix",
                          "resolved_at",
                          "resolved_by",
                          "resolved_by_name",
                          "id",
                          "author_id",
                          "author_name",
                          "author_avatar_url",
                          "author_side",
                          "body",
                          "created_at",
                          "edited_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/add_note_comment": {
      "post": {
        "operationId": "add_note_comment",
        "summary": "Écriture. Écrit un message dans le fil d'une note, au nom de l'administrateur de la clé. Sur une note publiée, le client le lit ; « @[Nom](uuid) » notifie la personne nommée si elle voit la note. « parent_id » range le message sous une question déjà posée ; « anchor » l'attache à un passage du texte, en reprenant le passage exact et ce qui l'entoure.",
        "description": "Écriture. Écrit un message dans le fil d'une note, au nom de l'administrateur de la clé. Sur une note publiée, le client le lit ; « @[Nom](uuid) » notifie la personne nommée si elle voit la note. « parent_id » range le message sous une question déjà posée ; « anchor » l'attache à un passage du texte, en reprenant le passage exact et ce qui l'entoure.\n\nPortée requise : `write`.",
        "tags": [
          "notes"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "note_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "body": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 10000
                  },
                  "parent_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "anchor": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "exact": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 300
                          },
                          "prefix": {
                            "type": "string",
                            "maxLength": 60,
                            "default": ""
                          },
                          "suffix": {
                            "type": "string",
                            "maxLength": 60,
                            "default": ""
                          }
                        },
                        "required": [
                          "exact"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "note_id",
                  "body"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "parent_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "anchor_exact": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "anchor_prefix": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "anchor_suffix": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "resolved_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "resolved_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "resolved_by_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "id": {
                          "type": "string"
                        },
                        "author_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "author_name": {
                          "type": "string"
                        },
                        "author_avatar_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "author_side": {
                          "type": "string",
                          "enum": [
                            "client",
                            "team"
                          ]
                        },
                        "body": {
                          "type": "string"
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "edited_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "shared_with_client": {
                          "anyOf": [
                            {
                              "const": false
                            },
                            {
                              "const": true
                            }
                          ]
                        }
                      },
                      "required": [
                        "parent_id",
                        "anchor_exact",
                        "anchor_prefix",
                        "anchor_suffix",
                        "resolved_at",
                        "resolved_by",
                        "resolved_by_name",
                        "id",
                        "author_id",
                        "author_name",
                        "author_avatar_url",
                        "author_side",
                        "body",
                        "created_at",
                        "edited_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/resolve_note_comment": {
      "post": {
        "operationId": "resolve_note_comment",
        "summary": "Écriture. Clôt la question posée par un fil de note (resolved: true) ou la rouvre (false). Se pose sur le premier message d'un fil, jamais sur une réponse, et ne notifie personne.",
        "description": "Écriture. Clôt la question posée par un fil de note (resolved: true) ou la rouvre (false). Se pose sur le premier message d'un fil, jamais sur une réponse, et ne notifie personne.\n\nPortée requise : `write`.",
        "tags": [
          "notes"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "comment_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "resolved": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "comment_id",
                  "resolved"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "parent_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "anchor_exact": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "anchor_prefix": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "anchor_suffix": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "resolved_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "resolved_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "resolved_by_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "id": {
                          "type": "string"
                        },
                        "author_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "author_name": {
                          "type": "string"
                        },
                        "author_avatar_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "author_side": {
                          "type": "string",
                          "enum": [
                            "client",
                            "team"
                          ]
                        },
                        "body": {
                          "type": "string"
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "edited_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "shared_with_client": {
                          "anyOf": [
                            {
                              "const": false
                            },
                            {
                              "const": true
                            }
                          ]
                        }
                      },
                      "required": [
                        "parent_id",
                        "anchor_exact",
                        "anchor_prefix",
                        "anchor_suffix",
                        "resolved_at",
                        "resolved_by",
                        "resolved_by_name",
                        "id",
                        "author_id",
                        "author_name",
                        "author_avatar_url",
                        "author_side",
                        "body",
                        "created_at",
                        "edited_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/update_note_comment": {
      "post": {
        "operationId": "update_note_comment",
        "summary": "Écriture. Corrige un message du fil d'une note, écrit par le compte au nom duquel la clé MCP agit. Un message écrit par quelqu'un d'autre est refusé par le moteur. Le fil affichera « modifié » à côté de sa date. Corriger ne change pas le public du message : ce qui a été écrit avant la publication de la note reste interne.",
        "description": "Écriture. Corrige un message du fil d'une note, écrit par le compte au nom duquel la clé MCP agit. Un message écrit par quelqu'un d'autre est refusé par le moteur. Le fil affichera « modifié » à côté de sa date. Corriger ne change pas le public du message : ce qui a été écrit avant la publication de la note reste interne.\n\nPortée requise : `write`.",
        "tags": [
          "notes"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "note_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "comment_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "body": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 10000
                  }
                },
                "required": [
                  "note_id",
                  "comment_id",
                  "body"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "parent_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "anchor_exact": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "anchor_prefix": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "anchor_suffix": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "resolved_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "resolved_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "resolved_by_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "id": {
                          "type": "string"
                        },
                        "author_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "author_name": {
                          "type": "string"
                        },
                        "author_avatar_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "author_side": {
                          "type": "string",
                          "enum": [
                            "client",
                            "team"
                          ]
                        },
                        "body": {
                          "type": "string"
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "edited_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "shared_with_client": {
                          "anyOf": [
                            {
                              "const": false
                            },
                            {
                              "const": true
                            }
                          ]
                        }
                      },
                      "required": [
                        "parent_id",
                        "anchor_exact",
                        "anchor_prefix",
                        "anchor_suffix",
                        "resolved_at",
                        "resolved_by",
                        "resolved_by_name",
                        "id",
                        "author_id",
                        "author_name",
                        "author_avatar_url",
                        "author_side",
                        "body",
                        "created_at",
                        "edited_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_note_comment": {
      "post": {
        "operationId": "delete_note_comment",
        "summary": "Suppression définitive, irréversible. Supprime définitivement un message du fil d'une note, écrit par le compte au nom duquel la clé MCP agit. Refusé pour un message auquel on a répondu : il se corrige, il ne se supprime plus.",
        "description": "Suppression définitive, irréversible. Supprime définitivement un message du fil d'une note, écrit par le compte au nom duquel la clé MCP agit. Refusé pour un message auquel on a répondu : il se corrige, il ne se supprime plus.\n\nPortée requise : `destructive`.",
        "tags": [
          "notes"
        ],
        "x-required-scope": "destructive",
        "x-level": "destructive",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "note_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "comment_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "note_id",
                  "comment_id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/create_note_folder": {
      "post": {
        "operationId": "create_note_folder",
        "summary": "Écriture. Crée un dossier dans le carnet interne, à la racine ou dans un autre dossier. Deux dossiers de même nom ne cohabitent pas au même endroit.",
        "description": "Écriture. Crée un dossier dans le carnet interne, à la racine ou dans un autre dossier. Deux dossiers de même nom ne cohabitent pas au même endroit.\n\nPortée requise : `write`.",
        "tags": [
          "note-folders"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "parent_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  }
                },
                "required": [
                  "name"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "parent_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "name": {
                          "type": "string"
                        },
                        "created_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "parent_id",
                        "name",
                        "created_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/rename_note_folder": {
      "post": {
        "operationId": "rename_note_folder",
        "summary": "Écriture. Renomme un dossier du carnet interne. Ce qu'il contient n'est pas touché et ne change pas de place.",
        "description": "Écriture. Renomme un dossier du carnet interne. Ce qu'il contient n'est pas touché et ne change pas de place.\n\nPortée requise : `write`.",
        "tags": [
          "note-folders"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "parent_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "name": {
                          "type": "string"
                        },
                        "created_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "parent_id",
                        "name",
                        "created_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/delete_note_folder": {
      "post": {
        "operationId": "delete_note_folder",
        "summary": "Écriture. Supprime un dossier du carnet interne. Aucune note n'est supprimée : son contenu, sous-dossiers compris, remonte dans le dossier qui le contenait.",
        "description": "Écriture. Supprime un dossier du carnet interne. Aucune note n'est supprimée : son contenu, sous-dossiers compris, remonte dans le dossier qui le contenait.\n\nPortée requise : `write`.",
        "tags": [
          "note-folders"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/move_note_items": {
      "post": {
        "operationId": "move_note_items",
        "summary": "Écriture. Range des notes et des dossiers du carnet dans un autre dossier, ou les remet à la racine. Aucun texte n'est réécrit, et un dossier ne peut pas être rangé dans l'un de ses sous-dossiers.",
        "description": "Écriture. Range des notes et des dossiers du carnet dans un autre dossier, ou les remet à la racine. Aucun texte n'est réécrit, et un dossier ne peut pas être rangé dans l'un de ses sous-dossiers.\n\nPortée requise : `write`.",
        "tags": [
          "note-folders"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "note_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "maxItems": 100,
                    "default": []
                  },
                  "folder_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "maxItems": 50,
                    "default": []
                  },
                  "to_folder_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "note_ids": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "folder_ids": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "to_folder_id": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "note_ids",
                        "folder_ids",
                        "to_folder_id"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_ticket_board": {
      "get": {
        "operationId": "get_ticket_board_get",
        "summary": "Lecture. Conversations avec un client : sujet, état, nombre de messages, date et aperçu du dernier. Sans le contenu des fils.",
        "description": "Lecture. Conversations avec un client : sujet, état, nombre de messages, date et aperçu du dernier. Sans le contenu des fils.\n\nPortée requise : `read`.",
        "tags": [
          "tickets"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "client_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (300 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 300,
              "description": "Combien de lignes rendre au plus (300 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "client_id": {
                          "type": "string"
                        },
                        "tickets": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "client_id": {
                                "type": "string"
                              },
                              "subject": {
                                "type": "string"
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "open",
                                  "in_progress",
                                  "resolved",
                                  "closed"
                                ]
                              },
                              "created_by": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_side": {
                                "type": "string",
                                "enum": [
                                  "client",
                                  "agency"
                                ]
                              },
                              "last_message_at": {
                                "type": "string"
                              },
                              "closed_at": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_at": {
                                "type": "string"
                              },
                              "message_count": {
                                "type": "number"
                              },
                              "preview": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "author_name": {
                                        "type": "string"
                                      },
                                      "author_avatar_url": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "side": {
                                        "type": "string",
                                        "enum": [
                                          "client",
                                          "agency"
                                        ]
                                      },
                                      "body": {
                                        "type": "string"
                                      },
                                      "attachment_count": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "author_name",
                                      "author_avatar_url",
                                      "side",
                                      "body",
                                      "attachment_count"
                                    ]
                                  }
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "client_id",
                              "subject",
                              "status",
                              "created_by",
                              "created_side",
                              "last_message_at",
                              "closed_at",
                              "created_at",
                              "message_count",
                              "preview"
                            ]
                          }
                        },
                        "current_user_id": {
                          "type": "string"
                        },
                        "side": {
                          "type": "string",
                          "enum": [
                            "client",
                            "agency"
                          ]
                        }
                      },
                      "required": [
                        "client_id",
                        "tickets",
                        "current_user_id",
                        "side"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_ticket_board",
        "summary": "Lecture. Conversations avec un client : sujet, état, nombre de messages, date et aperçu du dernier. Sans le contenu des fils.",
        "description": "Lecture. Conversations avec un client : sujet, état, nombre de messages, date et aperçu du dernier. Sans le contenu des fils.\n\nPortée requise : `read`.",
        "tags": [
          "tickets"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 300,
                    "description": "Combien de lignes rendre au plus (300 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "client_id": {
                          "type": "string"
                        },
                        "tickets": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "client_id": {
                                "type": "string"
                              },
                              "subject": {
                                "type": "string"
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "open",
                                  "in_progress",
                                  "resolved",
                                  "closed"
                                ]
                              },
                              "created_by": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_side": {
                                "type": "string",
                                "enum": [
                                  "client",
                                  "agency"
                                ]
                              },
                              "last_message_at": {
                                "type": "string"
                              },
                              "closed_at": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_at": {
                                "type": "string"
                              },
                              "message_count": {
                                "type": "number"
                              },
                              "preview": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "author_name": {
                                        "type": "string"
                                      },
                                      "author_avatar_url": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "side": {
                                        "type": "string",
                                        "enum": [
                                          "client",
                                          "agency"
                                        ]
                                      },
                                      "body": {
                                        "type": "string"
                                      },
                                      "attachment_count": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "author_name",
                                      "author_avatar_url",
                                      "side",
                                      "body",
                                      "attachment_count"
                                    ]
                                  }
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "client_id",
                              "subject",
                              "status",
                              "created_by",
                              "created_side",
                              "last_message_at",
                              "closed_at",
                              "created_at",
                              "message_count",
                              "preview"
                            ]
                          }
                        },
                        "current_user_id": {
                          "type": "string"
                        },
                        "side": {
                          "type": "string",
                          "enum": [
                            "client",
                            "agency"
                          ]
                        }
                      },
                      "required": [
                        "client_id",
                        "tickets",
                        "current_user_id",
                        "side"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_ticket_inbox": {
      "get": {
        "operationId": "get_ticket_inbox_get",
        "summary": "Lecture. Toutes les conversations, tous clients confondus, de la plus récemment active à la plus ancienne : fiche, sujet, état et aperçu du dernier message. Pour savoir ce qui attend une réponse sans ouvrir les dossiers un par un.",
        "description": "Lecture. Toutes les conversations, tous clients confondus, de la plus récemment active à la plus ancienne : fiche, sujet, état et aperçu du dernier message. Pour savoir ce qui attend une réponse sans ouvrir les dossiers un par un.\n\nPortée requise : `read`.",
        "tags": [
          "tickets"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (300 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 300,
              "description": "Combien de lignes rendre au plus (300 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "tickets": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "client_id": {
                                "type": "string"
                              },
                              "subject": {
                                "type": "string"
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "open",
                                  "in_progress",
                                  "resolved",
                                  "closed"
                                ]
                              },
                              "created_by": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_side": {
                                "type": "string",
                                "enum": [
                                  "client",
                                  "agency"
                                ]
                              },
                              "last_message_at": {
                                "type": "string"
                              },
                              "closed_at": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_at": {
                                "type": "string"
                              },
                              "message_count": {
                                "type": "number"
                              },
                              "preview": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "author_name": {
                                        "type": "string"
                                      },
                                      "author_avatar_url": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "side": {
                                        "type": "string",
                                        "enum": [
                                          "client",
                                          "agency"
                                        ]
                                      },
                                      "body": {
                                        "type": "string"
                                      },
                                      "attachment_count": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "author_name",
                                      "author_avatar_url",
                                      "side",
                                      "body",
                                      "attachment_count"
                                    ]
                                  }
                                ]
                              },
                              "client_name": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "client_id",
                              "subject",
                              "status",
                              "created_by",
                              "created_side",
                              "last_message_at",
                              "closed_at",
                              "created_at",
                              "message_count",
                              "preview",
                              "client_name"
                            ]
                          }
                        },
                        "current_user_id": {
                          "type": "string"
                        },
                        "side": {
                          "type": "string",
                          "enum": [
                            "client",
                            "agency"
                          ]
                        }
                      },
                      "required": [
                        "tickets",
                        "current_user_id",
                        "side"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_ticket_inbox",
        "summary": "Lecture. Toutes les conversations, tous clients confondus, de la plus récemment active à la plus ancienne : fiche, sujet, état et aperçu du dernier message. Pour savoir ce qui attend une réponse sans ouvrir les dossiers un par un.",
        "description": "Lecture. Toutes les conversations, tous clients confondus, de la plus récemment active à la plus ancienne : fiche, sujet, état et aperçu du dernier message. Pour savoir ce qui attend une réponse sans ouvrir les dossiers un par un.\n\nPortée requise : `read`.",
        "tags": [
          "tickets"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 300,
                    "description": "Combien de lignes rendre au plus (300 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "tickets": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "client_id": {
                                "type": "string"
                              },
                              "subject": {
                                "type": "string"
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "open",
                                  "in_progress",
                                  "resolved",
                                  "closed"
                                ]
                              },
                              "created_by": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_side": {
                                "type": "string",
                                "enum": [
                                  "client",
                                  "agency"
                                ]
                              },
                              "last_message_at": {
                                "type": "string"
                              },
                              "closed_at": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              },
                              "created_at": {
                                "type": "string"
                              },
                              "message_count": {
                                "type": "number"
                              },
                              "preview": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "author_name": {
                                        "type": "string"
                                      },
                                      "author_avatar_url": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ]
                                      },
                                      "side": {
                                        "type": "string",
                                        "enum": [
                                          "client",
                                          "agency"
                                        ]
                                      },
                                      "body": {
                                        "type": "string"
                                      },
                                      "attachment_count": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "author_name",
                                      "author_avatar_url",
                                      "side",
                                      "body",
                                      "attachment_count"
                                    ]
                                  }
                                ]
                              },
                              "client_name": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "client_id",
                              "subject",
                              "status",
                              "created_by",
                              "created_side",
                              "last_message_at",
                              "closed_at",
                              "created_at",
                              "message_count",
                              "preview",
                              "client_name"
                            ]
                          }
                        },
                        "current_user_id": {
                          "type": "string"
                        },
                        "side": {
                          "type": "string",
                          "enum": [
                            "client",
                            "agency"
                          ]
                        }
                      },
                      "required": [
                        "tickets",
                        "current_user_id",
                        "side"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/count_tickets_to_handle": {
      "get": {
        "operationId": "count_tickets_to_handle_get",
        "summary": "Lecture. Nombre de conversations à traiter : ouvertes ou en cours, quel que soit le dernier à avoir écrit. C'est le chiffre de la ligne Messages de la navigation. Sans le contenu des fils.",
        "description": "Lecture. Nombre de conversations à traiter : ouvertes ou en cours, quel que soit le dernier à avoir écrit. C'est le chiffre de la ligne Messages de la navigation. Sans le contenu des fils.\n\nPortée requise : `read`.",
        "tags": [
          "tickets"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "number"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "count_tickets_to_handle",
        "summary": "Lecture. Nombre de conversations à traiter : ouvertes ou en cours, quel que soit le dernier à avoir écrit. C'est le chiffre de la ligne Messages de la navigation. Sans le contenu des fils.",
        "description": "Lecture. Nombre de conversations à traiter : ouvertes ou en cours, quel que soit le dernier à avoir écrit. C'est le chiffre de la ligne Messages de la navigation. Sans le contenu des fils.\n\nPortée requise : `read`.",
        "tags": [
          "tickets"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "number"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/list_ticket_messages": {
      "get": {
        "operationId": "list_ticket_messages_get",
        "summary": "Lecture. Fil d'une conversation, du plus ancien message au plus récent.",
        "description": "Lecture. Fil d'une conversation, du plus ancien message au plus récent.\n\nPortée requise : `read`.",
        "tags": [
          "tickets"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "ticket_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Combien de lignes rendre au plus (300 par défaut et au maximum).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 300,
              "description": "Combien de lignes rendre au plus (300 par défaut et au maximum)."
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Combien de lignes sauter, pour aller chercher la suite de la liste.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "author_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "author_name": {
                            "type": "string"
                          },
                          "author_avatar_url": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "author_side": {
                            "type": "string",
                            "enum": [
                              "client",
                              "agency"
                            ]
                          },
                          "body": {
                            "type": "string"
                          },
                          "attachments": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "client_id": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "name": {
                                  "type": "string"
                                },
                                "mime_type": {
                                  "type": "string"
                                },
                                "size_bytes": {
                                  "type": "number"
                                },
                                "has_thumb": {
                                  "type": "boolean"
                                },
                                "folder_id": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "created_by": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "created_side": {
                                  "type": "string",
                                  "enum": [
                                    "client",
                                    "agency"
                                  ]
                                },
                                "created_at": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "id",
                                "client_id",
                                "name",
                                "mime_type",
                                "size_bytes",
                                "has_thumb",
                                "folder_id",
                                "created_by",
                                "created_side",
                                "created_at"
                              ]
                            }
                          },
                          "created_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "author_id",
                          "author_name",
                          "author_avatar_url",
                          "author_side",
                          "body",
                          "attachments",
                          "created_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "list_ticket_messages",
        "summary": "Lecture. Fil d'une conversation, du plus ancien message au plus récent.",
        "description": "Lecture. Fil d'une conversation, du plus ancien message au plus récent.\n\nPortée requise : `read`.",
        "tags": [
          "tickets"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "ticket_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 300,
                    "description": "Combien de lignes rendre au plus (300 par défaut et au maximum)."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Combien de lignes sauter, pour aller chercher la suite de la liste."
                  }
                },
                "required": [
                  "ticket_id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "author_id": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "author_name": {
                            "type": "string"
                          },
                          "author_avatar_url": {
                            "anyOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "author_side": {
                            "type": "string",
                            "enum": [
                              "client",
                              "agency"
                            ]
                          },
                          "body": {
                            "type": "string"
                          },
                          "attachments": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "client_id": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "name": {
                                  "type": "string"
                                },
                                "mime_type": {
                                  "type": "string"
                                },
                                "size_bytes": {
                                  "type": "number"
                                },
                                "has_thumb": {
                                  "type": "boolean"
                                },
                                "folder_id": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "created_by": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "created_side": {
                                  "type": "string",
                                  "enum": [
                                    "client",
                                    "agency"
                                  ]
                                },
                                "created_at": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "id",
                                "client_id",
                                "name",
                                "mime_type",
                                "size_bytes",
                                "has_thumb",
                                "folder_id",
                                "created_by",
                                "created_side",
                                "created_at"
                              ]
                            }
                          },
                          "created_at": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "author_id",
                          "author_name",
                          "author_avatar_url",
                          "author_side",
                          "body",
                          "attachments",
                          "created_at"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/create_ticket": {
      "post": {
        "operationId": "create_ticket",
        "summary": "Écriture. Lance une conversation avec un client, avec son premier message. Le client en est prévenu, et il lit ce message : il est écrit au nom de Noki Mind. `file_ids` joint des fichiers déjà envoyés au stockage, ce que cet outil ne sait pas faire : en pratique il reste vide ici (voir prepareClientFileUpload, non publié).",
        "description": "Écriture. Lance une conversation avec un client, avec son premier message. Le client en est prévenu, et il lit ce message : il est écrit au nom de Noki Mind. `file_ids` joint des fichiers déjà envoyés au stockage, ce que cet outil ne sait pas faire : en pratique il reste vide ici (voir prepareClientFileUpload, non publié).\n\nPortée requise : `write`.",
        "tags": [
          "tickets"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "subject": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "body": {
                    "type": "string",
                    "maxLength": 10000,
                    "default": ""
                  },
                  "file_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "maxItems": 10
                  }
                },
                "required": [
                  "subject"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté. Chaque ligne porte son adresse dans `open_url` : c'est le lien à donner tel quel, jamais à reconstruire.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "client_id": {
                          "type": "string"
                        },
                        "subject": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "open",
                            "in_progress",
                            "resolved",
                            "closed"
                          ]
                        },
                        "created_by": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_side": {
                          "type": "string",
                          "enum": [
                            "client",
                            "agency"
                          ]
                        },
                        "last_message_at": {
                          "type": "string"
                        },
                        "closed_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "message_count": {
                          "type": "number"
                        },
                        "preview": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "author_name": {
                                  "type": "string"
                                },
                                "author_avatar_url": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "side": {
                                  "type": "string",
                                  "enum": [
                                    "client",
                                    "agency"
                                  ]
                                },
                                "body": {
                                  "type": "string"
                                },
                                "attachment_count": {
                                  "type": "number"
                                }
                              },
                              "required": [
                                "author_name",
                                "author_avatar_url",
                                "side",
                                "body",
                                "attachment_count"
                              ]
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "client_id",
                        "subject",
                        "status",
                        "created_by",
                        "created_side",
                        "last_message_at",
                        "closed_at",
                        "created_at",
                        "message_count",
                        "preview"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/add_ticket_message": {
      "post": {
        "operationId": "add_ticket_message",
        "summary": "Écriture. Répond dans une conversation, au nom de Noki Mind. Le client en est prévenu et lit le message. Répondre à une conversation archivée la rouvre. Même remarque que pour createTicket sur `file_ids`.",
        "description": "Écriture. Répond dans une conversation, au nom de Noki Mind. Le client en est prévenu et lit le message. Répondre à une conversation archivée la rouvre. Même remarque que pour createTicket sur `file_ids`.\n\nPortée requise : `write`.",
        "tags": [
          "tickets"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "ticket_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "body": {
                    "type": "string",
                    "maxLength": 10000,
                    "default": ""
                  },
                  "file_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "maxItems": 10
                  }
                },
                "required": [
                  "ticket_id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "message": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "author_id": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "author_name": {
                              "type": "string"
                            },
                            "author_avatar_url": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "author_side": {
                              "type": "string",
                              "enum": [
                                "client",
                                "agency"
                              ]
                            },
                            "body": {
                              "type": "string"
                            },
                            "attachments": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "client_id": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "string"
                                      }
                                    ]
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "mime_type": {
                                    "type": "string"
                                  },
                                  "size_bytes": {
                                    "type": "number"
                                  },
                                  "has_thumb": {
                                    "type": "boolean"
                                  },
                                  "folder_id": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "string"
                                      }
                                    ]
                                  },
                                  "created_by": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "string"
                                      }
                                    ]
                                  },
                                  "created_side": {
                                    "type": "string",
                                    "enum": [
                                      "client",
                                      "agency"
                                    ]
                                  },
                                  "created_at": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "client_id",
                                  "name",
                                  "mime_type",
                                  "size_bytes",
                                  "has_thumb",
                                  "folder_id",
                                  "created_by",
                                  "created_side",
                                  "created_at"
                                ]
                              }
                            },
                            "created_at": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "author_id",
                            "author_name",
                            "author_avatar_url",
                            "author_side",
                            "body",
                            "attachments",
                            "created_at"
                          ]
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "open",
                            "in_progress",
                            "resolved",
                            "closed"
                          ]
                        },
                        "closed_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "message",
                        "status",
                        "closed_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/set_ticket_status": {
      "post": {
        "operationId": "set_ticket_status",
        "summary": "Écriture. Dit où en est une conversation : open (lancée), in_progress (en cours), resolved (réglée), closed (archivée).",
        "description": "Écriture. Dit où en est une conversation : open (lancée), in_progress (en cours), resolved (réglée), closed (archivée).\n\nPortée requise : `write`.",
        "tags": [
          "tickets"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "open",
                      "in_progress",
                      "resolved",
                      "closed"
                    ]
                  }
                },
                "required": [
                  "id",
                  "status"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "open",
                            "in_progress",
                            "resolved",
                            "closed"
                          ]
                        },
                        "closed_at": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "status",
                        "closed_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_company": {
      "get": {
        "operationId": "get_company_get",
        "summary": "Lecture. Fiche de la société : identité légale, adresse, coordonnées bancaires.",
        "description": "Lecture. Fiche de la société : identité légale, adresse, coordonnées bancaires.\n\nPortée requise : `read`.",
        "tags": [
          "company"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "anyOf": [
                        {
                          "type": "null"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string"
                            },
                            "legal_name": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "siret": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "vat_number": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "country": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "address": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "contact_email": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "phone": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "bank_name": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "iban": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "bic": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "updated_at": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "name",
                            "legal_name",
                            "siret",
                            "vat_number",
                            "country",
                            "address",
                            "contact_email",
                            "phone",
                            "bank_name",
                            "iban",
                            "bic",
                            "updated_at"
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_company",
        "summary": "Lecture. Fiche de la société : identité légale, adresse, coordonnées bancaires.",
        "description": "Lecture. Fiche de la société : identité légale, adresse, coordonnées bancaires.\n\nPortée requise : `read`.",
        "tags": [
          "company"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "anyOf": [
                        {
                          "type": "null"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string"
                            },
                            "legal_name": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "siret": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "vat_number": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "country": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "address": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "contact_email": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "phone": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "bank_name": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "iban": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "bic": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "updated_at": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "name",
                            "legal_name",
                            "siret",
                            "vat_number",
                            "country",
                            "address",
                            "contact_email",
                            "phone",
                            "bank_name",
                            "iban",
                            "bic",
                            "updated_at"
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/upsert_company": {
      "post": {
        "operationId": "upsert_company",
        "summary": "Écriture. Enregistre la fiche de la société. Elle est unique, l'appel la remplace.",
        "description": "Écriture. Enregistre la fiche de la société. Elle est unique, l'appel la remplace.\n\nPortée requise : `write`.",
        "tags": [
          "company"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "legal_name": {
                    "type": "string"
                  },
                  "siret": {
                    "type": "string"
                  },
                  "vat_number": {
                    "type": "string"
                  },
                  "country": {
                    "type": "string"
                  },
                  "address": {
                    "type": "string"
                  },
                  "contact_email": {
                    "type": "string"
                  },
                  "phone": {
                    "type": "string"
                  },
                  "bank_name": {
                    "type": "string"
                  },
                  "iban": {
                    "type": "string"
                  },
                  "bic": {
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string"
                        },
                        "legal_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "siret": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "vat_number": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "country": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "address": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "contact_email": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "phone": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "bank_name": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "iban": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "bic": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "name",
                        "legal_name",
                        "siret",
                        "vat_number",
                        "country",
                        "address",
                        "contact_email",
                        "phone",
                        "bank_name",
                        "iban",
                        "bic",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/search_french_companies": {
      "get": {
        "operationId": "search_french_companies_get",
        "summary": "Lecture. Cherche une entreprise française dans l'annuaire public (données INSEE) pour pré-remplir une fiche client.",
        "description": "Lecture. Cherche une entreprise française dans l'annuaire public (données INSEE) pour pré-remplir une fiche client.\n\nPortée requise : `read`.",
        "tags": [
          "company-search"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 3,
              "maxLength": 120
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "siren": {
                            "type": "string"
                          },
                          "siret": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "vatNumber": {
                            "type": "string"
                          },
                          "addressLine1": {
                            "type": "string"
                          },
                          "addressLine2": {
                            "type": "string"
                          },
                          "postalCode": {
                            "type": "string"
                          },
                          "city": {
                            "type": "string"
                          },
                          "active": {
                            "type": "boolean"
                          }
                        },
                        "required": [
                          "siren",
                          "siret",
                          "name",
                          "vatNumber",
                          "addressLine1",
                          "addressLine2",
                          "postalCode",
                          "city",
                          "active"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "search_french_companies",
        "summary": "Lecture. Cherche une entreprise française dans l'annuaire public (données INSEE) pour pré-remplir une fiche client.",
        "description": "Lecture. Cherche une entreprise française dans l'annuaire public (données INSEE) pour pré-remplir une fiche client.\n\nPortée requise : `read`.",
        "tags": [
          "company-search"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "query": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 120
                  }
                },
                "required": [
                  "query"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "siren": {
                            "type": "string"
                          },
                          "siret": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "vatNumber": {
                            "type": "string"
                          },
                          "addressLine1": {
                            "type": "string"
                          },
                          "addressLine2": {
                            "type": "string"
                          },
                          "postalCode": {
                            "type": "string"
                          },
                          "city": {
                            "type": "string"
                          },
                          "active": {
                            "type": "boolean"
                          }
                        },
                        "required": [
                          "siren",
                          "siret",
                          "name",
                          "vatNumber",
                          "addressLine1",
                          "addressLine2",
                          "postalCode",
                          "city",
                          "active"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/get_design": {
      "get": {
        "operationId": "get_design_get",
        "summary": "Lecture. Réglages de marque appliqués aux devis : couleurs, logo, typographie.",
        "description": "Lecture. Réglages de marque appliqués aux devis : couleurs, logo, typographie.\n\nPortée requise : `read`.",
        "tags": [
          "design"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "anyOf": [
                        {
                          "type": "null"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "logo_url": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "logo_path": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "primary_color": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "secondary_color": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "primary_foreground": {
                              "type": "string"
                            },
                            "secondary_foreground": {
                              "type": "string"
                            },
                            "updated_at": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "logo_url",
                            "logo_path",
                            "primary_color",
                            "secondary_color",
                            "primary_foreground",
                            "secondary_foreground",
                            "updated_at"
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "get_design",
        "summary": "Lecture. Réglages de marque appliqués aux devis : couleurs, logo, typographie.",
        "description": "Lecture. Réglages de marque appliqués aux devis : couleurs, logo, typographie.\n\nPortée requise : `read`.",
        "tags": [
          "design"
        ],
        "x-required-scope": "read",
        "x-level": "read",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "anyOf": [
                        {
                          "type": "null"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "logo_url": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "logo_path": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "primary_color": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "secondary_color": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "primary_foreground": {
                              "type": "string"
                            },
                            "secondary_foreground": {
                              "type": "string"
                            },
                            "updated_at": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "logo_url",
                            "logo_path",
                            "primary_color",
                            "secondary_color",
                            "primary_foreground",
                            "secondary_foreground",
                            "updated_at"
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/upsert_design": {
      "post": {
        "operationId": "upsert_design",
        "summary": "Écriture. Enregistre les réglages de marque appliqués aux devis.",
        "description": "Écriture. Enregistre les réglages de marque appliqués aux devis.\n\nPortée requise : `write`.",
        "tags": [
          "design"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "primary_color": {
                    "type": "string"
                  },
                  "secondary_color": {
                    "type": "string"
                  },
                  "primary_foreground": {
                    "type": "string",
                    "enum": [
                      "cream",
                      "ink"
                    ],
                    "default": "cream"
                  },
                  "secondary_foreground": {
                    "type": "string",
                    "enum": [
                      "cream",
                      "ink"
                    ],
                    "default": "cream"
                  }
                },
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "logo_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "logo_path": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "primary_color": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "secondary_color": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "primary_foreground": {
                          "type": "string"
                        },
                        "secondary_foreground": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "logo_url",
                        "logo_path",
                        "primary_color",
                        "secondary_color",
                        "primary_foreground",
                        "secondary_foreground",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/upload_design_logo": {
      "post": {
        "operationId": "upload_design_logo",
        "summary": "Écriture. Remplace le logo de la marque. L'image est attendue en data URL complète, ce qui la rend peu commode depuis un assistant.",
        "description": "Écriture. Remplace le logo de la marque. L'image est attendue en data URL complète, ce qui la rend peu commode depuis un assistant.\n\nPortée requise : `write`.",
        "tags": [
          "design"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "dataUrl": {
                    "type": "string"
                  }
                },
                "required": [
                  "dataUrl"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "logo_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "logo_path": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "primary_color": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "secondary_color": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "primary_foreground": {
                          "type": "string"
                        },
                        "secondary_foreground": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "logo_url",
                        "logo_path",
                        "primary_color",
                        "secondary_color",
                        "primary_foreground",
                        "secondary_foreground",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/remove_design_logo": {
      "post": {
        "operationId": "remove_design_logo",
        "summary": "Écriture. Retire le logo de la marque.",
        "description": "Écriture. Retire le logo de la marque.\n\nPortée requise : `write`.",
        "tags": [
          "design"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "logo_url": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "logo_path": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "primary_color": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "secondary_color": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "primary_foreground": {
                          "type": "string"
                        },
                        "secondary_foreground": {
                          "type": "string"
                        },
                        "updated_at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "logo_url",
                        "logo_path",
                        "primary_color",
                        "secondary_color",
                        "primary_foreground",
                        "secondary_foreground",
                        "updated_at"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/upload_editor_image": {
      "post": {
        "operationId": "upload_editor_image",
        "summary": "Écriture. Dépose une image à poser dans une description de tâche, un corps de note ou un message de fil, et rend son identifiant : l'écrire dans le texte se fait ensuite en Markdown, sous l'adresse /api/images/<id>. L'image est attendue en data URL complète, ce qui la rend peu commode depuis un assistant.",
        "description": "Écriture. Dépose une image à poser dans une description de tâche, un corps de note ou un message de fil, et rend son identifiant : l'écrire dans le texte se fait ensuite en Markdown, sous l'adresse /api/images/<id>. L'image est attendue en data URL complète, ce qui la rend peu commode depuis un assistant.\n\nPortée requise : `write`.",
        "tags": [
          "editor-images"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "data_url": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 6000000
                  },
                  "width": {
                    "type": "integer",
                    "exclusiveMinimum": 0,
                    "maximum": 100000
                  },
                  "height": {
                    "type": "integer",
                    "exclusiveMinimum": 0,
                    "maximum": 100000
                  }
                },
                "required": [
                  "data_url"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "width": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "height": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "width",
                        "height"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/confirm_editor_file_upload": {
      "post": {
        "operationId": "confirm_editor_file_upload",
        "summary": "Écriture. Termine le dépôt d'une pièce jointe commencé ailleurs : relit la taille dans le stockage, puis rend le nom et l'identifiant du fichier. On l'écrit ensuite dans le texte sous la forme d'un lien Markdown, [nom](attachment:<id>). En pratique il reste inutilisable ici : l'envoi lui-même demande une autorisation d'écriture qui n'est pas publiée (voir prepareEditorFileUpload).",
        "description": "Écriture. Termine le dépôt d'une pièce jointe commencé ailleurs : relit la taille dans le stockage, puis rend le nom et l'identifiant du fichier. On l'écrit ensuite dans le texte sous la forme d'un lien Markdown, [nom](attachment:<id>). En pratique il reste inutilisable ici : l'envoi lui-même demande une autorisation d'écriture qui n'est pas publiée (voir prepareEditorFileUpload).\n\nPortée requise : `write`.",
        "tags": [
          "editor-files"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "file_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "file_id"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "mimeType": {
                          "type": "string"
                        },
                        "sizeBytes": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "id",
                        "name",
                        "mimeType",
                        "sizeBytes"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/translate_subject": {
      "post": {
        "operationId": "translate_subject",
        "summary": "Écriture. Traduit le titre et le texte d'une note, d'une tâche, d'une réunion (son compte rendu, jamais son transcript) ou d'un contenu de publication, dans l'une des quatre langues fr, en, es, de. Rien n'est réécrit : l'original reste tel quel. L'issue vaut réponse : « translated » avec le texte, « empty » s'il n'y a rien à traduire, « unavailable » si aucun modèle n'est configuré, « failed » si la traduction n'a pas abouti.",
        "description": "Écriture. Traduit le titre et le texte d'une note, d'une tâche, d'une réunion (son compte rendu, jamais son transcript) ou d'un contenu de publication, dans l'une des quatre langues fr, en, es, de. Rien n'est réécrit : l'original reste tel quel. L'issue vaut réponse : « translated » avec le texte, « empty » s'il n'y a rien à traduire, « unavailable » si aucun modèle n'est configuré, « failed » si la traduction n'a pas abouti.\n\nPortée requise : `write`.",
        "tags": [
          "translation"
        ],
        "x-required-scope": "write",
        "x-level": "write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "subject": {
                    "type": "string",
                    "enum": [
                      "note",
                      "task",
                      "meeting",
                      "social_content"
                    ]
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "locale": {
                    "type": "string",
                    "enum": [
                      "fr",
                      "en",
                      "es",
                      "de"
                    ]
                  }
                },
                "required": [
                  "subject",
                  "id",
                  "locale"
                ],
                "additionalProperties": false,
                "$schema": "http://json-schema.org/draft-07/schema#"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Le geste a été exécuté.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "outcome": {
                              "const": "translated"
                            },
                            "title": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "body": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "cached": {
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "outcome",
                            "title",
                            "body",
                            "cached"
                          ]
                        },
                        {
                          "type": "object",
                          "properties": {
                            "outcome": {
                              "const": "empty"
                            }
                          },
                          "required": [
                            "outcome"
                          ]
                        },
                        {
                          "type": "object",
                          "properties": {
                            "outcome": {
                              "const": "already"
                            }
                          },
                          "required": [
                            "outcome"
                          ]
                        },
                        {
                          "type": "object",
                          "properties": {
                            "outcome": {
                              "const": "unavailable"
                            }
                          },
                          "required": [
                            "outcome"
                          ]
                        },
                        {
                          "type": "object",
                          "properties": {
                            "outcome": {
                              "const": "failed"
                            }
                          },
                          "required": [
                            "outcome"
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/Refused"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Clé d'API publique, créée depuis /admin/integrations."
      },
      "apiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Api-Key",
        "description": "La même clé, pour les outils qui ne savent poser qu'un en-tête nommé."
      }
    },
    "schemas": {
      "JsonValue": {
        "type": "object",
        "additionalProperties": {
          "anyOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            },
            {
              "type": "number"
            },
            {
              "const": false
            },
            {
              "const": true
            },
            {
              "$ref": "#/components/schemas/JsonValue"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Json"
              }
            }
          ]
        }
      },
      "Json": {
        "anyOf": [
          {
            "type": "null"
          },
          {
            "type": "string"
          },
          {
            "type": "number"
          },
          {
            "const": false
          },
          {
            "const": true
          },
          {
            "$ref": "#/components/schemas/JsonValue"
          },
          {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Json"
            }
          }
        ]
      },
      "Error": {
        "type": "object",
        "required": [
          "error",
          "message"
        ],
        "properties": {
          "error": {
            "type": "string",
            "enum": [
              "missing_api_key",
              "invalid_api_key",
              "revoked_api_key",
              "expired_api_key",
              "not_admin",
              "missing_scope",
              "unknown_endpoint",
              "method_not_allowed",
              "invalid_json",
              "invalid_query",
              "invalid_payload",
              "refused",
              "payload_too_large",
              "rate_limited",
              "server_error"
            ],
            "description": "Code stable du refus. C'est lui qui se teste, jamais le message."
          },
          "message": {
            "type": "string",
            "description": "Ce qui s'est passé, en clair."
          },
          "issues": {
            "type": "array",
            "description": "Présent sur `invalid_payload` : le détail, champ par champ.",
            "items": {
              "type": "object",
              "properties": {
                "field": {
                  "type": "string"
                },
                "message": {
                  "type": "string"
                }
              }
            }
          },
          "accepted": {
            "type": "array",
            "description": "Présent sur `invalid_payload` : les champs que ce point d'entrée accepte.",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    "responses": {
      "BadRequest": {
        "description": "Requête mal formée ou paramètres refusés.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "examples": {
              "invalid_json": {
                "value": {
                  "error": "invalid_json",
                  "message": "Corps de requête JSON attendu."
                }
              },
              "invalid_query": {
                "value": {
                  "error": "invalid_query",
                  "message": "Paramètres de requête illisibles."
                }
              },
              "invalid_payload": {
                "value": {
                  "error": "invalid_payload",
                  "message": "Paramètres refusés."
                }
              }
            }
          }
        }
      },
      "Unauthorized": {
        "description": "Clé absente, inconnue, révoquée ou expirée.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "examples": {
              "missing_api_key": {
                "value": {
                  "error": "missing_api_key",
                  "message": "Clé absente. Présenter la clé dans l'en-tête « Authorization: Bearer <clé> » ou « X-Api-Key: <clé> »."
                }
              },
              "invalid_api_key": {
                "value": {
                  "error": "invalid_api_key",
                  "message": "Clé inconnue."
                }
              },
              "revoked_api_key": {
                "value": {
                  "error": "revoked_api_key",
                  "message": "Clé révoquée."
                }
              },
              "expired_api_key": {
                "value": {
                  "error": "expired_api_key",
                  "message": "Clé expirée. En créer une nouvelle depuis l'espace d'administration."
                }
              }
            }
          }
        }
      },
      "Forbidden": {
        "description": "Portée insuffisante, ou compte qui n'est plus administrateur.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "examples": {
              "not_admin": {
                "value": {
                  "error": "not_admin",
                  "message": "Le compte auquel cette clé appartient n'est plus administrateur."
                }
              },
              "missing_scope": {
                "value": {
                  "error": "missing_scope",
                  "message": "La clé ne porte pas la portée exigée par ce point d'entrée."
                }
              }
            }
          }
        }
      },
      "Refused": {
        "description": "Le geste a été refusé pour une raison métier.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "examples": {
              "refused": {
                "value": {
                  "error": "refused",
                  "message": "Le geste a été refusé."
                }
              }
            }
          }
        }
      },
      "RateLimited": {
        "description": "Plafond d'appels atteint pour cette clé et ce niveau de geste.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "examples": {
              "rate_limited": {
                "value": {
                  "error": "rate_limited",
                  "message": "Trop d'appels pour cette clé. Réessayer après le délai indiqué par « Retry-After »."
                }
              }
            }
          }
        }
      },
      "PayloadTooLarge": {
        "description": "Corps de requête au-delà de la limite.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "examples": {
              "payload_too_large": {
                "value": {
                  "error": "payload_too_large",
                  "message": "Corps de requête trop volumineux."
                }
              }
            }
          }
        }
      },
      "ServerError": {
        "description": "Erreur inattendue.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "examples": {
              "server_error": {
                "value": {
                  "error": "server_error",
                  "message": "Erreur inattendue."
                }
              }
            }
          }
        }
      }
    }
  },
  "externalDocs": {
    "description": "Documentation pour les développeurs",
    "url": "https://nokimind.com/developpeurs"
  },
  "x-api-base": "/api/v1"
}