Skip to content

Departamentos ​

Os departamentos representam a estrutura organizacional de cada empresa da instância — como "Human Resources" ou "Engineering" — e são usados para classificar vagas e membros do time de recrutamento. Cada departamento pertence a uma empresa (atsCompanyId) e pode ter um departamento pai (parentId), permitindo montar hierarquias com subdepartamentos dentro da mesma empresa.

O acesso é controlado por empresa: usuários owner/admin enxergam e gerenciam os departamentos de todas as empresas da instância, enquanto os demais usuários só acessam as empresas às quais estão vinculados. Quem não tem permissão de leitura ou gerenciamento sobre a empresa recebe 403 Forbidden.

Headers obrigatórios

Todas as requisições devem incluir o header X-Ats-Id (UUID) com o identificador da instância e Authorization: Bearer {token} com o token do usuário ATS.


Estrutura de Dados Principal ​

Um departamento contém as seguintes informações principais:

CampoTipoDescrição
nameStringNome do departamento (máx. 150 caracteres).
slugStringSlug gerado automaticamente a partir do nome.
atsCompanyIdNumberID da empresa à qual o departamento pertence.
parentIdNumberID do departamento pai (nulo para departamentos raiz).
parentObjectDados do departamento pai (no detalhe).
childrenArraySubdepartamentos (na árvore e no detalhe).

Endpoints ​

Endpoints protegidos para gerenciamento dos departamentos. Requerem autenticação de usuário ATS (atsUser) e respeitam o escopo de empresas do usuário autenticado.

Listar Departamentos ​

Lista os departamentos da instância com paginação, busca e ordenação. Usuários não administradores recebem apenas os departamentos das empresas às quais estão vinculados.

http
GET /v1/ats/user/departments

Parâmetros de Query ​

NomeTipoObrigatórioDescrição
pagenumberNãoO número da página (mínimo: 1).
perPagenumberNãoItens por página (entre 1 e 100).
searchstringNãoBusca por termo no nome (máx. 150 caracteres).
atsCompanyIdnumberNãoFiltra por empresa (deve existir na instância).
orderByenumNãoOrdena por id, name ou createdAt.
orderDirectionenumNãoDireção da ordenação: asc ou desc.

Exemplo de Requisição ​

bash
curl -X GET "https://api.us.basis.tavares.in/v1/ats/user/departments?atsCompanyId=1" \
  -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 departamentos.

json
{
  "meta": {
    "currentPage": 1,
    "perPage": 25
  },
  "data": [
    {
      "id": 2,
      "atsId": 1,
      "atsCompanyId": 1,
      "parentId": null,
      "name": "Human Resources",
      "slug": "human-resources",
      "createdAt": "2026-09-10T12:38:39.189+00:00",
      "updatedAt": "2026-09-10T12:38:39.189+00:00"
    },
    {
      "id": 1,
      "atsId": 1,
      "atsCompanyId": 1,
      "parentId": null,
      "name": "I.T",
      "slug": "i.t",
      "createdAt": "2026-09-10T12:38:22.468+00:00",
      "updatedAt": "2026-09-10T12:38:22.468+00:00"
    }
  ]
}

Listar Departamentos (Lista Simples) ​

Retorna os departamentos em formato simplificado (label/value), ideal para selects e filtros no frontend.

http
GET /v1/ats/user/departments/list

Parâmetros de Query ​

NomeTipoObrigatórioDescrição
searchstringNãoBusca por termo no nome (máx. 150 caracteres).
atsCompanyIdnumberNãoFiltra por empresa (deve existir na instância).

Exemplo de Requisição ​

bash
curl -X GET "https://api.us.basis.tavares.in/v1/ats/user/departments/list?atsCompanyId=1" \
  -H "X-Ats-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"

Respostas ​

200 OK

Retorna um array com os departamentos em formato label/value.

json
[
  {
    "value": 4,
    "label": "Engineering"
  },
  {
    "value": 3,
    "label": "Help Desk"
  },
  {
    "value": 2,
    "label": "Human Resources"
  },
  {
    "value": 1,
    "label": "I.T"
  }
]

Obter Árvore de Departamentos ​

Retorna a hierarquia completa de departamentos de uma empresa, com os subdepartamentos aninhados em children. Este endpoint exige o parâmetro atsCompanyId e permissão de leitura sobre a empresa.

http
GET /v1/ats/user/departments/tree

Parâmetros de Query ​

NomeTipoObrigatórioDescrição
atsCompanyIdnumberSimID da empresa (deve existir na instância).
searchstringNãoBusca por termo no nome (máx. 150 caracteres).

Exemplo de Requisição ​

