# 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 - password - full_name - role properties: email: type: string format: email description: Email do usuário (deve ser único) examples: - usuario@mediconnect.com password: type: string minLength: 6 description: Senha temporária para o usuário examples: - senha123! 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 description: Papel do usuário no sistema examples: - medico x-apidog-orders: - email - password - full_name - phone - role 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 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 role: type: string description: Papel atribuído ao usuário examples: - medico x-apidog-orders: - id - email - full_name - phone - role x-apidog-ignore-properties: [] x-apidog-orders: - success - user 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 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: [] ```