# Listar atribuições de pacientes

## OpenAPI Specification

```yaml
openapi: 3.0.1
info:
  title: ''
  description: ''
  version: 1.0.0
paths:
  /rest/v1/patient_assignments:
    get:
      summary: Listar atribuições de pacientes
      deprecated: false
      description: ''
      tags:
        - Atribuições
        - Atribuições
      parameters:
        - name: apikey
          in: header
          description: Chave da API Supabase
          required: true
          example: ''
          schema:
            type: string
      responses:
        '200':
          description: Lista de atribuições
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PatientAssignment'
          headers: {}
          x-apidog-name: OK
      security:
        - bearer: []
      x-apidog-folder: Atribuições
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1053378/apis/api-21940525-run
components:
  schemas:
    PatientAssignment:
      type: object
      properties:
        id:
          type: string
          format: uuid
          examples:
            - 12345678-1234-1234-1234-123456789012
        patient_id:
          type: string
          format: uuid
          examples:
            - 12345678-1234-1234-1234-123456789012
        user_id:
          type: string
          format: uuid
          examples:
            - 12345678-1234-1234-1234-123456789012
        role:
          type: string
          enum:
            - medico
            - enfermeiro
          examples:
            - medico
        created_at:
          type: string
          format: date-time
          examples:
            - '2024-01-15T10:30:00Z'
        created_by:
          type: string
          format: uuid
          examples:
            - 12345678-1234-1234-1234-123456789012
      x-apidog-orders:
        - id
        - patient_id
        - user_id
        - role
        - created_at
        - created_by
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
  securitySchemes:
    bearerAuth:
      type: jwt
      scheme: bearer
      bearerFormat: JWT
      description: Token JWT obtido no login
    bearer:
      type: http
      scheme: bearer
servers:
  - url: https://yuanqfswhberkoevtmfr.supabase.co
    description: Prod Env
  - url: ''
    description: Cloud Mock
security:
  - bearer: []

```

# Criar nova atribuição

## OpenAPI Specification

```yaml
openapi: 3.0.1
info:
  title: ''
  description: ''
  version: 1.0.0
paths:
  /rest/v1/patient_assignments:
    post:
      summary: Criar nova atribuição
      deprecated: false
      description: ''
      tags:
        - Atribuições
        - Atribuições
      parameters:
        - name: apikey
          in: header
          description: Chave da API Supabase
          required: true
          example: ''
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatientAssignmentInput'
      responses:
        '201':
          description: Atribuição criada
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PatientAssignment'
          headers: {}
          x-apidog-name: Created
      security:
        - bearer: []
      x-apidog-folder: Atribuições
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1053378/apis/api-21940526-run
components:
  schemas:
    PatientAssignmentInput:
      type: object
      required:
        - patient_id
        - user_id
        - role
      properties:
        patient_id:
          type: string
          format: uuid
        user_id:
          type: string
          format: uuid
        role:
          type: string
          enum:
            - medico
            - enfermeiro
      x-apidog-orders:
        - patient_id
        - user_id
        - role
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    PatientAssignment:
      type: object
      properties:
        id:
          type: string
          format: uuid
          examples:
            - 12345678-1234-1234-1234-123456789012
        patient_id:
          type: string
          format: uuid
          examples:
            - 12345678-1234-1234-1234-123456789012
        user_id:
          type: string
          format: uuid
          examples:
            - 12345678-1234-1234-1234-123456789012
        role:
          type: string
          enum:
            - medico
            - enfermeiro
          examples:
            - medico
        created_at:
          type: string
          format: date-time
          examples:
            - '2024-01-15T10:30:00Z'
        created_by:
          type: string
          format: uuid
          examples:
            - 12345678-1234-1234-1234-123456789012
      x-apidog-orders:
        - id
        - patient_id
        - user_id
        - role
        - created_at
        - created_by
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
  securitySchemes:
    bearerAuth:
      type: jwt
      scheme: bearer
      bearerFormat: JWT
      description: Token JWT obtido no login
    bearer:
      type: http
      scheme: bearer
servers:
  - url: https://yuanqfswhberkoevtmfr.supabase.co
    description: Prod Env
  - url: ''
    description: Cloud Mock
security:
  - bearer: []

```

# Listar roles de usuários

## OpenAPI Specification

```yaml
openapi: 3.0.1
info:
  title: ''
  description: ''
  version: 1.0.0
paths:
  /rest/v1/user_roles:
    get:
      summary: Listar roles de usuários
      deprecated: false
      description: ''
      tags:
        - Usuários
        - Usuários
      parameters: []
      responses:
        '200':
          description: Lista de roles
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserRole'
          headers: {}
          x-apidog-name: OK
      security:
        - bearer: []
      x-apidog-folder: Usuários
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1053378/apis/api-21940524-run
components:
  schemas:
    UserRole:
      type: object
      properties:
        id:
          type: string
          format: uuid
          examples:
            - 12345678-1234-1234-1234-123456789012
        user_id:
          type: string
          format: uuid
          examples:
            - 12345678-1234-1234-1234-123456789012
        role:
          type: string
          enum:
            - admin
            - gestor
            - medico
          examples:
            - medico
        created_at:
          type: string
          format: date-time
          examples:
            - '2024-01-15T10:30:00Z'
      x-apidog-orders:
        - id
        - user_id
        - role
        - created_at
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
  securitySchemes:
    bearerAuth:
      type: jwt
      scheme: bearer
      bearerFormat: JWT
      description: Token JWT obtido no login
    bearer:
      type: http
      scheme: bearer
servers:
  - url: https://yuanqfswhberkoevtmfr.supabase.co
    description: Prod Env
  - url: ''
    description: Cloud Mock
security:
  - bearer: []

```

# Obter informações completas do usuário

## OpenAPI Specification

