Criando uma vaga padrão na Gupy

Essa vaga será criada na Gupy cumprindo os requisitos mínimos obrigatórios com filiais e campo code

Gerando o token

Para utilizar este fluxo, é necessário utilizar o Bearer Token gerado nas configurações avançadas da plataforma. Acesse nossa seção de autenticação para saber como gerar o o token de autenticação.

No momento de gerar o token habilite os seguintes endpoints da V1:

  • Company Branches
  • Company Departments
  • Jobs
  • Job Roles

📘

Atenção!

A criação de uma vaga através da API sempre irá criar com status "draft", se a sua necessidade é que a vaga entre na Gupy como aprovada ou publicada será necessário chamar outro endpoint para alterar o status após a criação. Consulte esse fluxo clicando aqui

Não há tratativas para caracteres especiais, a informação será cadastrada conforme foi enviada. Exemplo: se no nome da vaga houver a palavra "P&D" a mesma será cadastrada e exibida como "P&D"

Fluxo de integração:

Para realizar a criação da vaga alguns campos são obrigatórios, dentre eles o código gerado pela Gupy no momento em que um cargo é criado, para obter esse número identificador siga o processo abaixo:

1. Obtendo roleId

Com o seu código de cargo (id interno) utilize o GET Roles com o parâmetro code = código de cargo (id interno).

Caso o response retorne algum registro, armazenar results.id para utilizá-lo no POST Jobs com roleId.

Caso o response não retorne nenhum registro, utilizar o POST Roles com:
name = Nome do Cargo
code = seu código de cargo (id interno)
similiarTo = criar regra com o seu RH

Após sucesso, armazenar results.id para utilizá-lo no POST Jobs com roleId.

Exemplo de requisição

curl --request GET \
     --url 'https://api.gupy.io/api/v1/roles?code=3912&perPage=10&page=1' \
     --header 'accept: application/json' \
     --header 'authorization: Bearer XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX'

Exemplo de resposta

{
  "results": [
    {
      "id": 7872,
      "name": "Analista de Integrações",
      "code": 3912,
      "similarTo": "analyst",
      "createdAt": "2018-07-17T17:58:12.965Z",
      "updatedAt": "2022-11-17T19:26:15.969Z"
    }
  ],
  "totalResults": 1,
  "page": 1,
  "totalPages": 1
}

Outro campo obrigatório é o código gerado pela Gupy no momento em que uma área é criada, para obter esse número identificador siga o processo abaixo:

2. Obtendo departmentId

Com o seu código de área (id interno) utilize o GET Departments com o parâmetro code = código de cargo (id interno).

Caso o response retorne algum registro, armazenar results.id para utilizá-lo no POST Jobs com roleId.

Caso o response não retorne nenhum registro, utilizar o POST Departments com
name = Nome da área
code = seu código de área (id interno)
similiarTo = criar regra com o seu RH

Após sucesso, armazenar results.id para utiliza-lo no POST Jobs com roleId.

Exemplo de requisição

curl --request GET \
     --url 'https://api.gupy.io/api/v1/departments?perPage=10&page=1' \
     --header 'accept: application/json' \
     --header 'authorization: Bearer XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX'

Exemplo de resposta

{
  "results": [
    {
      "id": 5962,
      "name": "Administrativo (Adm.)",
      "code": 1439,
      "similarTo": "financial_management",
      "createdAt": "2018-07-17T16:49:14.159Z",
      "updatedAt": "2021-08-25T13:37:39.823Z"
    }
  ],
  "totalResults": 1,
  "page": 1,
  "totalPages": 1
}

Um campo opcional, porém frequentemente utilizado é o código gerado pela Gupy no momento em que uma filial ou estrutura organizacional é criada, para obter esse número identificador siga o processo abaixo:

3. Obtendo branchId

Com o seu código de filial (id interno) utilize o GET Branches com o parâmetro code = código de cargo (id interno).

Caso o response retorne algum registro, armazenar results.id para utilizá-lo no POST Jobs com branchId.

Caso o response não retorne nenhum registro, utilizar o POST Branches com
code = seu código de cargo (id interno)
name = nome da filial
path = o caminho na estrutura organizacional

Após sucesso, armazenar results.id para utiliza-lo no POST Jobs com branchId.

Exemplo de requisição

curl --request GET \
     --url 'https://api.gupy.io/api/v1/branches?perPage=10&page=1' \
     --header 'accept: application/json' \
     --header 'authorization: Bearer XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX'

Exemplo de resposta

