- Standardizes listing/searching/creating/updating/deleting for profiles - Adds UI for assigning professionals - Integrates UI into patient listing (menu item) - Corrects hydration mismatch in ProtectedRoute
2566 lines
58 KiB
Markdown
2566 lines
58 KiB
Markdown
# 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: []
|
|
|
|
```
|
|
|
|
# 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: []
|
|
|
|
```
|