```yaml
openapi: 3.0.1
info:
  title: ''
  description: ''
  version: 1.0.0
paths:
  /functions/v1/user-info:
    get:
      summary: Obter informações completas do usuário
      deprecated: false
      description: >-
        Retorna dados consolidados do usuário autenticado, incluindo perfil e
        roles para controle de permissões.
      tags:
        - Usuários
      parameters: []
      responses:
        '200':
          description: Informações do usuário retornadas com sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserInfoResponse'
          headers: {}
          x-apidog-name: OK
        '401':
          description: Token inválido ou expirado
          content:
            application/json:
              schema: &ref_0
                $ref: '#/components/schemas/Error'
          headers: {}
          x-apidog-name: Unauthorized
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema: *ref_0
          headers: {}
          x-apidog-name: Internal Server Error
      security: []
      x-apidog-folder: Usuários
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1053378/apis/api-21952675-run
components:
  schemas:
    UserInfoResponse:
      type: object
      properties:
        user:
          $ref: '#/components/schemas/User'
        profile:
          $ref: '#/components/schemas/Profile'
        roles:
          type: array
          items:
            type: string
            enum:
              - admin
              - gestor
              - medico
              - secretaria
              - user
          examples:
            - - medico
              - admin
        permissions:
          $ref: '#/components/schemas/Permissions'
      x-apidog-orders:
        - user
        - profile
        - roles
        - permissions
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    Permissions:
      type: object
      properties:
        isAdmin:
          type: boolean
          description: Se o usuário tem role de admin
          examples:
            - true
        isManager:
          type: boolean
          description: Se o usuário tem role de gestor
          examples:
            - false
        isDoctor:
          type: boolean
          description: Se o usuário tem role de médico
          examples:
            - true
        isSecretary:
          type: boolean
          description: Se o usuário tem role de secretária
          examples:
            - false
        isAdminOrManager:
          type: boolean
          description: Se o usuário é admin ou gestor (para controle de permissões)
          examples:
            - true
      x-apidog-orders:
        - isAdmin
        - isManager
        - isDoctor
        - isSecretary
        - isAdminOrManager
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    Profile:
      type: object
      properties:
        id:
          type: string
          format: uuid
        full_name:
          type: string
          examples:
            - Dr. João Silva
          nullable: true
        email:
          type: string
          format: email
          nullable: true
        phone:
          type: string
          examples:
            - '+5511999999999'
          nullable: true
        avatar_url:
          type: string
          format: uri
          nullable: true
        disabled:
          type: boolean
          examples:
            - false
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
      x-apidog-orders:
        - id
        - full_name
        - email
        - phone
        - avatar_url
        - disabled
        - created_at
        - updated_at
      x-apidog-ignore-properties: []
      nullable: true
      x-apidog-folder: ''
    User:
      type: object
      properties:
        id:
          type: string
          format: uuid
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
        email:
          type: string
          format: email
          examples:
            - usuario@exemplo.com
        email_confirmed_at:
          type: string
          format: date-time
          examples:
            - '2024-01-01T10:00:00Z'
          nullable: true
        created_at:
          type: string
          format: date-time
          examples:
            - '2024-01-01T00:00:00Z'
        last_sign_in_at:
          type: string
          format: date-time
          examples:
            - '2024-01-15T09:30:00Z'
          nullable: true
      x-apidog-orders:
        - id
        - email
        - email_confirmed_at
        - created_at
        - last_sign_in_at
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    Error:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
        code:
          type: string
      x-apidog-orders:
        - error
        - message
        - code
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
  securitySchemes:
    bearerAuth:
      type: jwt
      scheme: bearer
      bearerFormat: JWT
      description: Token JWT obtido no login
    bearer:
      type: http
      scheme: bearer
servers:
  - url: https://yuanqfswhberkoevtmfr.supabase.co
    description: Prod Env
  - url: ''
    description: Cloud Mock
security:
  - bearer: []

```

# Criar novo usuário

## OpenAPI Specification

```yaml
openapi: 3.0.1
info:
  title: ''
  description: ''
  version: 1.0.0
paths:
  /functions/v1/create-user:
    post:
      summary: Criar novo usuário
      deprecated: false
      description: >-
        Cria um novo usuário no sistema com papel específico. Apenas usuários
        com papel de admin, gestor ou secretaria podem criar novos usuários.
      operationId: createUser
      tags:
        - Usuários
        - Usuários
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateUserRequest'
            examples:
              admin_user:
                value:
                  email: admin@mediconnect.com
                  password: senha123!
                  full_name: João Silva
                  phone: (11) 99999-9999
                  role: admin
                summary: Criar administrador
              doctor_user:
                value:
                  email: dr.maria@mediconnect.com
                  password: senha123!
                  full_name: Dra. Maria Santos
                  phone: (11) 98888-8888
                  role: medico
                summary: Criar médico
              secretary_user:
                value:
                  email: secretaria@mediconnect.com
                  password: senha123!
                  full_name: Ana Costa
                  phone: (11) 97777-7777
                  role: secretaria
                summary: Criar secretária
      responses:
        '200':
          description: Usuário criado com sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateUserResponse'
              example:
                success: true
                user:
                  id: 123e4567-e89b-12d3-a456-426614174000
                  email: novo.usuario@mediconnect.com
                  full_name: Novo Usuário
                  phone: (11) 99999-9999
                  role: medico
          headers: {}
          x-apidog-name: OK
        '400':
          description: Dados inválidos ou erro de validação
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-ignore-properties: []
                x-apidog-orders: []
              examples:
                '2':
                  summary: Campos obrigatórios faltando
                  value:
                    error: 'Missing required fields: email, password, full_name, role'
                '3':
                  summary: Papel inválido
                  value:
                    error: Invalid role
                '4':
                  summary: Email já existe
                  value:
                    error: User with this email already registered
          headers: {}
          x-apidog-name: Bad Request
        '401':
          description: Token de autenticação inválido ou ausente
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-ignore-properties: []
                x-apidog-orders: []
              example:
                error: Unauthorized
          headers: {}
          x-apidog-name: Unauthorized
        '403':
          description: Permissões insuficientes
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-ignore-properties: []
                x-apidog-orders: []
              example:
                error: Insufficient permissions
          headers: {}
          x-apidog-name: Forbidden
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-ignore-properties: []
                x-apidog-orders: []
              example:
                error: Internal server error
          headers: {}
          x-apidog-name: Internal Server Error
      security: []
      x-apidog-folder: Usuários
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1053378/apis/api-21953135-run
components:
  schemas:
    CreateUserRequest:
      type: object
      required:
        - email
        - full_name
        - role
      properties:
        email:
          type: string
          format: email
          description: >-
            Email do usuário (deve ser único). Um magic link será enviado para
            este email.
          examples:
            - usuario@mediconnect.com
        full_name:
          type: string
          minLength: 1
          description: Nome completo do usuário
          examples:
            - João da Silva
        phone:
          type: string
          description: Telefone do usuário (opcional)
          examples:
            - (11) 99999-9999
          nullable: true
        role:
          type: string
          enum:
            - admin
            - gestor
            - medico
            - secretaria
            - user
            - paciente
          description: Papel do usuário no sistema
          examples:
            - medico
        roles:
          type: array
          items:
            type: string
            enum:
              - admin
              - gestor
              - medico
              - secretaria
              - user
              - paciente
          description: Múltiplos papéis do usuário (opcional, alternativa ao campo 'role')
          examples:
            - - medico
              - gestor
        redirect_url:
          type: string
          format: uri
          description: >-
            URL de redirecionamento após clicar no Magic Link (opcional).
            Permite que aplicativos externos redirecionem para suas próprias
            URLs.
          examples:
            - https://app.exemplo.com/dashboard
          nullable: true
      x-apidog-orders:
        - email
        - full_name
        - phone
        - role
        - roles
        - redirect_url
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    CreateUserResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Indica se a operação foi bem-sucedida
          examples:
            - true
        message:
          type: string
          description: Mensagem de confirmação incluindo informação sobre o magic link
          examples:
            - >-
              Usuário criado com sucesso. Magic link enviado para
              usuario@mediconnect.com
        user:
          type: object
          properties:
            id:
              type: string
              format: uuid
              description: ID único do usuário criado
              examples:
                - 123e4567-e89b-12d3-a456-426614174000
            email:
              type: string
              format: email
              description: Email do usuário
              examples:
                - usuario@mediconnect.com
            full_name:
              type: string
              description: Nome completo do usuário
              examples:
                - João da Silva
            phone:
              type: string
              description: Telefone do usuário
              examples:
                - (11) 99999-9999
              nullable: true
            roles:
              type: array
              items:
                type: string
              description: Papéis atribuídos ao usuário
              examples:
                - - medico
          x-apidog-orders:
            - id
            - email
            - full_name
            - phone
            - roles
          x-apidog-ignore-properties: []
      x-apidog-orders:
        - success
        - message
        - user
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
  securitySchemes:
    bearerAuth:
      type: jwt
      scheme: bearer
      bearerFormat: JWT
      description: Token JWT obtido no login
servers:
  - url: https://yuanqfswhberkoevtmfr.supabase.co
    description: Prod Env
  - url: ''
    description: Cloud Mock
security: []

```