{
  "results": [
    {
      "id": 2743,
      "code": 3,
      "name": " MATRIZ",
      "path": [
        "matriz"
      ],
      "addressCountry": "Brasil",
      "addressCountryShortName": "BRA",
      "addressState": "São Paulo",
      "addressStateShortName": "SP",
      "addressCity": "São Paulo",
      "addressStreet": "Rua Haddock Lobo",
      "addressNumber": null,
      "addressZipCode": "1414000",
      "addressLatitude": -23.5599941,
      "addressLongitude": -46.66387049999999,
      "createdAt": "2019-06-20T13:44:09.932Z",
      "updatedAt": "2020-06-25T13:27:20.227Z"
    }
  ],
  "totalResults": 1,
  "page": 1,
  "totalPages": 1
}

4. Utilizando o campo code

Ao abrir uma requisição de vaga/posição no seu sistema interno um número identificador é atribuído à ela, esse número pode ser enviado para a Gupy através do campo code e assim o vínculo entre a vaga criada na Gupy e o número da RP é mantido.

5. Fazendo a requisição e criando a vaga

Faça a requisição para o endpoint POST Jobs, passando os campos obtidos anteriormente, conforme detalhamento abaixo:

ParâmetroDescrição
codeRefere-se ao código interno da vaga atribuído pelo sistema terceiro
nameTítulo dado para a vaga
typeModo de contratação
publicationTypeSe a vaga será interna ou externa
numVacanciesNúmero de pessoas que serão contratadas para uma mesma vaga.
departmentIdCódigo da área gerado automaticamente pela Gupy (campo Id) que a vaga está atrelada.
roleIdCódigo do cargo gerado automaticamente pela Gupy (campo Id) que a vaga está atrelada.
branchIdCódigo da filial gerado automaticamente pela Gupy (campo Id)

Exemplo de requisição:

curl --request POST \
     --url https://api.gupy.io/api/v1/jobs \
     --header 'accept: application/json' \
     --header 'authorization: Bearer xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx' \
     --header 'content-type: application/json' \
     --data '
{
  "type": "vacancy_type_effective",
  "publicationType": "external",
  "name": "Desenvolvedor Backend",
  "numVacancies": 2,
  "departmentId": 5962,
  "roleId": 7872,
  "branchId": 2743,  
  "code": "1974"
}
'

Exemplo de resposta:

```Text JSON
{
  "id": 7168372,
  "code": "1974",
  "name": "Desenvolvedor Backend",
  "status": "draft",
  "type": "vacancy_type_effective",
  "publicationType": "external",
  "numVacancies": 2,
  "departmentId": 5962,
  "departmentName": "Administrativo (ML)",
  "roleId": 7872,
  "roleName": "Analista Teste Z",
  "subsidiaryId": 2743,
  "subsidiaryName": "DEMO > MATRIZ",
  "createdAt": "2024-05-15T01:55:29.088Z",
  "updatedAt": "2024-05-15T01:55:29.211Z",
  "hiringDeadline": null,
  "description": null,
  "responsibilities": null,
  "prerequisites": null,
  "additionalInformation": null,
  "notes": null,
  "disabilities": false,
  "addressStreet": null,
  "addressNumber": null,
  "addressCity": null,
  "addressState": null,
  "addressStateShortName": null,
  "addressCountry": null,
  "addressCountryShortName": null,
  "addressComplements": null,
  "addressDistrict": null,
  "addressZipCode": null,
  "addressLatitude": null,
  "addressLongitude": null,
  "remoteWorking": false,
  "workplaceType": "on-site",
  "reason": null,
  "image": null,
  "socialMediaImage": null,
  "applicationDeadline": null,
  "careerPageId": null,
  "careerPageName": null,
  "vacancyCodes": [],
  "managerId": null,
  "managerName": null,
  "managerEmail": null,
  "recruiterId": null,
  "recruiterName": null,
  "recruiterEmail": null,
  "salary": {
    "currency": null,
    "startsAt": null,
    "endsAt": null
  }, 
  "jobRatingCriterias": [],
  "cancelReason": null,
  "cancelReasonNotes": null,
  "canceledByEmail": null,
  "cancelAt": null,
  "publishedAt": null,
  "closedAt": null,
  "approvedAt": null,
  "disapprovedAt": null,
  "lastFreezeDate": null,
  "lastUnfreezeDate": null,
  "creatorId": 22011,
  "creatorName": "Public API",
  "creatorEmail": "[email protected]",
  "videoUrl": null,
  "approvers": null,
  "workflowRequestMethod": null,
  "branchId": 2743,
  "branchName": "DEMO > MATRIZ"
}

Erros possíveis

  1. Não passar campos obrigatórios. O retorno será o seguinte:
{
  "title": "Validation Error",
  "detail": "Invalid value undefined supplied to /numVacancies: Number",
  "status": 400
}
  1. Passar valores incorretos para os campos roleId ,departmentId ou branchId. O retorno será o seguinte:
{
  "title": "Validation Error",
  "detail": "Department not found.",
  "code": "departmentId",
  "status": 400
}