{
    "openapi": "3.1.0",
    "info": {
        "title": "Nido",
        "version": "0.0.1"
    },
    "servers": [
        {
            "url": "https:\/\/prod-nido.javierqm.es\/api"
        }
    ],
    "security": [
        {
            "http": []
        }
    ],
    "paths": {
        "\/v1\/families\/{family}\/assistant\/interpret": {
            "post": {
                "operationId": "assistant.interpret",
                "summary": "Interpreta la conversaci\u00f3n de voz y devuelve la intenci\u00f3n estructurada\n(crear episodio\/hito o pedir aclaraci\u00f3n). No persiste nada: la app crea\nel registro v\u00eda sync con el member_id resuelto aqu\u00ed",
                "tags": [
                    "Assistant"
                ],
                "parameters": [
                    {
                        "name": "family",
                        "in": "path",
                        "required": true,
                        "description": "The family ID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/InterpretAssistantRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "const": "clarify"
                                        },
                                        "entity": {},
                                        "member_id": {},
                                        "title": {},
                                        "date": {},
                                        "time": {},
                                        "severity": {},
                                        "symptoms": {
                                            "type": "array",
                                            "items": {}
                                        },
                                        "description": {},
                                        "message": {}
                                    },
                                    "required": [
                                        "status",
                                        "entity",
                                        "member_id",
                                        "title",
                                        "date",
                                        "time",
                                        "severity",
                                        "symptoms",
                                        "description",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "503": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "const": "El asistente no est\u00e1 disponible ahora mismo. Int\u00e9ntalo de nuevo en un momento."
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/v1\/auth\/register": {
            "post": {
                "operationId": "auth.register",
                "summary": "Registrar un usuario y emitir un token de API",
                "tags": [
                    "Auth"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/RegisterRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "token": {
                                            "type": "string"
                                        },
                                        "user": {
                                            "$ref": "#\/components\/schemas\/UserResource"
                                        }
                                    },
                                    "required": [
                                        "token",
                                        "user"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/v1\/auth\/login": {
            "post": {
                "operationId": "auth.login",
                "summary": "Iniciar sesion y emitir un token de API",
                "tags": [
                    "Auth"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/LoginRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "token": {
                                            "type": "string"
                                        },
                                        "user": {
                                            "$ref": "#\/components\/schemas\/UserResource"
                                        }
                                    },
                                    "required": [
                                        "token",
                                        "user"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/v1\/auth\/google": {
            "post": {
                "operationId": "auth.googleLogin",
                "description": "Busca al usuario por google_id o email (vinculacion automatica: Google ya\nverifica el email). Si no existe, lo crea con una contrasena aleatoria.",
                "summary": "Iniciar sesion con Google verificando el ID token y emitir un token de API",
                "tags": [
                    "Auth"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/GoogleLoginRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "token": {
                                            "type": "string"
                                        },
                                        "user": {
                                            "$ref": "#\/components\/schemas\/UserResource"
                                        }
                                    },
                                    "required": [
                                        "token",
                                        "user"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/v1\/auth\/logout": {
            "post": {
                "operationId": "auth.logout",
                "summary": "Revocar el token actual",
                "tags": [
                    "Auth"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "const": "Sesion cerrada."
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/v1\/auth\/me": {
            "get": {
                "operationId": "auth.me",
                "summary": "Usuario autenticado con sus familias",
                "tags": [
                    "Auth"
                ],
                "responses": {
                    "200": {
                        "description": "`UserResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/UserResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/v1\/families\/{family}\/calendar": {
            "get": {
                "operationId": "calendar.index",
                "summary": "Proyeccion de calendario: citas, episodios, hitos, diario y\ncumpleanos en un rango, filtrable por tags y por miembro",
                "tags": [
                    "Calendar"
                ],
                "parameters": [
                    {
                        "name": "family",
                        "in": "path",
                        "required": true,
                        "description": "The family ID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date-time"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date-time"
                        }
                    },
                    {
                        "name": "tags[]",
                        "in": "query",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    {
                        "name": "member_id",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/v1\/families\/{family}\/diary-entries": {
            "get": {
                "operationId": "diaryEntry.index",
                "summary": "Entradas de diario de la familia",
                "tags": [
                    "DiaryEntry"
                ],
                "parameters": [
                    {
                        "name": "family",
                        "in": "path",
                        "required": true,
                        "description": "The family ID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "member_id",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `DiaryEntryResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/DiaryEntryResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "diaryEntry.store",
                "summary": "Escribir una entrada de diario",
                "tags": [
                    "DiaryEntry"
                ],
                "parameters": [
                    {
                        "name": "family",
                        "in": "path",
                        "required": true,
                        "description": "The family ID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreDiaryEntryRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`DiaryEntryResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/DiaryEntryResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/v1\/diary-entries\/{entry}": {
            "get": {
                "operationId": "diaryEntry.show",
                "summary": "Detalle de una entrada",
                "tags": [
                    "DiaryEntry"
                ],
                "parameters": [
                    {
                        "name": "entry",
                        "in": "path",
                        "required": true,
                        "description": "The entry ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`DiaryEntryResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/DiaryEntryResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "put": {
                "operationId": "diaryEntry.update",
                "summary": "Actualizar una entrada de diario",
                "tags": [
                    "DiaryEntry"
                ],
                "parameters": [
                    {
                        "name": "entry",
                        "in": "path",
                        "required": true,
                        "description": "The entry ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateDiaryEntryRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`DiaryEntryResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/DiaryEntryResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "delete": {
                "operationId": "diaryEntry.destroy",
                "summary": "Eliminar (soft delete) una entrada",
                "tags": [
                    "DiaryEntry"
                ],
                "parameters": [
                    {
                        "name": "entry",
                        "in": "path",
                        "required": true,
                        "description": "The entry ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No content"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/v1\/families\/{family}\/documents": {
            "get": {
                "operationId": "document.index",
                "summary": "Documentos de la familia, filtrables por miembro o entidad",
                "tags": [
                    "Document"
                ],
                "parameters": [
                    {
                        "name": "family",
                        "in": "path",
                        "required": true,
                        "description": "The family ID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "member_id",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "documentable_type",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "documentable_id",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `DocumentResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/DocumentResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "document.store",
                "summary": "Subir un documento (multipart) asociado a un miembro o a una entidad",
                "tags": [
                    "Document"
                ],
                "parameters": [
                    {
                        "name": "family",
                        "in": "path",
                        "required": true,
                        "description": "The family ID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart\/form-data": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreDocumentRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`DocumentResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/DocumentResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/v1\/documents\/{document}\/download-url": {
            "get": {
                "operationId": "document.downloadUrl",
                "summary": "URL firmada temporal (15 min) para descargar el binario",
                "tags": [
                    "Document"
                ],
                "parameters": [
                    {
                        "name": "document",
                        "in": "path",
                        "required": true,
                        "description": "The document ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "url": {
                                            "type": "string"
                                        },
                                        "expires_in_seconds": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "url",
                                        "expires_in_seconds"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/v1\/documents\/{document}": {
            "delete": {
                "operationId": "document.destroy",
                "summary": "Eliminar un documento (soft delete; el binario se conserva\nhasta el borrado definitivo)",
                "tags": [
                    "Document"
                ],
                "parameters": [
                    {
                        "name": "document",
                        "in": "path",
                        "required": true,
                        "description": "The document ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No content"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/v1\/families": {
            "get": {
                "operationId": "family.index",
                "summary": "Familias del usuario autenticado",
                "tags": [
                    "Family"
                ],
                "responses": {
                    "200": {
                        "description": "Array of `FamilyResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/FamilyResource"
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "family.store",
                "summary": "Crear una familia; el creador queda como owner",
                "tags": [
                    "Family"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreFamilyRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`FamilyResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/FamilyResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/v1\/families\/{family}": {
            "get": {
                "operationId": "family.show",
                "summary": "Detalle de una familia con sus miembros",
                "tags": [
                    "Family"
                ],
                "parameters": [
                    {
                        "name": "family",
                        "in": "path",
                        "required": true,
                        "description": "The family ID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`FamilyResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/FamilyResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "put": {
                "operationId": "family.update",
                "summary": "Renombrar la familia (solo owner)",
                "tags": [
                    "Family"
                ],
                "parameters": [
                    {
                        "name": "family",
                        "in": "path",
                        "required": true,
                        "description": "The family ID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateFamilyRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`FamilyResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/FamilyResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/v1\/families\/{family}\/members": {
            "get": {
                "operationId": "familyMember.index",
                "summary": "Miembros de la familia",
                "tags": [
                    "FamilyMember"
                ],
                "parameters": [
                    {
                        "name": "family",
                        "in": "path",
                        "required": true,
                        "description": "The family ID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Array of `FamilyMemberResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/FamilyMemberResource"
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "familyMember.store",
                "summary": "Crear un perfil de miembro (nino, abuelo... no necesita ser usuario)",
                "tags": [
                    "FamilyMember"
                ],
                "parameters": [
                    {
                        "name": "family",
                        "in": "path",
                        "required": true,
                        "description": "The family ID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreFamilyMemberRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`FamilyMemberResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/FamilyMemberResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/v1\/members\/{member}": {
            "get": {
                "operationId": "familyMember.show",
                "summary": "Ficha de un miembro",
                "tags": [
                    "FamilyMember"
                ],
                "parameters": [
                    {
                        "name": "member",
                        "in": "path",
                        "required": true,
                        "description": "The member ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`FamilyMemberResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/FamilyMemberResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "put": {
                "operationId": "familyMember.update",
                "summary": "Actualizar la ficha de un miembro",
                "tags": [
                    "FamilyMember"
                ],
                "parameters": [
                    {
                        "name": "member",
                        "in": "path",
                        "required": true,
                        "description": "The member ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateFamilyMemberRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`FamilyMemberResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/FamilyMemberResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            },
            "delete": {
                "operationId": "familyMember.destroy",
                "summary": "Eliminar (soft delete) un miembro",
                "tags": [
                    "FamilyMember"
                ],
                "parameters": [
                    {
                        "name": "member",
                        "in": "path",
                        "required": true,
                        "description": "The member ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No content"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/v1\/members\/{member}\/claim": {
            "post": {
                "operationId": "familyMember.claim",
                "summary": "Vincular el usuario autenticado a este perfil de miembro",
                "tags": [
                    "FamilyMember"
                ],
                "parameters": [
                    {
                        "name": "member",
                        "in": "path",
                        "required": true,
                        "description": "The member ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`FamilyMemberResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/FamilyMemberResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "An error",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Error overview.",
                                            "example": "Este miembro ya est\u00e1 vinculado a otro usuario."
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/v1\/invitations\/accept": {
            "post": {
                "operationId": "invitation.accept",
                "summary": "Unirse a una familia con un codigo de invitacion",
                "tags": [
                    "Invitation"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/AcceptInvitationRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "family": {
                                            "$ref": "#\/components\/schemas\/FamilyResource"
                                        }
                                    },
                                    "required": [
                                        "family"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/v1\/families\/{family}\/invitations": {
            "post": {
                "operationId": "invitation.store",
                "summary": "Emitir una invitacion con codigo (solo owner)",
                "tags": [
                    "Invitation"
                ],
                "parameters": [
                    {
                        "name": "family",
                        "in": "path",
                        "required": true,
                        "description": "The family ID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreInvitationRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`InvitationResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/InvitationResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/v1\/families\/{family}\/appointments": {
            "get": {
                "operationId": "medicalAppointment.index",
                "summary": "Citas medicas de la familia, opcionalmente filtradas por miembro",
                "tags": [
                    "MedicalAppointment"
                ],
                "parameters": [
                    {
                        "name": "family",
                        "in": "path",
                        "required": true,
                        "description": "The family ID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "member_id",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `MedicalAppointmentResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/MedicalAppointmentResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "medicalAppointment.store",
                "summary": "Crear una cita medica",
                "tags": [
                    "MedicalAppointment"
                ],
                "parameters": [
                    {
                        "name": "family",
                        "in": "path",
                        "required": true,
                        "description": "The family ID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreMedicalAppointmentRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`MedicalAppointmentResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/MedicalAppointmentResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/v1\/appointments\/{appointment}": {
            "get": {
                "operationId": "medicalAppointment.show",
                "summary": "Detalle de una cita con documentos y tags",
                "tags": [
                    "MedicalAppointment"
                ],
                "parameters": [
                    {
                        "name": "appointment",
                        "in": "path",
                        "required": true,
                        "description": "The appointment ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`MedicalAppointmentResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/MedicalAppointmentResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "put": {
                "operationId": "medicalAppointment.update",
                "summary": "Actualizar una cita (estado, resumen post-visita...)",
                "tags": [
                    "MedicalAppointment"
                ],
                "parameters": [
                    {
                        "name": "appointment",
                        "in": "path",
                        "required": true,
                        "description": "The appointment ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateMedicalAppointmentRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`MedicalAppointmentResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/MedicalAppointmentResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "delete": {
                "operationId": "medicalAppointment.destroy",
                "summary": "Eliminar (soft delete) una cita",
                "tags": [
                    "MedicalAppointment"
                ],
                "parameters": [
                    {
                        "name": "appointment",
                        "in": "path",
                        "required": true,
                        "description": "The appointment ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No content"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/v1\/families\/{family}\/milestones": {
            "get": {
                "operationId": "milestone.index",
                "summary": "Hitos de la familia (\"primer diente\", \"dice papa\"...)",
                "tags": [
                    "Milestone"
                ],
                "parameters": [
                    {
                        "name": "family",
                        "in": "path",
                        "required": true,
                        "description": "The family ID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "member_id",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `MilestoneResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/MilestoneResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "milestone.store",
                "summary": "Registrar un hito",
                "tags": [
                    "Milestone"
                ],
                "parameters": [
                    {
                        "name": "family",
                        "in": "path",
                        "required": true,
                        "description": "The family ID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreMilestoneRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`MilestoneResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/MilestoneResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/v1\/milestones\/{milestone}": {
            "get": {
                "operationId": "milestone.show",
                "summary": "Detalle de un hito",
                "tags": [
                    "Milestone"
                ],
                "parameters": [
                    {
                        "name": "milestone",
                        "in": "path",
                        "required": true,
                        "description": "The milestone ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`MilestoneResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/MilestoneResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "put": {
                "operationId": "milestone.update",
                "summary": "Actualizar un hito",
                "tags": [
                    "Milestone"
                ],
                "parameters": [
                    {
                        "name": "milestone",
                        "in": "path",
                        "required": true,
                        "description": "The milestone ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateMilestoneRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`MilestoneResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/MilestoneResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "delete": {
                "operationId": "milestone.destroy",
                "summary": "Eliminar (soft delete) un hito",
                "tags": [
                    "Milestone"
                ],
                "parameters": [
                    {
                        "name": "milestone",
                        "in": "path",
                        "required": true,
                        "description": "The milestone ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No content"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/v1\/families\/{family}\/episodes": {
            "get": {
                "operationId": "sicknessEpisode.index",
                "summary": "Episodios de enfermedad de la familia",
                "tags": [
                    "SicknessEpisode"
                ],
                "parameters": [
                    {
                        "name": "family",
                        "in": "path",
                        "required": true,
                        "description": "The family ID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "member_id",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "open",
                        "in": "query",
                        "schema": {
                            "type": "boolean",
                            "default": false
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `SicknessEpisodeResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/SicknessEpisodeResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "sicknessEpisode.store",
                "summary": "Registrar que alguien se ha puesto malo",
                "tags": [
                    "SicknessEpisode"
                ],
                "parameters": [
                    {
                        "name": "family",
                        "in": "path",
                        "required": true,
                        "description": "The family ID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreSicknessEpisodeRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`SicknessEpisodeResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/SicknessEpisodeResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/v1\/episodes\/{episode}": {
            "get": {
                "operationId": "sicknessEpisode.show",
                "summary": "Detalle de un episodio con sus citas y documentos",
                "tags": [
                    "SicknessEpisode"
                ],
                "parameters": [
                    {
                        "name": "episode",
                        "in": "path",
                        "required": true,
                        "description": "The episode ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`SicknessEpisodeResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/SicknessEpisodeResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "put": {
                "operationId": "sicknessEpisode.update",
                "summary": "Actualizar un episodio (p. ej. cerrar con fecha de fin)",
                "tags": [
                    "SicknessEpisode"
                ],
                "parameters": [
                    {
                        "name": "episode",
                        "in": "path",
                        "required": true,
                        "description": "The episode ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateSicknessEpisodeRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`SicknessEpisodeResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/SicknessEpisodeResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "delete": {
                "operationId": "sicknessEpisode.destroy",
                "summary": "Eliminar (soft delete) un episodio",
                "tags": [
                    "SicknessEpisode"
                ],
                "parameters": [
                    {
                        "name": "episode",
                        "in": "path",
                        "required": true,
                        "description": "The episode ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No content"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/v1\/families\/{family}\/sync\/pull": {
            "get": {
                "operationId": "sync.pull",
                "summary": "Pull incremental: cambios de la familia con server_seq > since,\nincluidas filas borradas (soft delete), agrupados por entidad",
                "tags": [
                    "Sync"
                ],
                "parameters": [
                    {
                        "name": "family",
                        "in": "path",
                        "required": true,
                        "description": "The family ID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "since",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 500
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "changes": {
                                            "type": "string"
                                        },
                                        "next_cursor": {
                                            "type": "integer"
                                        },
                                        "has_more": {
                                            "type": "boolean"
                                        }
                                    },
                                    "required": [
                                        "changes",
                                        "next_cursor",
                                        "has_more"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/v1\/families\/{family}\/sync\/push": {
            "post": {
                "operationId": "sync.push",
                "summary": "Push de mutaciones offline. Idempotente; conflictos por\nlast-write-wins devuelven la fila actual del servidor",
                "tags": [
                    "Sync"
                ],
                "parameters": [
                    {
                        "name": "family",
                        "in": "path",
                        "required": true,
                        "description": "The family ID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/SyncPushRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "results": {
                                            "type": "array",
                                            "items": {
                                                "type": "array",
                                                "items": {}
                                            }
                                        }
                                    },
                                    "required": [
                                        "results"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/v1\/families\/{family}\/tags": {
            "get": {
                "operationId": "tag.index",
                "summary": "Tags visibles para la familia: los suyos + los de sistema",
                "tags": [
                    "Tag"
                ],
                "parameters": [
                    {
                        "name": "family",
                        "in": "path",
                        "required": true,
                        "description": "The family ID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Array of `TagResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/TagResource"
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "tag.store",
                "summary": "Crear un tag propio de la familia",
                "tags": [
                    "Tag"
                ],
                "parameters": [
                    {
                        "name": "family",
                        "in": "path",
                        "required": true,
                        "description": "The family ID",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreTagRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`TagResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/TagResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/v1\/tags\/{tag}": {
            "put": {
                "operationId": "tag.update",
                "summary": "Renombrar o recolorear un tag propio (los de sistema son inmutables)",
                "tags": [
                    "Tag"
                ],
                "parameters": [
                    {
                        "name": "tag",
                        "in": "path",
                        "required": true,
                        "description": "The tag ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateTagRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`TagResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/TagResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            },
            "delete": {
                "operationId": "tag.destroy",
                "summary": "Eliminar un tag propio",
                "tags": [
                    "Tag"
                ],
                "parameters": [
                    {
                        "name": "tag",
                        "in": "path",
                        "required": true,
                        "description": "The tag ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No content"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "http": {
                "type": "http",
                "scheme": "bearer"
            }
        },
        "schemas": {
            "AcceptInvitationRequest": {
                "type": "object",
                "properties": {
                    "code": {
                        "type": "string",
                        "minLength": 8,
                        "maxLength": 8
                    }
                },
                "required": [
                    "code"
                ],
                "title": "AcceptInvitationRequest"
            },
            "AppointmentStatus": {
                "type": "string",
                "enum": [
                    "scheduled",
                    "done",
                    "cancelled"
                ],
                "title": "AppointmentStatus"
            },
            "DiaryEntryResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "family_id": {
                        "type": "string"
                    },
                    "author_id": {
                        "type": "string"
                    },
                    "entry_date": {
                        "type": "string"
                    },
                    "title": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "body": {
                        "type": "string"
                    },
                    "mood": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "member_ids": {
                        "type": "object",
                        "additionalProperties": {}
                    },
                    "tag_ids": {
                        "type": "object",
                        "additionalProperties": {}
                    },
                    "server_seq": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "deleted_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    }
                },
                "required": [
                    "id",
                    "family_id",
                    "author_id",
                    "entry_date",
                    "title",
                    "body",
                    "mood",
                    "member_ids",
                    "tag_ids",
                    "server_seq",
                    "created_at",
                    "updated_at",
                    "deleted_at"
                ],
                "title": "DiaryEntryResource"
            },
            "DocumentResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "family_id": {
                        "type": "string"
                    },
                    "family_member_id": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "documentable_type": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "documentable_id": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "uploaded_by": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "original_name": {
                        "type": "string"
                    },
                    "mime_type": {
                        "type": "string"
                    },
                    "size_bytes": {
                        "type": "integer"
                    },
                    "storage_path": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "checksum_sha256": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "taken_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "extraction_status": {
                        "$ref": "#\/components\/schemas\/ExtractionStatus"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/TagResource"
                        }
                    },
                    "tag_ids": {
                        "type": "object",
                        "additionalProperties": {}
                    },
                    "server_seq": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "deleted_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    }
                },
                "required": [
                    "id",
                    "family_id",
                    "family_member_id",
                    "documentable_type",
                    "documentable_id",
                    "uploaded_by",
                    "original_name",
                    "mime_type",
                    "size_bytes",
                    "storage_path",
                    "checksum_sha256",
                    "taken_at",
                    "extraction_status",
                    "tag_ids",
                    "server_seq",
                    "created_at",
                    "updated_at",
                    "deleted_at"
                ],
                "title": "DocumentResource"
            },
            "ExtractionStatus": {
                "type": "string",
                "description": "Estado del pipeline de extraccion de texto de documentos. En v1 todo documento queda en `none`; la v2 (OCR\/parse PDF) lo movera a pending -> done para alimentar las funciones de IA.\n",
                "enum": [
                    "none",
                    "pending",
                    "done"
                ],
                "title": "ExtractionStatus"
            },
            "FamilyMemberResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "family_id": {
                        "type": "string"
                    },
                    "user_id": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "name": {
                        "type": "string"
                    },
                    "birth_date": {
                        "type": "string"
                    },
                    "gender": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "blood_type": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "allergies": {
                        "type": "array",
                        "items": {}
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "color": {
                        "type": "string"
                    },
                    "avatar_document_id": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "server_seq": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "deleted_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    }
                },
                "required": [
                    "id",
                    "family_id",
                    "user_id",
                    "name",
                    "birth_date",
                    "gender",
                    "blood_type",
                    "allergies",
                    "notes",
                    "color",
                    "avatar_document_id",
                    "server_seq",
                    "created_at",
                    "updated_at",
                    "deleted_at"
                ],
                "title": "FamilyMemberResource"
            },
            "FamilyResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "created_by": {
                        "type": "string"
                    },
                    "role": {
                        "type": "string"
                    },
                    "members": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/FamilyMemberResource"
                        }
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    }
                },
                "required": [
                    "id",
                    "name",
                    "created_by",
                    "created_at",
                    "updated_at"
                ],
                "title": "FamilyResource"
            },
            "FamilyRole": {
                "type": "string",
                "enum": [
                    "owner",
                    "adult"
                ],
                "title": "FamilyRole"
            },
            "GoogleLoginRequest": {
                "type": "object",
                "properties": {
                    "id_token": {
                        "type": "string"
                    },
                    "device_name": {
                        "type": "string",
                        "maxLength": 100
                    }
                },
                "required": [
                    "id_token",
                    "device_name"
                ],
                "title": "GoogleLoginRequest"
            },
            "InterpretAssistantRequest": {
                "type": "object",
                "properties": {
                    "messages": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "role": {
                                    "type": "string",
                                    "enum": [
                                        "user",
                                        "assistant"
                                    ]
                                },
                                "content": {
                                    "type": "string",
                                    "maxLength": 2000
                                }
                            },
                            "required": [
                                "role",
                                "content"
                            ]
                        },
                        "minItems": 1,
                        "maxItems": 20
                    }
                },
                "required": [
                    "messages"
                ],
                "title": "InterpretAssistantRequest"
            },
            "InvitationResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "family_id": {
                        "type": "string"
                    },
                    "email": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "code": {
                        "type": "string"
                    },
                    "role": {
                        "type": "string"
                    },
                    "expires_at": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "accepted_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    }
                },
                "required": [
                    "id",
                    "family_id",
                    "email",
                    "code",
                    "role",
                    "expires_at",
                    "accepted_at",
                    "created_at"
                ],
                "title": "InvitationResource"
            },
            "LoginRequest": {
                "type": "object",
                "properties": {
                    "email": {
                        "type": "string",
                        "format": "email"
                    },
                    "password": {
                        "type": "string"
                    },
                    "device_name": {
                        "type": "string",
                        "maxLength": 100
                    }
                },
                "required": [
                    "email",
                    "password",
                    "device_name"
                ],
                "title": "LoginRequest"
            },
            "MedicalAppointmentResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "family_id": {
                        "type": "string"
                    },
                    "family_member_id": {
                        "type": "string"
                    },
                    "sickness_episode_id": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "title": {
                        "type": "string"
                    },
                    "specialty": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "doctor_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "location": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "scheduled_at": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "status": {
                        "$ref": "#\/components\/schemas\/AppointmentStatus"
                    },
                    "summary": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "tag_ids": {
                        "type": "object",
                        "additionalProperties": {}
                    },
                    "server_seq": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "deleted_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    }
                },
                "required": [
                    "id",
                    "family_id",
                    "family_member_id",
                    "sickness_episode_id",
                    "title",
                    "specialty",
                    "doctor_name",
                    "location",
                    "scheduled_at",
                    "status",
                    "summary",
                    "tag_ids",
                    "server_seq",
                    "created_at",
                    "updated_at",
                    "deleted_at"
                ],
                "title": "MedicalAppointmentResource"
            },
            "MilestoneResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "family_id": {
                        "type": "string"
                    },
                    "family_member_id": {
                        "type": "string"
                    },
                    "title": {
                        "type": "string"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "occurred_on": {
                        "type": "string"
                    },
                    "tag_ids": {
                        "type": "object",
                        "additionalProperties": {}
                    },
                    "server_seq": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "deleted_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    }
                },
                "required": [
                    "id",
                    "family_id",
                    "family_member_id",
                    "title",
                    "description",
                    "occurred_on",
                    "tag_ids",
                    "server_seq",
                    "created_at",
                    "updated_at",
                    "deleted_at"
                ],
                "title": "MilestoneResource"
            },
            "RegisterRequest": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "email": {
                        "type": "string",
                        "format": "email",
                        "maxLength": 255
                    },
                    "password": {
                        "type": "string"
                    },
                    "device_name": {
                        "type": "string",
                        "maxLength": 100
                    },
                    "locale": {
                        "type": "string",
                        "maxLength": 10
                    }
                },
                "required": [
                    "name",
                    "email",
                    "password",
                    "device_name"
                ],
                "title": "RegisterRequest"
            },
            "Severity": {
                "type": "string",
                "enum": [
                    "mild",
                    "moderate",
                    "severe"
                ],
                "title": "Severity"
            },
            "SicknessEpisodeResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "family_id": {
                        "type": "string"
                    },
                    "family_member_id": {
                        "type": "string"
                    },
                    "title": {
                        "type": "string"
                    },
                    "started_on": {
                        "type": "string"
                    },
                    "ended_on": {
                        "type": "string"
                    },
                    "is_open": {
                        "type": "boolean"
                    },
                    "duration_days": {
                        "type": "string"
                    },
                    "symptoms": {
                        "type": "array",
                        "items": {}
                    },
                    "severity": {
                        "anyOf": [
                            {
                                "$ref": "#\/components\/schemas\/Severity"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "tag_ids": {
                        "type": "object",
                        "additionalProperties": {}
                    },
                    "server_seq": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "deleted_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    }
                },
                "required": [
                    "id",
                    "family_id",
                    "family_member_id",
                    "title",
                    "started_on",
                    "ended_on",
                    "is_open",
                    "duration_days",
                    "symptoms",
                    "severity",
                    "notes",
                    "tag_ids",
                    "server_seq",
                    "created_at",
                    "updated_at",
                    "deleted_at"
                ],
                "title": "SicknessEpisodeResource"
            },
            "StoreDiaryEntryRequest": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "entry_date": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "title": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "body": {
                        "type": "string"
                    },
                    "mood": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 30
                    },
                    "member_ids": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    "tag_ids": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                },
                "required": [
                    "entry_date",
                    "body"
                ],
                "title": "StoreDiaryEntryRequest"
            },
            "StoreDocumentRequest": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "file": {
                        "type": "string",
                        "format": "binary",
                        "contentMediaType": "application\/octet-stream",
                        "maxLength": 25600
                    },
                    "family_member_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "uuid",
                        "description": "25 MB"
                    },
                    "documentable_type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "enum": [
                            "appointment",
                            "episode",
                            "milestone",
                            "diary_entry",
                            "member"
                        ]
                    },
                    "documentable_id": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "taken_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "tag_ids": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                },
                "required": [
                    "file"
                ],
                "title": "StoreDocumentRequest"
            },
            "StoreFamilyMemberRequest": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid",
                        "description": "El cliente offline puede traer su propio uuid v7."
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "birth_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "gender": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 20
                    },
                    "blood_type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 5
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "color": {
                        "type": "string",
                        "pattern": "^#[0-9A-Fa-f]{6,8}$"
                    },
                    "avatar_document_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "uuid"
                    },
                    "allergies": {
                        "type": [
                            "array",
                            "null"
                        ],
                        "items": {
                            "type": "string",
                            "maxLength": 100
                        }
                    }
                },
                "required": [
                    "name"
                ],
                "title": "StoreFamilyMemberRequest"
            },
            "StoreFamilyRequest": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    }
                },
                "required": [
                    "name"
                ],
                "title": "StoreFamilyRequest"
            },
            "StoreInvitationRequest": {
                "type": "object",
                "properties": {
                    "email": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "email",
                        "maxLength": 255
                    },
                    "role": {
                        "$ref": "#\/components\/schemas\/FamilyRole"
                    }
                },
                "title": "StoreInvitationRequest"
            },
            "StoreMedicalAppointmentRequest": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "family_member_id": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "sickness_episode_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "uuid"
                    },
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "specialty": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "doctor_name": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "location": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "scheduled_at": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "status": {
                        "$ref": "#\/components\/schemas\/AppointmentStatus"
                    },
                    "summary": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "tag_ids": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                },
                "required": [
                    "family_member_id",
                    "title",
                    "scheduled_at"
                ],
                "title": "StoreMedicalAppointmentRequest"
            },
            "StoreMilestoneRequest": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "family_member_id": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "occurred_on": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "tag_ids": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                },
                "required": [
                    "family_member_id",
                    "title",
                    "occurred_on"
                ],
                "title": "StoreMilestoneRequest"
            },
            "StoreSicknessEpisodeRequest": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "family_member_id": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "started_on": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "ended_on": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "severity": {
                        "$ref": "#\/components\/schemas\/Severity"
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "symptoms": {
                        "type": [
                            "array",
                            "null"
                        ],
                        "items": {
                            "type": "string",
                            "maxLength": 100
                        }
                    },
                    "tag_ids": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                },
                "required": [
                    "family_member_id",
                    "title",
                    "started_on"
                ],
                "title": "StoreSicknessEpisodeRequest"
            },
            "StoreTagRequest": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 50
                    },
                    "slug": {
                        "type": "string",
                        "maxLength": 60
                    },
                    "color": {
                        "type": "string",
                        "pattern": "^#[0-9A-Fa-f]{6,8}$"
                    },
                    "icon": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 50
                    }
                },
                "required": [
                    "name"
                ],
                "title": "StoreTagRequest"
            },
            "SyncPushRequest": {
                "type": "object",
                "properties": {
                    "mutations": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "entity": {
                                    "type": "string",
                                    "enum": [
                                        "member",
                                        "appointment",
                                        "episode",
                                        "milestone",
                                        "diary_entry",
                                        "tag"
                                    ]
                                },
                                "op": {
                                    "type": "string",
                                    "description": "El cliente habla create\/update\/delete; el pusher trata todo lo\nque no es delete como upsert. Aceptamos las tres formas.",
                                    "enum": [
                                        "create",
                                        "update",
                                        "upsert",
                                        "delete"
                                    ]
                                },
                                "id": {
                                    "type": "string",
                                    "format": "uuid"
                                },
                                "data": {
                                    "type": "array",
                                    "items": {
                                        "type": "string"
                                    }
                                },
                                "client_updated_at": {
                                    "type": "string",
                                    "format": "date-time"
                                }
                            },
                            "required": [
                                "entity",
                                "op",
                                "id",
                                "client_updated_at"
                            ]
                        },
                        "minItems": 1,
                        "maxItems": 500
                    }
                },
                "required": [
                    "mutations"
                ],
                "title": "SyncPushRequest"
            },
            "TagResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "family_id": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "name": {
                        "type": "string"
                    },
                    "slug": {
                        "type": "string"
                    },
                    "color": {
                        "type": "string"
                    },
                    "icon": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "is_system": {
                        "type": "boolean"
                    },
                    "server_seq": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "deleted_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    }
                },
                "required": [
                    "id",
                    "family_id",
                    "name",
                    "slug",
                    "color",
                    "icon",
                    "is_system",
                    "server_seq",
                    "created_at",
                    "updated_at",
                    "deleted_at"
                ],
                "title": "TagResource"
            },
            "UpdateDiaryEntryRequest": {
                "type": "object",
                "properties": {
                    "entry_date": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "title": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "body": {
                        "type": "string"
                    },
                    "mood": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 30
                    },
                    "member_ids": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    "tag_ids": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                },
                "title": "UpdateDiaryEntryRequest"
            },
            "UpdateFamilyMemberRequest": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "birth_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "gender": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 20
                    },
                    "blood_type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 5
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "color": {
                        "type": "string",
                        "pattern": "^#[0-9A-Fa-f]{6,8}$"
                    },
                    "avatar_document_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "uuid"
                    },
                    "allergies": {
                        "type": [
                            "array",
                            "null"
                        ],
                        "items": {
                            "type": "string",
                            "maxLength": 100
                        }
                    }
                },
                "title": "UpdateFamilyMemberRequest"
            },
            "UpdateFamilyRequest": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    }
                },
                "required": [
                    "name"
                ],
                "title": "UpdateFamilyRequest"
            },
            "UpdateMedicalAppointmentRequest": {
                "type": "object",
                "properties": {
                    "family_member_id": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "sickness_episode_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "uuid"
                    },
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "specialty": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "doctor_name": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "location": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "scheduled_at": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "status": {
                        "$ref": "#\/components\/schemas\/AppointmentStatus"
                    },
                    "summary": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "tag_ids": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                },
                "title": "UpdateMedicalAppointmentRequest"
            },
            "UpdateMilestoneRequest": {
                "type": "object",
                "properties": {
                    "family_member_id": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "occurred_on": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "tag_ids": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                },
                "title": "UpdateMilestoneRequest"
            },
            "UpdateSicknessEpisodeRequest": {
                "type": "object",
                "properties": {
                    "family_member_id": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "started_on": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "ended_on": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "severity": {
                        "$ref": "#\/components\/schemas\/Severity"
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "symptoms": {
                        "type": [
                            "array",
                            "null"
                        ],
                        "items": {
                            "type": "string",
                            "maxLength": 100
                        }
                    },
                    "tag_ids": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                },
                "title": "UpdateSicknessEpisodeRequest"
            },
            "UpdateTagRequest": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "maxLength": 50
                    },
                    "color": {
                        "type": "string",
                        "pattern": "^#[0-9A-Fa-f]{6,8}$"
                    },
                    "icon": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 50
                    }
                },
                "title": "UpdateTagRequest"
            },
            "UserResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "email": {
                        "type": "string"
                    },
                    "locale": {
                        "type": "string"
                    },
                    "families": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/FamilyResource"
                        }
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    }
                },
                "required": [
                    "id",
                    "name",
                    "email",
                    "locale",
                    "created_at"
                ],
                "title": "UserResource"
            }
        },
        "responses": {
            "ValidationException": {
                "description": "Validation error",
                "content": {
                    "application\/json": {
                        "schema": {
                            "type": "object",
                            "properties": {
                                "message": {
                                    "type": "string",
                                    "description": "Errors overview."
                                },
                                "errors": {
                                    "type": "object",
                                    "description": "A detailed description of each field that failed validation.",
                                    "additionalProperties": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    }
                                }
                            },
                            "required": [
                                "message",
                                "errors"
                            ]
                        }
                    }
                }
            },
            "AuthenticationException": {
                "description": "Unauthenticated",
                "content": {
                    "application\/json": {
                        "schema": {
                            "type": "object",
                            "properties": {
                                "message": {
                                    "type": "string",
                                    "description": "Error overview."
                                }
                            },
                            "required": [
                                "message"
                            ]
                        }
                    }
                }
            },
            "AuthorizationException": {
                "description": "Authorization error",
                "content": {
                    "application\/json": {
                        "schema": {
                            "type": "object",
                            "properties": {
                                "message": {
                                    "type": "string",
                                    "description": "Error overview."
                                }
                            },
                            "required": [
                                "message"
                            ]
                        }
                    }
                }
            },
            "ModelNotFoundException": {
                "description": "Not found",
                "content": {
                    "application\/json": {
                        "schema": {
                            "type": "object",
                            "properties": {
                                "message": {
                                    "type": "string",
                                    "description": "Error overview."
                                }
                            },
                            "required": [
                                "message"
                            ]
                        }
                    }
                }
            }
        }
    }
}