# Criar novo usuário

## OpenAPI Specification

```yaml
openapi: 3.0.1
info:
  title: ''
  description: ''
  version: 1.0.0
paths:
  /create-user:
    post:
      summary: Criar novo usuário
      deprecated: false
      description: >
        Cria um novo usuário no sistema com papel específico. 

        Apenas usuários com papel de admin, gestor ou secretaria podem criar
        novos usuários.

        Um magic link será enviado automaticamente para o email do novo usuário.

        O parâmetro redirect_url permite que aplicativos externos redirecionem
        para suas próprias URLs.
      operationId: createUser
      tags:
        - Usuários
        - Usuários
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateUserRequest'
            examples:
              admin_user:
                value:
                  email: admin@mediconnect.com
                  full_name: João Silva
                  phone: (11) 99999-9999
                  role: admin
                summary: Criar administrador
              doctor_user:
                value:
                  email: dr.maria@mediconnect.com
                  full_name: Dra. Maria Santos
                  phone: (11) 98888-8888
                  role: medico
                summary: Criar médico
              secretary_user:
                value:
                  email: secretaria@mediconnect.com
                  full_name: Ana Costa
                  phone: (11) 97777-7777
                  role: secretaria
                summary: Criar secretária
              patient_user:
                value:
                  email: paciente@email.com
                  full_name: João Paciente
                  phone: (11) 98888-8888
                  role: paciente
                summary: Criar paciente
              external_app:
                value:
                  email: usuario@externo.com
                  full_name: Usuário Externo
                  phone: (11) 99999-9999
                  role: paciente
                  redirect_url: https://app-parceiro.com/auth/callback
                summary: Criação via app externo com redirect personalizado
      responses:
        '200':
          description: Usuário criado com sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateUserResponse'
              example:
                success: true
                user:
                  id: 123e4567-e89b-12d3-a456-426614174000
                  email: novo.usuario@mediconnect.com
                  full_name: Novo Usuário
                  phone: (11) 99999-9999
                  roles:
                    - medico
                message: >-
                  Usuário criado com sucesso. Magic link enviado para
                  novo.usuario@mediconnect.com
          headers: {}
          x-apidog-name: OK
        '400':
          description: Dados inválidos ou erro de validação
          content:
            application/json:
              schema: &ref_0
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                '2':
                  summary: Campos obrigatórios faltando
                  value:
                    error: 'Missing required fields: email, full_name, role'
                '3':
                  summary: Papel inválido
                  value:
                    error: >-
                      Invalid role: must be one of admin, gestor, medico,
                      secretaria, user, paciente
                '4':
                  summary: URL de redirect inválida
                  value:
                    error: redirect_url inválido
                '5':
                  summary: Email já existe
                  value:
                    error: User with this email already registered
          headers: {}
          x-apidog-name: Bad Request
        '401':
          description: Token de autenticação inválido ou ausente
          content:
            application/json:
              schema: *ref_0
              example:
                error: Unauthorized
          headers: {}
          x-apidog-name: Unauthorized
        '403':
          description: Permissões insuficientes
          content:
            application/json:
              schema: *ref_0
              example:
                error: Insufficient permissions
          headers: {}
          x-apidog-name: Forbidden
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema: *ref_0
              example:
                error: Internal server error
          headers: {}
          x-apidog-name: Internal Server Error
      security: []
      x-apidog-folder: Usuários
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1053378/apis/api-22659572-run
components:
  schemas:
    CreateUserRequest:
      type: object
      required:
        - email
        - full_name
        - role
      properties:
        email:
          type: string
          format: email
          description: >-
            Email do usuário (deve ser único). Um magic link será enviado para
            este email.
          examples:
            - usuario@mediconnect.com
        full_name:
          type: string
          minLength: 1
          description: Nome completo do usuário
          examples:
            - João da Silva
        phone:
          type: string
          description: Telefone do usuário (opcional)
          examples:
            - (11) 99999-9999
          nullable: true
        role:
          type: string
          enum:
            - admin
            - gestor
            - medico
            - secretaria
            - user
            - paciente
          description: Papel do usuário no sistema
          examples:
            - medico
        roles:
          type: array
          items:
            type: string
            enum:
              - admin
              - gestor
              - medico
              - secretaria
              - user
              - paciente
          description: Múltiplos papéis do usuário (opcional, alternativa ao campo 'role')
          examples:
            - - medico
              - gestor
        redirect_url:
          type: string
          format: uri
          description: >-
            URL de redirecionamento após clicar no Magic Link (opcional).
            Permite que aplicativos externos redirecionem para suas próprias
            URLs.
          examples:
            - https://app.exemplo.com/dashboard
          nullable: true
      x-apidog-orders:
        - email
        - full_name
        - phone
        - role
        - roles
        - redirect_url
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    CreateUserResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Indica se a operação foi bem-sucedida
          examples:
            - true
        message:
          type: string
          description: Mensagem de confirmação incluindo informação sobre o magic link
          examples:
            - >-
              Usuário criado com sucesso. Magic link enviado para
              usuario@mediconnect.com
        user:
          type: object
          properties:
            id:
              type: string
              format: uuid
              description: ID único do usuário criado
              examples:
                - 123e4567-e89b-12d3-a456-426614174000
            email:
              type: string
              format: email
              description: Email do usuário
              examples:
                - usuario@mediconnect.com
            full_name:
              type: string
              description: Nome completo do usuário
              examples:
                - João da Silva
            phone:
              type: string
              description: Telefone do usuário
              examples:
                - (11) 99999-9999
              nullable: true
            roles:
              type: array
              items:
                type: string
              description: Papéis atribuídos ao usuário
              examples:
                - - medico
          x-apidog-orders:
            - id
            - email
            - full_name
            - phone
            - roles
          x-apidog-ignore-properties: []
      x-apidog-orders:
        - success
        - message
        - user
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Mensagem de erro descritiva
          examples:
            - 'Missing required fields: email, full_name, role'
      x-apidog-orders:
        - error
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
  securitySchemes:
    bearerAuth:
      type: jwt
      scheme: bearer
      bearerFormat: JWT
      description: Token JWT obtido no login
servers:
  - url: https://yuanqfswhberkoevtmfr.supabase.co
    description: Prod Env
  - url: ''
    description: Cloud Mock
security: []

```


