Appearance
Candidaturas & Funil
Uma candidatura representa a inscrição de um candidato em uma vaga. Ela nasce na etapa applied do pipeline da vaga e percorre o funil até um desfecho: contratação, recusa ou desistência. O status da candidatura é sempre derivado da etapa em que ela se encontra — não é possível alterá-lo diretamente.
Além da consulta e da atualização de dados básicos (avaliação, origem, carta de apresentação), esta API oferece as ações do funil (mover, rejeitar, contratar, colocar em espera) e as notas de colaboração do time, com controle de visibilidade.
Headers obrigatórios
Todas as requisições devem incluir o header X-Ats-Id (UUID) com o identificador da instância ATS, além de Authorization: Bearer {token} com o token de um usuário do staff (guard atsUser). O acesso é limitado às empresas às quais o usuário pertence, conforme o seu papel (RBAC).
Estrutura de Dados Principal
Uma candidatura contém as seguintes informações principais:
| Campo | Tipo | Descrição |
|---|---|---|
atsJobId | Number | ID da vaga. |
atsCandidateId | Number | ID do candidato (pool de talentos da instância). |
atsPipelineId | Number | ID do pipeline da vaga. |
atsStageId | Number | ID da etapa atual. |
status | Enum | active, on_hold, hired, rejected ou withdrawn (derivado da etapa). |
source | Enum | Origem: job_board, career_site, referral, sourced, import, agency ou other. |
rating | Number | Avaliação do staff, de 1 a 5 (nula até a primeira avaliação). |
coverLetter | String | Carta de apresentação enviada pelo candidato. |
atsRejectionReasonId | Number | ID do motivo de recusa (quando rejeitada). |
rejectionNote | String | Observação livre registrada na recusa. |
appliedAt | String | Data/hora da inscrição (ISO 8601). |
stageChangedAt | String | Data/hora da última mudança de etapa. |
lastActivityAt | String | Data/hora da última atividade na candidatura. |
hiredAt / rejectedAt / withdrawnAt | String | Preenchidos no respectivo desfecho. |
Consulta e Edição
Listar Candidaturas
Lista as candidaturas da instância, com paginação e filtros. Usuários sem papel de administração veem apenas as candidaturas das empresas às quais têm acesso.
http
GET /v1/ats/user/applicationsParâmetros de Query
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
page | number | Não | O número da página (mínimo: 1). |
perPage | number | Não | Itens por página (entre 1 e 100, padrão: 25). |
orderBy | enum | Não | Ordena por id, appliedAt, lastActivityAt ou stageChangedAt. |
orderDirection | enum | Não | Direção da ordenação: asc ou desc. |
atsJobId | number | Não | Filtra por vaga. |
atsStageId | number | Não | Filtra por etapa atual. |
status | enum | Não | Filtra por status: active, on_hold, hired, rejected ou withdrawn. |
source | enum | Não | Filtra por origem (job_board, career_site, referral, sourced, import, agency, other). |
rating | number | Não | Filtra por avaliação (1 a 5). |
search | string | Não | Busca por nome ou e-mail do candidato (máx. 150 caracteres). |
appliedFrom | string | Não | Inscrições a partir desta data (YYYY-MM-DD). |
appliedTo | string | Não | Inscrições até esta data (YYYY-MM-DD). |
Exemplo de Requisição
bash
curl -X GET "https://api.us.basis.tavares.in/v1/ats/user/applications?atsJobId=1&status=active&orderBy=appliedAt&orderDirection=desc" \
-H "X-Ats-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json"Respostas
200 OK
Retorna um objeto de paginação contendo a lista de candidaturas, cada uma com a etapa atual, a vaga e o candidato.
json
{
"meta": {
"currentPage": 1,
"perPage": 25
},
"data": [
{
"id": 1,
"atsId": 1,
"atsJobId": 1,
"atsCandidateId": 1,
"atsPipelineId": 1,
"atsStageId": 1,
"status": "active",
"source": "job_board",
"rating": null,
"appliedAt": "2026-09-11T02:34:31.641+00:00",
"stageChangedAt": "2026-09-11T02:34:31.641+00:00",
"lastActivityAt": "2026-09-11T02:35:46.183+00:00",
"createdAt": "2026-09-11T02:34:31.648+00:00",
"updatedAt": "2026-09-11T02:35:46.187+00:00",
"atsStage": {
"id": 1,
"name": "New",
"type": "applied",
"position": 1
},
"atsJob": {
"id": 1,
"title": "Desenvolvedor Full Stack Pleno",
"atsCompanyId": 1
},
"atsCandidate": {
"id": 1,
"firstName": "Maria",
"lastName": "Silva",
"email": "maria.silva@email.com",
"headline": "Desenvolvedora Full Stack Plena"
}
}
]
}422 Unprocessable Entity
Erro de validação nos parâmetros de consulta.
json
{
"errors": [
{
"message": "The rating field must be between 1 and 5",
"rule": "range",
"field": "rating"
}
]
}Obter Candidatura por ID
Recupera a visão completa de uma candidatura: dados do candidato (perfil, experiências, formação, links), currículo anexado, respostas às perguntas da vaga, notas, entrevistas, avaliações e o histórico de transições de etapa.
http
GET /v1/ats/user/applications/:idParâmetros de Rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | number | Sim | O ID da candidatura. |
Exemplo de Requisição
bash
curl -X GET "https://api.us.basis.tavares.in/v1/ats/user/applications/1" \
-H "X-Ats-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json"Respostas
200 OK
Retorna a candidatura completa com todos os relacionamentos.
json
{
"id": 1,
"atsId": 1,
"atsJobId": 1,
"atsCandidateId": 1,
"atsPipelineId": 1,
"atsStageId": 1,
"status": "active",
"source": "job_board",
"sourceDetails": {},
"referredByUserId": null,
"atsFileId": 1,
"coverLetter": "Olá! Tenho 5 anos de experiência com desenvolvimento full stack, atuando principalmente com Node.js, TypeScript e PostgreSQL.",
"rating": null,
"atsRejectionReasonId": null,
"rejectionNote": null,
"appliedAt": "2026-09-11T02:34:31.641+00:00",
"stageChangedAt": "2026-09-11T02:34:31.641+00:00",
"lastActivityAt": "2026-09-11T02:35:46.183+00:00",
"hiredAt": null,
"rejectedAt": null,
"withdrawnAt": null,
"createdAt": "2026-09-11T02:34:31.648+00:00",
"updatedAt": "2026-09-11T02:35:46.187+00:00",
"atsJob": {
"id": 1,
"title": "Desenvolvedor Full Stack Pleno",
"atsCompanyId": 1
},
"atsCandidate": {
"id": 1,
"firstName": "Maria",
"lastName": "Silva",
"email": "maria.silva@email.com",
"phone": "+55 11 98765-4321",
"headline": "Desenvolvedora Full Stack Plena",
"summary": "Profissional com 5 anos de experiência em desenvolvimento web.",
"city": "São Paulo",
"country": "Brasil",
"timezone": "America/Sao_Paulo",
"skills": ["Node.js", "TypeScript", "React", "PostgreSQL"],
"experiences": [
{
"title": "Desenvolvedora Full Stack Plena",
"company": "Tech Corp",
"current": true,
"endDate": null,
"startDate": "2022-03",
"description": "Desenvolvimento de APIs REST e interfaces web."
}
],
"educations": [
{
"degree": "Bacharelado em Ciência da Computação",
"endDate": "2019-12",
"startDate": "2016-02",
"institution": "Universidade de São Paulo"
}
],
"links": {
"github": "https://github.com/mariasilva",
"linkedin": "https://www.linkedin.com/in/maria-silva"
},
"createdAt": "2026-09-11T01:19:59.812+00:00"
},
"atsApplicationNotes": [],
"atsEvaluations": [],
"atsInterviews": [],
"referredByUser": null,
"atsStage": {
"id": 1,
"name": "New",
"type": "applied",
"position": 1
},
"atsFile": {
"id": 1,
"name": "curriculo.pdf",
"extension": "pdf",
"mime": "application/pdf",
"size": 115579,
"url": "https://s3.sa-east-1.amazonaws.com/tavares-dev/files/7af7ff84-4b0e-4ee8-becb-308d88dc7997.pdf",
"hash": "7af7ff84-4b0e-4ee8-becb-308d88dc7997"
},
"atsApplicationStageHistories": [
{
"id": 1,
"atsApplicationId": 1,
"fromStageId": null,
"toStageId": 1,
"changedByUserId": null,
"secondsInFrom": null,
"changedAt": "2026-09-11T02:34:31.641+00:00",
"toStage": {
"id": 1,
"name": "New",
"type": "applied"
},
"fromStage": null
}
],
"atsRejectionReason": null,
"atsApplicationAnswers": [
{
"id": 1,
"atsJobQuestionId": 1,
"valueText": "Sim, tenho disponibilidade para início imediato.",
"valueJson": null,
"atsFileId": null,
"atsJobQuestion": {
"id": 1,
"label": "Você tem experiência com TypeScript?",
"type": "single_choice"
}
}
]
}404 Not Found
Ocorre quando a candidatura não existe na instância.
Atualizar Candidatura
Atualiza os dados gerenciados pelo staff: avaliação, origem e carta de apresentação. A etapa e o status não são alterados por este endpoint — use as ações do funil.
http
PUT /v1/ats/user/applications/:idPayload (Body)
| Atributo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
rating | number | Não | Avaliação da candidatura, de 1 a 5. |
source | enum | Não | Origem: job_board, career_site, referral, sourced, import, agency ou other. |
coverLetter | string | Não | Carta de apresentação. |
Exemplo de Requisição
bash
curl -X PUT "https://api.us.basis.tavares.in/v1/ats/user/applications/1" \
-H "X-Ats-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"rating": 4,
"source": "career_site"
}'Respostas
204 No Content
Atualização concluída com sucesso.
422 Unprocessable Entity
Erro de validação nos campos enviados (por exemplo, rating fora do intervalo 1–5).
json
{
"errors": [
{
"message": "The rating field must be between 1 and 5",
"rule": "range",
"field": "rating"
}
]
}404 Not Found
Ocorre quando a candidatura não existe na instância.
Obter Kanban da Vaga
Retorna as etapas do pipeline da vaga, em ordem, cada uma com seus cartões de candidatura — o formato exato para montar o quadro Kanban no frontend.
http
GET /v1/ats/user/jobs/:jobId/kanbanParâmetros de Rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
jobId | number | Sim | O ID da vaga. |
Exemplo de Requisição
javascript
fetch('https://api.us.basis.tavares.in/v1/ats/user/jobs/1/kanban', {
headers: {
'X-Ats-Id': '3fa85f64-5717-4562-b3fc-2c963f66afa6',
'Authorization': 'Bearer {token}'
}
})
.then(response => response.json())
.then(data => console.log(data));Respostas
200 OK
Retorna um array de etapas com suas candidaturas em applications.
json
[
{
"id": 1,
"name": "New",
"type": "applied",
"position": 1,
"applications": [
{
"id": 1,
"atsStageId": 1,
"atsCandidateId": 1,
"rating": 4,
"status": "active",
"appliedAt": "2026-09-11T02:34:31.641+00:00",
"atsCandidate": {
"id": 1,
"firstName": "Maria",
"lastName": "Silva",
"email": "maria.silva@email.com"
}
}
]
},
{
"id": 2,
"name": "Screening",
"type": "screening",
"position": 2,
"applications": []
}
]404 Not Found
Ocorre quando a vaga não existe na instância.
Ações do Funil
As ações do funil conduzem a candidatura pelo pipeline. Todas exigem papel de gestão na empresa da vaga e seguem as regras abaixo.
| Ação | Rota | Efeito |
|---|---|---|
move | PATCH /v1/ats/user/applications/:id/move | Move para a etapa informada em toStageId. |
reject | PATCH /v1/ats/user/applications/:id/reject | Move para a etapa rejected, com motivo e nota. |
hire | PATCH /v1/ats/user/applications/:id/hire | Move para a etapa hired. |
hold | PATCH /v1/ats/user/applications/:id/hold | Define o status on_hold, sem mudar de etapa. |
Regras de negócio:
- Candidaturas
hiredouwithdrawnestão encerradas e não aceitam movimentação (422 APPLICATION_CLOSED). - A etapa de destino deve pertencer ao pipeline da vaga (
422 STAGE_PIPELINE_MISMATCH). - Em pipelines com
isEnforceSequential, só é permitido avançar ou voltar uma etapa por vez (422 INVALID_STAGE_MOVE). Etapas terminais (hired/rejected) são sempre permitidas. - O status é derivado do tipo da etapa:
hireddefine statushired+hiredAt;rejecteddefine statusrejected+rejectedAt; sair derejected/on_holdpara uma etapa não terminal reativa a candidatura (active). - Toda transição grava um registro de histórico (
from/to, quem moveu esecondsInFrom, o tempo em segundos na etapa anterior) — a base das métricas de tempo por etapa e time-to-hire.
Mover de Etapa
Move a candidatura para outra etapa do pipeline da vaga.
http
PATCH /v1/ats/user/applications/:id/movePayload (Body)
| Atributo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
toStageId | number | Sim | ID da etapa de destino (deve existir na instância e pertencer ao pipeline da vaga). |
Exemplo de Requisição
bash
curl -X PATCH "https://api.us.basis.tavares.in/v1/ats/user/applications/1/move" \
-H "X-Ats-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"toStageId": 2
}'Respostas
200 OK
Retorna a candidatura atualizada, com a nova etapa, stageChangedAt e lastActivityAt renovados.
json
{
"id": 1,
"atsId": 1,
"atsJobId": 1,
"atsCandidateId": 1,
"atsPipelineId": 1,
"atsStageId": 2,
"status": "active",
"source": "career_site",
"sourceDetails": {},
"referredByUserId": null,
"atsFileId": 1,
"coverLetter": "Tenho mais de 5 anos de experiência com desenvolvimento web, atuando principalmente com Node.js, TypeScript e PostgreSQL.",
"rating": 4,
"atsRejectionReasonId": null,
"rejectionNote": null,
"appliedAt": "2026-09-11T02:34:31.641+00:00",
"stageChangedAt": "2026-09-11T03:11:59.838+00:00",
"lastActivityAt": "2026-09-11T03:11:59.838+00:00",
"hiredAt": null,
"rejectedAt": null,
"withdrawnAt": null,
"createdAt": "2026-09-11T02:34:31.648+00:00",
"updatedAt": "2026-09-11T03:11:59.843+00:00"
}422 Unprocessable Entity
Regra de negócio violada ou payload inválido.
json
{
"code": "APPLICATION_CLOSED"
}json
{
"code": "STAGE_PIPELINE_MISMATCH"
}json
{
"code": "INVALID_STAGE_MOVE"
}Rejeitar Candidatura
Move a candidatura para a etapa rejected do pipeline, registrando o motivo da recusa (catálogo de motivos) e uma nota livre.
http
PATCH /v1/ats/user/applications/:id/rejectPayload (Body)
| Atributo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
atsRejectionReasonId | number | Não | ID do motivo de recusa (deve existir na instância). |
rejectionNote | string | Não | Observação livre sobre a recusa (máx. 2000 caracteres). |
Exemplo de Requisição
bash
curl -X PATCH "https://api.us.basis.tavares.in/v1/ats/user/applications/1/reject" \
-H "X-Ats-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"atsRejectionReasonId": 1,
"rejectionNote": "Candidato com bom perfil técnico, porém sem a experiência mínima exigida em Node.js e TypeScript para esta posição."
}'Respostas
200 OK
Retorna a candidatura com status rejected, etapa rejected e rejectedAt preenchido.
json
{
"id": 1,
"atsId": 1,
"atsJobId": 1,
"atsCandidateId": 1,
"atsPipelineId": 1,
"atsStageId": 6,
"status": "rejected",
"source": "career_site",
"sourceDetails": {},
"referredByUserId": null,
"atsFileId": 1,
"coverLetter": "Tenho mais de 5 anos de experiência com desenvolvimento web, atuando principalmente com Node.js, TypeScript e PostgreSQL.",
"rating": 4,
"atsRejectionReasonId": 1,
"rejectionNote": "Candidato com bom perfil técnico, porém sem a experiência mínima exigida em Node.js e TypeScript para esta posição.",
"appliedAt": "2026-09-11T02:34:31.641+00:00",
"stageChangedAt": "2026-09-11T03:14:57.028+00:00",
"lastActivityAt": "2026-09-11T03:14:57.103+00:00",
"hiredAt": null,
"rejectedAt": "2026-09-11T03:14:57.028+00:00",
"withdrawnAt": null,
"createdAt": "2026-09-11T02:34:31.648+00:00",
"updatedAt": "2026-09-11T03:14:57.106+00:00"
}422 Unprocessable Entity
Motivo de recusa inexistente na instância ou candidatura encerrada (APPLICATION_CLOSED).
Contratar Candidato
Move a candidatura para a etapa hired do pipeline, encerrando o processo com sucesso.
http
PATCH /v1/ats/user/applications/:id/hireExemplo de Requisição
bash
curl -X PATCH "https://api.us.basis.tavares.in/v1/ats/user/applications/1/hire" \
-H "X-Ats-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
-H "Authorization: Bearer {token}"Respostas
200 OK
Retorna a candidatura com status hired, etapa hired e hiredAt preenchido.
json
{
"id": 1,
"atsId": 1,
"atsJobId": 1,
"atsCandidateId": 1,
"atsPipelineId": 1,
"atsStageId": 5,
"status": "hired",
"source": "career_site",
"rating": 4,
"appliedAt": "2026-09-11T02:34:31.641+00:00",
"stageChangedAt": "2026-09-11T03:16:28.423+00:00",
"lastActivityAt": "2026-09-11T03:16:28.423+00:00",
"hiredAt": "2026-09-11T03:16:28.423+00:00",
"rejectedAt": null,
"withdrawnAt": null
}422 Unprocessable Entity
Ocorre quando a candidatura já está encerrada (APPLICATION_CLOSED).
json
{
"code": "APPLICATION_CLOSED"
}Colocar em Espera
Define o status da candidatura como on_hold, sem alterar a etapa atual. Útil para pausar processos sem recusar o candidato. Para retomar, basta mover a candidatura para uma etapa não terminal — o status volta a ser active.
http
PATCH /v1/ats/user/applications/:id/holdExemplo de Requisição
bash
curl -X PATCH "https://api.us.basis.tavares.in/v1/ats/user/applications/1/hold" \
-H "X-Ats-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
-H "Authorization: Bearer {token}"Respostas
200 OK
Retorna a candidatura com status on_hold e lastActivityAt atualizado.
json
{
"id": 1,
"atsId": 1,
"atsJobId": 1,
"atsCandidateId": 1,
"atsPipelineId": 1,
"atsStageId": 2,
"status": "on_hold",
"source": "career_site",
"rating": 4,
"appliedAt": "2026-09-11T02:34:31.641+00:00",
"stageChangedAt": "2026-09-11T03:11:59.838+00:00",
"lastActivityAt": "2026-09-11T03:17:05.016+00:00",
"hiredAt": null,
"rejectedAt": null,
"withdrawnAt": null
}422 Unprocessable Entity
Ocorre quando a candidatura já está encerrada (APPLICATION_CLOSED).
Notas da Candidatura
As notas permitem que o time colabore no contexto de uma candidatura. Cada nota tem uma visibilidade: team (padrão, visível a todo o time) ou private (visível somente ao autor). Somente o autor pode editar uma nota; a exclusão é permitida ao autor ou a usuários owner/admin.
Listar Notas
Lista as notas de uma candidatura, com paginação. Notas privadas de outros usuários não aparecem na listagem.
http
GET /v1/ats/user/applications/:applicationId/notesParâmetros de Rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
applicationId | number | Sim | O ID da candidatura. |
Parâmetros de Query
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
page | number | Não | O número da página (mínimo: 1). |
perPage | number | Não | Itens por página (entre 1 e 100, padrão: 25). |
Exemplo de Requisição
bash
curl -X GET "https://api.us.basis.tavares.in/v1/ats/user/applications/1/notes?page=1&perPage=25" \
-H "X-Ats-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json"Respostas
200 OK
Retorna um objeto de paginação contendo as notas, cada uma com os dados do autor.
json
{
"meta": {
"currentPage": 1,
"perPage": 25
},
"data": [
{
"id": 1,
"atsId": 1,
"atsApplicationId": 1,
"atsUserId": 1,
"body": "Candidata demonstrou ótimo domínio de Node.js e TypeScript na entrevista técnica. Recomendo avançar para a etapa final com o gestor.",
"visibility": "team",
"createdAt": "2026-09-11T03:17:23.672+00:00",
"updatedAt": "2026-09-11T03:17:23.672+00:00",
"atsUser": {
"id": 1,
"firstName": "John",
"lastName": "Doe",
"avatarUrl": null
}
}
]
}Criar Nota
Adiciona uma nota à candidatura. O autor é sempre o usuário autenticado.
http
POST /v1/ats/user/applications/:applicationId/notesPayload (Body)
| Atributo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
body | string | Sim | Conteúdo da nota (máx. 5000 caracteres). |
visibility | enum | Não | team (padrão) ou private (visível somente ao autor). |
Exemplo de Requisição
bash
curl -X POST "https://api.us.basis.tavares.in/v1/ats/user/applications/1/notes" \
-H "X-Ats-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"body": "Candidata demonstrou ótimo domínio de Node.js e TypeScript na entrevista técnica. Recomendo avançar para a etapa final com o gestor.",
"visibility": "team"
}'Respostas
201 Created
Retorna o ID da nota criada.
json
{
"id": 1
}422 Unprocessable Entity
Erro de validação nos campos enviados (por exemplo, body ausente).
json
{
"errors": [
{
"message": "The body field is required",
"rule": "required",
"field": "body"
}
]
}Atualizar Nota
Edita o conteúdo ou a visibilidade de uma nota. Somente o autor pode editar.
http
PUT /v1/ats/user/applications/:applicationId/notes/:idPayload (Body)
| Atributo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
body | string | Não | Novo conteúdo da nota (máx. 5000 caracteres). |
visibility | enum | Não | team ou private. |
Exemplo de Requisição
bash
curl -X PUT "https://api.us.basis.tavares.in/v1/ats/user/applications/1/notes/1" \
-H "X-Ats-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"body": "Candidata aprovada também na avaliação comportamental. Recomendo avançar para a proposta.",
"visibility": "team"
}'Respostas
204 No Content
Atualização concluída com sucesso.
403 Forbidden
Ocorre quando o usuário autenticado não é o autor da nota (FORBIDDEN).
json
{
"code": "FORBIDDEN"
}Remover Nota
Exclui uma nota da candidatura. Permitido ao autor ou a usuários owner/admin.
http
DELETE /v1/ats/user/applications/:applicationId/notes/:idExemplo de Requisição
bash
curl -X DELETE "https://api.us.basis.tavares.in/v1/ats/user/applications/1/notes/1" \
-H "X-Ats-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
-H "Authorization: Bearer {token}"Respostas
204 No Content
Remoção concluída com sucesso.
403 Forbidden
Ocorre quando o usuário autenticado não é o autor nem owner/admin (FORBIDDEN).