Skip to main content

POST Criar Agendamento

Cria um ou mais agendamentos para um paciente.

Autenticação necessária

Esta rota requer o header Authorization: Bearer {accessToken}

Um agendamento por procedimento

Cada item em procedures[] gera um agendamento separado. O sistema distribui os horários automaticamente a partir do startTime informado.


Endpoint

POST https://api-dev.imagemais.com.br/api/appointments

Corpo da Requisição

Campos principais

CampoTipoObrigatórioDescrição
doctorIdnumberID do médico
datestringData do agendamento no formato YYYY-MM-DD
startTimestringHorário de início no formato HH:mm
endTimestringHorário de término no formato HH:mm
notesstringObservações do agendamento
prioritystringPrioridade do paciente. Exemplo: PcD
isFitbooleanIndica se é um encaixe

patient

CampoTipoObrigatórioDescrição
patient.namestringNome do paciente
patient.idnumberID do paciente (quando já cadastrado)
patient.dateBirthstringData de nascimento no formato YYYY-MM-DD
patient.cpfstringCPF do paciente (somente números)
patient.rgstringRG do paciente
patient.gender.namestringGênero. Exemplo: M, F
patient.address.streetstringLogradouro
patient.address.numberstringNúmero
patient.address.districtstringBairro
patient.address.citystringCidade
patient.address.statestringEstado
patient.address.cepstringCEP
patient.address.complementstringComplemento
patient.contact.phonestringTelefone principal
patient.contact.secondary_phonestringTelefone secundário
patient.contact.emailstringE-mail

procedures[]

CampoTipoObrigatórioDescrição
procedures[].idnumberID do procedimento
procedures[].discountIdnumberID do desconto a aplicar no procedimento

Requisição

curl -X 'POST' \
'https://api-dev.imagemais.com.br/api/appointments' \
-H 'accept: application/json' \
-H 'Authorization: Bearer {accessToken}' \
-H 'Content-Type: application/json' \
-d '{
"patient": {
"name": "João Silva",
"dateBirth": "1990-01-01",
"cpf": "12345678900",
"gender": {
"name": "M"
}
},
"procedures": [
{
"id": 1
},
{
"id": 2,
"discountId": 1
}
],
"doctorId": 1,
"date": "2026-05-17",
"startTime": "09:00",
"endTime": "09:15",
"notes": "Observações sobre o agendamento",
"priority": "PcD",
"isFit": false
}'

Respostas

200 Sucesso

Retorna um array com um agendamento criado por procedimento.

[
{
"id": 5281,
"date": "2026-05-17T00:00:00.000Z",
"startTime": "09:00",
"endTime": "09:10",
"notes": "Observações sobre o agendamento",
"accountId": 1,
"isFit": false,
"createdAt": "2026-05-16T14:17:37.694Z",
"createdByUserId": 11,
"updatedAt": "2026-05-16T14:17:37.694Z",
"deletedAt": null,
"doctor": {
"id": 2,
"name": "Dr. Victor Rocha"
},
"patient": {
"id": 17535,
"name": "Joao Silva",
"dateBirth": "1990-01-01T00:00:00.000Z",
"cpf": "27238001055",
"contact": null
},
"status": {
"id": 1,
"name": "Agendado",
"color": "#ffc107"
},
"createdBy": {
"id": 11,
"name": "Douglas Galera"
},
"appointmentProcedures": {
"price": "252",
"discountsAppointmentProcedures": [],
"procedure": {
"id": 1,
"name": "17 BETA ESTRADIOL E2 - PRIMEIRA AMOSTRA",
"price": "252"
}
}
},
{
"id": 5282,
"date": "2026-05-17T00:00:00.000Z",
"startTime": "09:10",
"endTime": "09:20",
"notes": "Observações sobre o agendamento",
"accountId": 1,
"isFit": false,
"createdAt": "2026-05-16T14:17:37.694Z",
"createdByUserId": 11,
"updatedAt": "2026-05-16T14:17:37.694Z",
"deletedAt": null,
"doctor": {
"id": 2,
"name": "Dr. Victor Rocha"
},
"patient": {
"id": 17535,
"name": "Joao Silva",
"dateBirth": "1990-01-01T00:00:00.000Z",
"cpf": "27238001055",
"contact": null
},
"status": {
"id": 1,
"name": "Agendado",
"color": "#ffc107"
},
"createdBy": {
"id": 11,
"name": "Douglas Galera"
},
"appointmentProcedures": {
"price": "252",
"discountsAppointmentProcedures": [
{
"discountId": 6,
"value": "75.6",
"discount": {
"id": 6,
"name": "Desconto de parente",
"fixed": null,
"percentage": 30,
"expirationDate": null
}
}
],
"procedure": {
"id": 2,
"name": "17 BETA ESTRADIOL E2 - SEGUNDA AMOSTRA",
"price": "252"
}
}
}
]

404 Não Encontrado

Retornado quando o médico informado não existe.

{
"message": "Médico não encontrado",
"error": "Not Found",
"statusCode": 404
}

Retornado quando o desconto informado não existe.

{
"message": "Desconto não encontrado",
"error": "Not Found",
"statusCode": 404
}

409 Conflito

Retornado quando já existe um paciente cadastrado com o CPF informado.

{
"message": "Já existe um paciente com esse CPF",
"error": "Conflict",
"statusCode": 409
}

Retornado quando o horário informado já está ocupado por outro agendamento.

{
"message": "Horários 09:00 já estão ocupados por outros agendamentos",
"error": "Conflict",
"statusCode": 409
}