# Obter dados do usuário atual

## OpenAPI Specification

```yaml
openapi: 3.0.1
info:
  title: ''
  description: ''
  version: 1.0.0
paths:
  /auth/v1/user:
    get:
      summary: Obter dados do usuário atual
      deprecated: false
      description: Retorna informações do usuário autenticado
      tags:
        - Usuários
        - Authentication
      parameters: []
      responses:
        '200':
          description: Dados do usuário
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
          headers: {}
          x-apidog-name: OK
        '401':
          description: Token inválido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers: {}
          x-apidog-name: Unauthorized
      security:
        - bearer: []
      x-apidog-folder: Usuários
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1053378/apis/api-21940512-run
components:
  schemas:
    User:
      type: object
      properties:
        id:
          type: string
          format: uuid
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
        email:
          type: string
          format: email
          examples:
            - usuario@exemplo.com
        email_confirmed_at:
          type: string
          format: date-time
          examples:
            - '2024-01-01T10:00:00Z'
          nullable: true
        created_at:
          type: string
          format: date-time
          examples:
            - '2024-01-01T00:00:00Z'
        last_sign_in_at:
          type: string
          format: date-time
          examples:
            - '2024-01-15T09:30:00Z'
          nullable: true
      x-apidog-orders:
        - id
        - email
        - email_confirmed_at
        - created_at
        - last_sign_in_at
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    Error:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
        code:
          type: string
      x-apidog-orders:
        - error
        - message
        - code
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
  securitySchemes:
    bearerAuth:
      type: jwt
      scheme: bearer
      bearerFormat: JWT
      description: Token JWT obtido no login
    bearer:
      type: http
      scheme: bearer
servers:
  - url: https://yuanqfswhberkoevtmfr.supabase.co
    description: Prod Env
  - url: ''
    description: Cloud Mock
security:
  - bearer: []

```
# Fazer login e obter token JWT

## OpenAPI Specification

```yaml
openapi: 3.0.1
info:
  title: ''
  description: ''
  version: 1.0.0
paths:
  /auth/v1/token:
    post:
      summary: Fazer login e obter token JWT
      deprecated: false
      description: >-
        Autentica o usuário e retorna um token JWT para usar em outras
        requisições.
      tags:
        - Authentication
      parameters:
        - name: grant_type
          in: query
          description: ''
          required: true
          schema:
            type: string
            enum:
              - password
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginRequest'
            examples: {}
      responses:
        '200':
          description: Login realizado com sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoginResponse'
          headers: {}
          x-apidog-name: OK
        '400':
          description: Credenciais inválidas
          content:
            application/json:
              schema: &ref_0
                $ref: '#/components/schemas/Error'
          headers: {}
          x-apidog-name: Bad Request
        '401':
          description: Email ou senha incorretos
          content:
            application/json:
              schema: *ref_0
          headers: {}
          x-apidog-name: Unauthorized
      security:
        - bearer: []
      x-apidog-folder: Authentication
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1053378/apis/api-21940510-run
components:
  schemas:
    LoginRequest:
      type: object
      required:
        - email
        - password
      properties:
        email:
          type: string
          format: email
          examples:
            - usuario@exemplo.com
        password:
          type: string
          minLength: 6
          examples:
            - senha123
      x-apidog-orders:
        - email
        - password
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    LoginResponse:
      type: object
      properties:
        access_token:
          type: string
          description: Token JWT para autenticação
          examples:
            - eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
        token_type:
          type: string
          examples:
            - bearer
        expires_in:
          type: integer
          description: Tempo de expiração do token em segundos
          examples:
            - 3600
        refresh_token:
          type: string
          description: Token para renovar o access_token
        user:
          $ref: '#/components/schemas/AuthUser'
      x-apidog-orders:
        - access_token
        - token_type
        - expires_in
        - refresh_token
        - user
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    AuthUser:
      type: object
      properties:
        id:
          type: string
          format: uuid
        email:
          type: string
          format: email
        email_confirmed_at:
          type: string
          format: date-time
          nullable: true
        created_at:
          type: string
          format: date-time
      x-apidog-orders:
        - id
        - email
        - email_confirmed_at
        - created_at
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    Error:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
        code:
          type: string
      x-apidog-orders:
        - error
        - message
        - code
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
  securitySchemes:
    bearerAuth:
      type: jwt
      scheme: bearer
      bearerFormat: JWT
      description: Token JWT obtido no login
    bearer:
      type: http
      scheme: bearer
servers:
  - url: https://yuanqfswhberkoevtmfr.supabase.co
    description: Prod Env
  - url: ''
    description: Cloud Mock
security:
  - bearer: []

```

# Logout do usuário

## OpenAPI Specification

```yaml
openapi: 3.0.1
info:
  title: ''
  description: ''
  version: 1.0.0
paths:
  /auth/v1/logout:
    post:
      summary: Logout do usuário
      deprecated: false
      description: Encerrar sessão do usuário
      tags:
        - Authentication
        - Authentication
      parameters: []
      responses:
        '204':
          description: Logout realizado com sucesso
          headers: {}
          x-apidog-name: No Content
        '401':
          description: Token inválido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers: {}
          x-apidog-name: Unauthorized
      security:
        - bearer: []
      x-apidog-folder: Authentication
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1053378/apis/api-21940511-run
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
        code:
          type: string
      x-apidog-orders:
        - error
        - message
        - code
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
  securitySchemes:
    bearerAuth:
      type: jwt
      scheme: bearer
      bearerFormat: JWT
      description: Token JWT obtido no login
    bearer:
      type: http
      scheme: bearer
servers:
  - url: https://yuanqfswhberkoevtmfr.supabase.co
    description: Prod Env
  - url: ''
    description: Cloud Mock
security:
  - bearer: []

```