javascript
fetch('https://api.us.basis.tavares.in/v1/ats/user/departments/tree?atsCompanyId=1', {
  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 com os departamentos raiz e seus subdepartamentos em children.

json
[
  {
    "id": 1,
    "parentId": null,
    "name": "I.T",
    "children": [
      {
        "id": 3,
        "parentId": 1,
        "name": "Help Desk",
        "children": [
          {
            "id": 4,
            "parentId": 3,
            "name": "Engineering",
            "children": []
          }
        ]
      }
    ]
  },
  {
    "id": 2,
    "parentId": null,
    "name": "Human Resources",
    "children": []
  }
]

403 Forbidden

O usuário não tem permissão para visualizar os departamentos desta empresa.

json
{
  "code": "FORBIDDEN",
  "message": "Você não tem permissão para visualizar este recurso"
}

Criar Novo Departamento ​

Cria um novo departamento em uma empresa, opcionalmente vinculado a um departamento pai da mesma empresa. O slug é gerado automaticamente a partir do nome. Requer permissão de gerenciamento sobre a empresa (owner/admin, ou recruiter/hiring_manager vinculado).

http
POST /v1/ats/user/departments

Payload (Body) ​

AtributoTipoObrigatórioDescrição
namestringSimNome do departamento (máx. 150 caracteres).
atsCompanyIdnumberSimID da empresa (deve existir na instância).
parentIdnumberNãoID do departamento pai (deve existir na mesma empresa).

Exemplo de Requisição ​

bash
curl -X POST "https://api.us.basis.tavares.in/v1/ats/user/departments" \
  -H "X-Ats-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Engineering",
    "atsCompanyId": 1,
    "parentId": 1
  }'

Respostas ​

201 Created

Retorna o ID do departamento criado.

json
{
  "id": 1
}

422 Unprocessable Entity

Erro de validação nos campos enviados.

json
{
  "errors": [
    {
      "message": "The name field must be defined",
      "rule": "required",
      "field": "name"
    }
  ]
}

403 Forbidden

O usuário não tem permissão para gerenciar departamentos desta empresa.

json
{
  "code": "FORBIDDEN",
  "message": "Você não tem permissão para gerenciar este recurso"
}

Obter Departamento por ID ​

Recupera os detalhes de um departamento, incluindo o departamento pai e os subdepartamentos.

http
GET /v1/ats/user/departments/:id

Parâmetros de Rota ​

NomeTipoObrigatórioDescrição
idnumberSimO ID do departamento.

Exemplo de Requisição ​

bash
curl -X GET "https://api.us.basis.tavares.in/v1/ats/user/departments/2" \
  -H "X-Ats-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"

Respostas ​

200 OK

Retorna o departamento com parent e children.

json
{
  "id": 2,
  "atsId": 1,
  "atsCompanyId": 1,
  "parentId": null,
  "name": "Human Resources",
  "slug": "human-resources",
  "createdAt": "2026-09-10T12:38:39.189+00:00",
  "updatedAt": "2026-09-10T12:38:39.189+00:00",
  "parent": null,
  "children": []
}

404 Not Found

Ocorre quando o departamento não existe na instância.

Atualizar Departamento ​

Atualiza os dados de um departamento existente. Ao alterar o nome, o slug é regenerado automaticamente. Ao mover o departamento para outra empresa (atsCompanyId), é exigida permissão de gerenciamento sobre as duas empresas.

http
PUT /v1/ats/user/departments/:id

Parâmetros de Rota ​

NomeTipoObrigatórioDescrição
idnumberSimO ID do departamento.

Payload (Body) ​

Todos os campos são opcionais; envie apenas os que deseja alterar.

AtributoTipoObrigatórioDescrição
namestringNãoNome do departamento (máx. 150 caracteres).
atsCompanyIdnumberNãoID da nova empresa (deve existir na instância).
parentIdnumberNãoID do departamento pai (deve existir na empresa informada, ou na instância quando atsCompanyId for omitido).

Exemplo de Requisição ​

bash
curl -X PUT "https://api.us.basis.tavares.in/v1/ats/user/departments/4" \
  -H "X-Ats-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Engineering",
    "parentId": 3
  }'

Respostas ​

204 No Content

Atualização concluída com sucesso.

404 Not Found

Ocorre quando o departamento não existe na instância.

403 Forbidden

O usuário não tem permissão para gerenciar departamentos da empresa.

Remover Departamento ​

Remove um departamento da instância. Requer permissão de gerenciamento sobre a empresa do departamento.

http
DELETE /v1/ats/user/departments/:id

Parâmetros de Rota ​

NomeTipoObrigatórioDescrição
idnumberSimO ID do departamento.

Exemplo de Requisição ​

bash
curl -X DELETE "https://api.us.basis.tavares.in/v1/ats/user/departments/5" \
  -H "X-Ats-Id: 3fa85f64-5717-4562-b3fc-2c963f66afa6" \
  -H "Authorization: Bearer {token}"

Respostas ​

204 No Content

Remoção concluída com sucesso.

404 Not Found

Ocorre quando o departamento não existe na instância.