# Listar perfis de usuários

## OpenAPI Specification

```yaml
openapi: 3.0.1
info:
  title: ''
  description: ''
  version: 1.0.0
paths:
  /rest/v1/profiles:
    get:
      summary: Listar perfis de usuários
      deprecated: false
      description: ''
      tags:
        - Perfis
        - Perfis
      parameters:
        - name: apikey
          in: header
          description: Chave da API Supabase
          required: true
          example: ''
          schema:
            type: string
      responses:
        '200':
          description: Lista de perfis
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Profile'
          headers: {}
          x-apidog-name: OK
      security:
        - bearer: []
      x-apidog-folder: Perfis
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1053378/apis/api-21940522-run
components:
  schemas:
    Profile:
      type: object
      properties:
        id:
          type: string
          format: uuid
        full_name:
          type: string
          examples:
            - Dr. João Silva
          nullable: true
        email:
          type: string
          format: email
          nullable: true
        phone:
          type: string
          examples:
            - '+5511999999999'
          nullable: true
        avatar_url:
          type: string
          format: uri
          nullable: true
        disabled:
          type: boolean
          examples:
            - false
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
      x-apidog-orders:
        - id
        - full_name
        - email
        - phone
        - avatar_url
        - disabled
        - created_at
        - updated_at
      x-apidog-ignore-properties: []
      nullable: true
      x-apidog-folder: ''
  securitySchemes:
    bearerAuth:
      type: jwt
      scheme: bearer
      bearerFormat: JWT
      description: Token JWT obtido no login
    bearer:
      type: http
      scheme: bearer
servers:
  - url: https://yuanqfswhberkoevtmfr.supabase.co
    description: Prod Env
  - url: ''
    description: Cloud Mock
security:
  - bearer: []

```

# Atualizar perfil do usuário

## OpenAPI Specification

```yaml
openapi: 3.0.1
info:
  title: ''
  description: ''
  version: 1.0.0
paths:
  /rest/v1/profiles:
    patch:
      summary: Atualizar perfil do usuário
      deprecated: false
      description: ''
      tags:
        - Perfis
        - Perfis
      parameters:
        - name: apikey
          in: header
          description: Chave da API Supabase
          required: true
          example: ''
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProfileInput'
      responses:
        '200':
          description: Perfil atualizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Profile'
          headers: {}
          x-apidog-name: OK
      security:
        - bearer: []
      x-apidog-folder: Perfis
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1053378/apis/api-21940523-run
components:
  schemas:
    ProfileInput:
      type: object
      properties:
        full_name:
          type: string
        avatar_url:
          type: string
        phone:
          type: string
      x-apidog-orders:
        - full_name
        - avatar_url
        - phone
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    Profile:
      type: object
      properties:
        id:
          type: string
          format: uuid
        full_name:
          type: string
          examples:
            - Dr. João Silva
          nullable: true
        email:
          type: string
          format: email
          nullable: true
        phone:
          type: string
          examples:
            - '+5511999999999'
          nullable: true
        avatar_url:
          type: string
          format: uri
          nullable: true
        disabled:
          type: boolean
          examples:
            - false
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
      x-apidog-orders:
        - id
        - full_name
        - email
        - phone
        - avatar_url
        - disabled
        - created_at
        - updated_at
      x-apidog-ignore-properties: []
      nullable: true
      x-apidog-folder: ''
  securitySchemes:
    bearerAuth:
      type: jwt
      scheme: bearer
      bearerFormat: JWT
      description: Token JWT obtido no login
    bearer:
      type: http
      scheme: bearer
servers:
  - url: https://yuanqfswhberkoevtmfr.supabase.co
    description: Prod Env
  - url: ''
    description: Cloud Mock
security:
  - bearer: []

```

# Obter paciente por ID

## OpenAPI Specification

```yaml
openapi: 3.0.1
info:
  title: ''
  description: ''
  version: 1.0.0
paths:
  /rest/v1/patients/{id}:
    get:
      summary: Obter paciente por ID
      deprecated: false
      description: Retorna dados de um paciente específico
      tags:
        - Pacientes
        - Pacientes
      parameters:
        - name: id
          in: path
          description: ID do paciente
          required: true
          example: ''
          schema:
            type: string
            format: uuid
        - name: apikey
          in: header
          description: Chave da API Supabase
          required: true
          example: ''
          schema:
            type: string
      responses:
        '200':
          description: Dados do paciente
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Patient'
          headers: {}
          x-apidog-name: OK
        '401':
          description: Não autorizado
          content:
            application/json:
              schema: &ref_0
                $ref: '#/components/schemas/Error'
          headers: {}
          x-apidog-name: Unauthorized
        '404':
          description: Paciente não encontrado
          content:
            application/json:
              schema: *ref_0
          headers: {}
          x-apidog-name: Not Found
      security:
        - bearer: []
      x-apidog-folder: Pacientes
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1053378/apis/api-21940515-run
components:
  schemas:
    Patient:
      type: object
      properties:
        id:
          type: string
          format: uuid
          examples:
            - 12345678-1234-1234-1234-123456789012
        full_name:
          type: string
          examples:
            - Maria Santos Silva
        cpf:
          type: string
          examples:
            - '12345678901'
        email:
          type: string
          format: email
          examples:
            - maria@email.com
        phone_mobile:
          type: string
          examples:
            - (11) 99999-9999
        birth_date:
          type: string
          format: date
          examples:
            - '1980-01-15'
        social_name:
          type: string
          examples:
            - Maria Santos
        sex:
          type: string
          examples:
            - F
        blood_type:
          type: string
          examples:
            - A+
        weight_kg:
          type: number
          examples:
            - 65.5
        height_m:
          type: number
          examples:
            - 1.65
        bmi:
          type: number
          examples:
            - 24.1
        street:
          type: string
          examples:
            - Rua das Flores, 123
        number:
          type: string
          examples:
            - '123'
        complement:
          type: string
          examples:
            - Apt 45
        neighborhood:
          type: string
          examples:
            - Centro
        city:
          type: string
          examples:
            - São Paulo
        state:
          type: string
          examples:
            - SP
        cep:
          type: string
          examples:
            - 01234-567
        created_at:
          type: string
          format: date-time
          examples:
            - '2024-01-15T10:30:00Z'
        updated_at:
          type: string
          format: date-time
          examples:
            - '2024-01-15T10:30:00Z'
        created_by:
          type: string
          format: uuid
          examples:
            - 12345678-1234-1234-1234-123456789012
      x-apidog-orders:
        - id
        - full_name
        - cpf
        - email
        - phone_mobile
        - birth_date
        - social_name
        - sex
        - blood_type
        - weight_kg
        - height_m
        - bmi
        - street
        - number
        - complement
        - neighborhood
        - city
        - state
        - cep
        - created_at
        - updated_at
        - created_by
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    Error:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
        code:
          type: string
      x-apidog-orders:
        - error
        - message
        - code
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
  securitySchemes:
    bearerAuth:
      type: jwt
      scheme: bearer
      bearerFormat: JWT
      description: Token JWT obtido no login
    bearer:
      type: http
      scheme: bearer
servers:
  - url: https://yuanqfswhberkoevtmfr.supabase.co
    description: Prod Env
  - url: ''
    description: Cloud Mock
security:
  - bearer: []

```

# Atualizar paciente

## OpenAPI Specification

```yaml
openapi: 3.0.1
info:
  title: ''
  description: ''
  version: 1.0.0
paths:
  /rest/v1/patients/{id}:
    patch:
      summary: Atualizar paciente
      deprecated: false
      description: Atualizar dados de um paciente existente
      tags:
        - Pacientes
        - Pacientes
      parameters:
        - name: id
          in: path
          description: ID do paciente
          required: true
          example: ''
          schema:
            type: string
            format: uuid
        - name: apikey
          in: header
          description: Chave da API Supabase
          required: true
          example: ''
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatientInput'
      responses:
        '200':
          description: Paciente atualizado com sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Patient'
          headers: {}
          x-apidog-name: OK
        '401':
          description: Não autorizado
          content:
            application/json:
              schema: &ref_0
                $ref: '#/components/schemas/Error'
          headers: {}
          x-apidog-name: Unauthorized
        '404':
          description: Paciente não encontrado
          content:
            application/json:
              schema: *ref_0
          headers: {}
          x-apidog-name: Not Found
      security:
        - bearer: []
      x-apidog-folder: Pacientes
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1053378/apis/api-21940516-run
components:
  schemas:
    PatientInput:
      type: object
      required:
        - full_name
        - cpf
        - email
        - phone_mobile
      properties:
        full_name:
          type: string
          examples:
            - Maria Santos Silva
        cpf:
          type: string
          examples:
            - '12345678901'
        email:
          type: string
          format: email
          examples:
            - maria@email.com
        phone_mobile:
          type: string
          examples:
            - (11) 99999-9999
        birth_date:
          type: string
          format: date
          examples:
            - '1980-01-15'
        social_name:
          type: string
        sex:
          type: string
          examples:
            - F
        blood_type:
          type: string
        weight_kg:
          type: number
        height_m:
          type: number
        street:
          type: string
        number:
          type: string
        complement:
          type: string
        neighborhood:
          type: string
        city:
          type: string
        state:
          type: string
        cep:
          type: string
      x-apidog-orders:
        - full_name
        - cpf
        - email
        - phone_mobile
        - birth_date
        - social_name
        - sex
        - blood_type
        - weight_kg
        - height_m
        - street
        - number
        - complement
        - neighborhood
        - city
        - state
        - cep
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    Patient:
      type: object
      properties:
        id:
          type: string
          format: uuid
          examples:
            - 12345678-1234-1234-1234-123456789012
        full_name:
          type: string
          examples:
            - Maria Santos Silva
        cpf:
          type: string
          examples:
            - '12345678901'
        email:
          type: string
          format: email
          examples:
            - maria@email.com
        phone_mobile:
          type: string
          examples:
            - (11) 99999-9999
        birth_date:
          type: string
          format: date
          examples:
            - '1980-01-15'
        social_name:
          type: string
          examples:
            - Maria Santos
        sex:
          type: string
          examples:
            - F
        blood_type:
          type: string
          examples:
            - A+
        weight_kg:
          type: number
          examples:
            - 65.5
        height_m:
          type: number
          examples:
            - 1.65
        bmi:
          type: number
          examples:
            - 24.1
        street:
          type: string
          examples:
            - Rua das Flores, 123
        number:
          type: string
          examples:
            - '123'
        complement:
          type: string
          examples:
            - Apt 45
        neighborhood:
          type: string
          examples:
            - Centro
        city:
          type: string
          examples:
            - São Paulo
        state:
          type: string
          examples:
            - SP
        cep:
          type: string
          examples:
            - 01234-567
        created_at:
          type: string
          format: date-time
          examples:
            - '2024-01-15T10:30:00Z'
        updated_at:
          type: string
          format: date-time
          examples:
            - '2024-01-15T10:30:00Z'
        created_by:
          type: string
          format: uuid
          examples:
            - 12345678-1234-1234-1234-123456789012
      x-apidog-orders:
        - id
        - full_name
        - cpf
        - email
        - phone_mobile
        - birth_date
        - social_name
        - sex
        - blood_type
        - weight_kg
        - height_m
        - bmi
        - street
        - number
        - complement
        - neighborhood
        - city
        - state
        - cep
        - created_at
        - updated_at
        - created_by
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    Error:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
        code:
          type: string
      x-apidog-orders:
        - error
        - message
        - code
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
  securitySchemes:
    bearerAuth:
      type: jwt
      scheme: bearer
      bearerFormat: JWT
      description: Token JWT obtido no login
    bearer:
      type: http
      scheme: bearer
servers:
  - url: https://yuanqfswhberkoevtmfr.supabase.co
    description: Prod Env
  - url: ''
    description: Cloud Mock
security:
  - bearer: []

```

# Deletar paciente

## OpenAPI Specification

```yaml
openapi: 3.0.1
info:
  title: ''
  description: ''
  version: 1.0.0
paths:
  /rest/v1/patients/{id}:
    delete:
      summary: Deletar paciente
      deprecated: false
      description: Remover um paciente do sistema (apenas admins/gestores)
      tags:
        - Pacientes
        - Pacientes
      parameters:
        - name: id
          in: path
          description: ID do paciente
          required: true
          example: ''
          schema:
            type: string
            format: uuid
        - name: apikey
          in: header
          description: Chave da API Supabase
          required: true
          example: ''
          schema:
            type: string
      responses:
        '204':
          description: Paciente deletado com sucesso
          headers: {}
          x-apidog-name: No Content
        '401':
          description: Não autorizado
          content:
            application/json:
              schema: &ref_0
                $ref: '#/components/schemas/Error'
          headers: {}
          x-apidog-name: Unauthorized
        '403':
          description: Sem permissão
          content:
            application/json:
              schema: *ref_0
          headers: {}
          x-apidog-name: Forbidden
        '404':
          description: Paciente não encontrado
          content:
            application/json:
              schema: *ref_0
          headers: {}
          x-apidog-name: Not Found
      security:
        - bearer: []
      x-apidog-folder: Pacientes
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1053378/apis/api-21940517-run
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
        code:
          type: string
      x-apidog-orders:
        - error
        - message
        - code
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
  securitySchemes:
    bearerAuth:
      type: jwt
      scheme: bearer
      bearerFormat: JWT
      description: Token JWT obtido no login
    bearer:
      type: http
      scheme: bearer
servers:
  - url: https://yuanqfswhberkoevtmfr.supabase.co
    description: Prod Env
  - url: ''
    description: Cloud Mock
security:
  - bearer: []

```

# Criar novo paciente

## OpenAPI Specification

```yaml
openapi: 3.0.1
info:
  title: ''
  description: ''
  version: 1.0.0
paths:
  /rest/v1/patients:
    post:
      summary: Criar novo paciente
      deprecated: false
      description: Cadastrar um novo paciente no sistema
      tags:
        - Pacientes
        - Pacientes
      parameters:
        - name: apikey
          in: header
          description: Chave da API Supabase
          required: true
          example: '{{API_KEY}}'
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatientInput'
            example:
              full_name: Maria Santos
              cpf: '12345678901'
              email: maria@email.com
              phone_mobile: (11) 99999-9999
              birth_date: '1980-01-15'
      responses:
        '201':
          description: Paciente criado com sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Patient'
          headers: {}
          x-apidog-name: Created
        '400':
          description: Dados inválidos
          content:
            application/json:
              schema: &ref_0
                $ref: '#/components/schemas/Error'
          headers: {}
          x-apidog-name: Bad Request
        '401':
          description: Não autorizado
          content:
            application/json:
              schema: *ref_0
          headers: {}
          x-apidog-name: Unauthorized
      security:
        - bearer: []
      x-apidog-folder: Pacientes
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1053378/apis/api-21940514-run
components:
  schemas:
    PatientInput:
      type: object
      required:
        - full_name
        - cpf
        - email
        - phone_mobile
      properties:
        full_name:
          type: string
          examples:
            - Maria Santos Silva
        cpf:
          type: string
          examples:
            - '12345678901'
        email:
          type: string
          format: email
          examples:
            - maria@email.com
        phone_mobile:
          type: string
          examples:
            - (11) 99999-9999
        birth_date:
          type: string
          format: date
          examples:
            - '1980-01-15'
        social_name:
          type: string
        sex:
          type: string
          examples:
            - F
        blood_type:
          type: string
        weight_kg:
          type: number
        height_m:
          type: number
        street:
          type: string
        number:
          type: string
        complement:
          type: string
        neighborhood:
          type: string
        city:
          type: string
        state:
          type: string
        cep:
          type: string
      x-apidog-orders:
        - full_name
        - cpf
        - email
        - phone_mobile
        - birth_date
        - social_name
        - sex
        - blood_type
        - weight_kg
        - height_m
        - street
        - number
        - complement
        - neighborhood
        - city
        - state
        - cep
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    Patient:
      type: object
      properties:
        id:
          type: string
          format: uuid
          examples:
            - 12345678-1234-1234-1234-123456789012
        full_name:
          type: string
          examples:
            - Maria Santos Silva
        cpf:
          type: string
          examples:
            - '12345678901'
        email:
          type: string
          format: email
          examples:
            - maria@email.com
        phone_mobile:
          type: string
          examples:
            - (11) 99999-9999
        birth_date:
          type: string
          format: date
          examples:
            - '1980-01-15'
        social_name:
          type: string
          examples:
            - Maria Santos
        sex:
          type: string
          examples:
            - F
        blood_type:
          type: string
          examples:
            - A+
        weight_kg:
          type: number
          examples:
            - 65.5
        height_m:
          type: number
          examples:
            - 1.65
        bmi:
          type: number
          examples:
            - 24.1
        street:
          type: string
          examples:
            - Rua das Flores, 123
        number:
          type: string
          examples:
            - '123'
        complement:
          type: string
          examples:
            - Apt 45
        neighborhood:
          type: string
          examples:
            - Centro
        city:
          type: string
          examples:
            - São Paulo
        state:
          type: string
          examples:
            - SP
        cep:
          type: string
          examples:
            - 01234-567
        created_at:
          type: string
          format: date-time
          examples:
            - '2024-01-15T10:30:00Z'
        updated_at:
          type: string
          format: date-time
          examples:
            - '2024-01-15T10:30:00Z'
        created_by:
          type: string
          format: uuid
          examples:
            - 12345678-1234-1234-1234-123456789012
      x-apidog-orders:
        - id
        - full_name
        - cpf
        - email
        - phone_mobile
        - birth_date
        - social_name
        - sex
        - blood_type
        - weight_kg
        - height_m
        - bmi
        - street
        - number
        - complement
        - neighborhood
        - city
        - state
        - cep
        - created_at
        - updated_at
        - created_by
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    Error:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
        code:
          type: string
      x-apidog-orders:
        - error
        - message
        - code
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
  securitySchemes:
    bearerAuth:
      type: jwt
      scheme: bearer
      bearerFormat: JWT
      description: Token JWT obtido no login
    bearer:
      type: http
      scheme: bearer
servers:
  - url: https://yuanqfswhberkoevtmfr.supabase.co
    description: Prod Env
  - url: ''
    description: Cloud Mock
security:
  - bearer: []

```

# Listar pacientes

## OpenAPI Specification

```yaml
openapi: 3.0.1
info:
  title: ''
  description: ''
  version: 1.0.0
paths:
  /rest/v1/patients:
    get:
      summary: Listar pacientes
      deprecated: false
      description: Retorna lista de pacientes com base nas permissões do usuário
      tags:
        - Pacientes
        - Pacientes
      parameters:
        - name: apikey
          in: header
          description: ''
          required: false
          example: '{{apikey}}'
          schema:
            type: string
      responses:
        '200':
          description: Lista de pacientes
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Patient'
          headers: {}
          x-apidog-name: OK
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers: {}
          x-apidog-name: Unauthorized
      security:
        - bearer: []
      x-apidog-folder: Pacientes
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1053378/apis/api-21940513-run
components:
  schemas:
    Patient:
      type: object
      properties:
        id:
          type: string
          format: uuid
          examples:
            - 12345678-1234-1234-1234-123456789012
        full_name:
          type: string
          examples:
            - Maria Santos Silva
        cpf:
          type: string
          examples:
            - '12345678901'
        email:
          type: string
          format: email
          examples:
            - maria@email.com
        phone_mobile:
          type: string
          examples:
            - (11) 99999-9999
        birth_date:
          type: string
          format: date
          examples:
            - '1980-01-15'
        social_name:
          type: string
          examples:
            - Maria Santos
        sex:
          type: string
          examples:
            - F
        blood_type:
          type: string
          examples:
            - A+
        weight_kg:
          type: number
          examples:
            - 65.5
        height_m:
          type: number
          examples:
            - 1.65
        bmi:
          type: number
          examples:
            - 24.1
        street:
          type: string
          examples:
            - Rua das Flores, 123
        number:
          type: string
          examples:
            - '123'
        complement:
          type: string
          examples:
            - Apt 45
        neighborhood:
          type: string
          examples:
            - Centro
        city:
          type: string
          examples:
            - São Paulo
        state:
          type: string
          examples:
            - SP
        cep:
          type: string
          examples:
            - 01234-567
        created_at:
          type: string
          format: date-time
          examples:
            - '2024-01-15T10:30:00Z'
        updated_at:
          type: string
          format: date-time
          examples:
            - '2024-01-15T10:30:00Z'
        created_by:
          type: string
          format: uuid
          examples:
            - 12345678-1234-1234-1234-123456789012
      x-apidog-orders:
        - id
        - full_name
        - cpf
        - email
        - phone_mobile
        - birth_date
        - social_name
        - sex
        - blood_type
        - weight_kg
        - height_m
        - bmi
        - street
        - number
        - complement
        - neighborhood
        - city
        - state
        - cep
        - created_at
        - updated_at
        - created_by
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    Error:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
        code:
          type: string
      x-apidog-orders:
        - error
        - message
        - code
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
  securitySchemes:
    bearerAuth:
      type: jwt
      scheme: bearer
      bearerFormat: JWT
      description: Token JWT obtido no login
    bearer:
      type: http
      scheme: bearer
servers:
  - url: https://yuanqfswhberkoevtmfr.supabase.co
    description: Prod Env
  - url: ''
    description: Cloud Mock
security:
  - bearer: []

```

# Login do usuário

## OpenAPI Specification

```yaml
openapi: 3.0.1
info:
  title: ''
  description: ''
  version: 1.0.0
paths:
  /auth/v1/signin:
    post:
      summary: Login do usuário
      deprecated: false
      description: Autentica o usuário e retorna token JWT
      operationId: loginUser
      tags:
        - Autenticação
        - Autenticação
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginRequest'
            example:
              email: hugo@popcode.com.br
              password: hdoria
      responses:
        '200':
          description: Login realizado com sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoginResponse'
              example:
                access_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
                token_type: bearer
                expires_in: 3600
                refresh_token: refreshtoken123
                user:
                  id: 724bbb13-2d70-42e7-b05a-8ed6cc499800
                  email: hugo@popcode.com.br
                  email_confirmed_at: '2025-09-26T08:43:05.005937Z'
          headers: {}
          x-apidog-name: OK
        '400':
          description: Credenciais inválidas
          content:
            application/json:
              schema: &ref_0
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: Invalid login credentials
          headers: {}
          x-apidog-name: Bad Request
        '422':
          description: Dados inválidos
          content:
            application/json:
              schema: *ref_0
              example:
                error: Invalid email or password format
          headers: {}
          x-apidog-name: Unprocessable Entity
      security: []
      x-apidog-folder: Autenticação
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1053378/apis/api-22659547-run
components:
  schemas:
    LoginRequest:
      type: object
      required:
        - email
        - password
      properties:
        email:
          type: string
          format: email
          description: Email do usuário
          examples:
            - hugo@popcode.com.br
        password:
          type: string
          description: Senha do usuário
          examples:
            - hdoria
      x-apidog-orders:
        - email
        - password
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    LoginResponse:
      type: object
      properties:
        access_token:
          type: string
          description: Token JWT de acesso
          examples:
            - eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
        token_type:
          type: string
          description: Tipo do token
          examples:
            - bearer
        expires_in:
          type: integer
          description: Tempo de expiração em segundos
          examples:
            - 3600
        refresh_token:
          type: string
          description: Token para renovação
          examples:
            - refreshtoken123
        user:
          type: object
          properties:
            id:
              type: string
              format: uuid
              description: ID do usuário
              examples:
                - 724bbb13-2d70-42e7-b05a-8ed6cc499800
            email:
              type: string
              format: email
              description: Email do usuário
              examples:
                - hugo@popcode.com.br
            email_confirmed_at:
              type: string
              format: date-time
              description: Data de confirmação do email
              examples:
                - '2025-09-26T08:43:05.005937Z'
          x-apidog-orders:
            - id
            - email
            - email_confirmed_at
          x-apidog-ignore-properties: []
      x-apidog-orders:
        - access_token
        - token_type
        - expires_in
        - refresh_token
        - user
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Mensagem de erro descritiva
          examples:
            - 'Missing required fields: email, full_name, role'
      x-apidog-orders:
        - error
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
  securitySchemes:
    bearerAuth:
      type: jwt
      scheme: bearer
      bearerFormat: JWT
      description: Token JWT obtido no login
servers:
  - url: https://yuanqfswhberkoevtmfr.supabase.co
    description: Prod Env
  - url: ''
    description: Cloud Mock
security: []

```


# Enviar Magic Link

## OpenAPI Specification

```yaml
openapi: 3.0.1
info:
  title: ''
  description: ''
  version: 1.0.0
paths:
  /auth/v1/otp:
    post:
      summary: Enviar Magic Link
      deprecated: false
      description: Envia um link de autenticação sem senha por email
      operationId: sendMagicLink
      tags:
        - Autenticação
        - Autenticação
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MagicLinkRequest'
            example:
              email: usuario@clinica.com
      responses:
        '200':
          description: Magic link enviado com sucesso
          content:
            application/json:
              schema:
                type: object
                x-apidog-orders: []
                properties: {}
                x-apidog-ignore-properties: []
              example:
                message: Magic link sent successfully
          headers: {}
          x-apidog-name: OK
        '400':
          description: Email inválido
          content:
            application/json:
              schema: &ref_0
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: Invalid email format
          headers: {}
          x-apidog-name: Bad Request
        '429':
          description: Muitas tentativas
          content:
            application/json:
              schema: *ref_0
              example:
                error: Email rate limit exceeded
          headers: {}
          x-apidog-name: Too Many Requests
      security: []
      x-apidog-folder: Autenticação
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1053378/apis/api-22659548-run
components:
  schemas:
    MagicLinkRequest:
      type: object
      required:
        - email
      properties:
        email:
          type: string
          format: email
          description: Email do usuário para receber o magic link
          examples:
            - usuario@clinica.com
      x-apidog-orders:
        - email
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Mensagem de erro descritiva
          examples:
            - 'Missing required fields: email, full_name, role'
      x-apidog-orders:
        - error
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
  securitySchemes:
    bearerAuth:
      type: jwt
      scheme: bearer
      bearerFormat: JWT
      description: Token JWT obtido no login
servers:
  - url: https://yuanqfswhberkoevtmfr.supabase.co
    description: Prod Env
  - url: ''
    description: Cloud Mock
security: []

```

