Documentação RENT API
1
Índice
1. Visão Geral........................................................................................................................................ 3
1.1. Autenticação................................................................................................................................. 3
1.2. Submissão de informação da empresa ........................................................................................ 3
1.3. Submissão dos centros de trabalho ............................................................................................. 3
1.4. Submissão dos trabalhadores ...................................................................................................... 3
2. Autenticação..................................................................................................................................... 4
3. Sumário de Endpoints ...................................................................................................................... 4
3.1. POST /rent_api/Account/login ................................................................................................ 4
3.2. POST /rent_api/Account/refresh-token.................................................................................. 5
3.3. GET /rent_api/DataSets/GetDataSet ...................................................................................... 6
3.4. POST /rent_api/RENT/submit-company-information ............................................................ 7
3.5. POST /rent_api/RENT/submit-work-centers-information ................................................... 10
3.6. POST /rent_api/RENT/submit-work-center-employees-information .................................. 11
3.7. POST /rent_api/RENT/submit-work-center-employee-documents ..................................... 13
3.8. POST /rent_api/RENT/submit-rent-map ............................................................................... 15
2
1. Visão Geral
A API RENT permite que empresas submetam dados relacionados com os seus centros de
emprego e trabalhadores para efeitos de submissão do mapa RENT.
A API está disponível em: [Link] e demais especificações técnicas
poderão ser consultadas aqui: [Link]
[Link]/rent_api/[Link]?url=/rent_api/[Link]
Os utilizadores deverão ser empresas, já registadas no portal do INEFOP, e devem autenticar-
se para que consigam submeter qualquer informação.
A submissão é permitida apenas durante um determinado intervalo de tempo definido pelo
INEFOP e apenas poderá submeter um mapa RENT por ano.
Os utilizadores devem seguir o seguinte fluxo na submissão de dados:
1.1. Autenticação
Os utilizadores do tipo empresa devem autenticar-se na API. O token JWT recebido na
autenticação deve ser usado no cabeçalho das restantes invocações.
1.2. Submissão de informação da empresa
Este método permite a actualização dos dados da empresa. Não é obrigatória a sua
invocação. Caso não seja invocado, são utilizados os dados que estão actualmente no sistema.
1.3. Submissão dos centros de trabalho
Com este método, os utilizadores enviam a informação de todos os centros de trabalho. Se a
empresa tiver mais do que 500 centros de trabalho, deve ser feita mais do que uma invocação.
A informação de todos os centros de trabalho da empresa deve ser enviada para o sistema. No
caso de haver uma falha na submissão de um dos centros numa invocação com 500 centros,
nenhum centro será inserido/atualizado.
1.4. Submissão dos trabalhadores
Este método permite o envio da informação referente aos trabalhadores da empresa. Se a
empresa tiver mais do que 500 trabalhadores, deve ser feita mais do que uma invocação. A
informação de todos os trabalhadores da empresa deve ser enviada para o sistema. No caso de
haver uma falha na submissão de um dos trabalhadores numa invocação com 500 trabalhadores,
nenhum trabalhador será inserido/atualizado.
1.5. Submissão dos documentos dos trabalhadores
3
Através deste método, os utilizadores podem enviar os documentos necessários dos
trabalhadores. Apenas é possível enviar 50 documentos de cada vez, pelo que, se necessário, os
utilizadores deverão invocar mais do que uma vez o método. Trabalhadores com documento de
identificação diferente de “Bilhete de Identidade” devem submeter o documento de
identificação neste método, e ainda, se o documento de identificação for “Passaporte”, deve ser
enviado também o Visto. Só é permitido o envio de documentos do tipo .pdf, .jpg, .jpeg, e .png.
1.6. Submissão do mapa RENT
Este método deve ser invocado após toda a informação dos centros de trabalho e
trabalhadores ser submetida. Apenas informação enviada pelos métodos acima de submissão de
centros de trabalho e trabalhadores será considerada. Todos os centros e trabalhadores cuja
informação não tenha sido enviada serão inactivados no sistema e não constarão no mapa RENT.
Segue informação mais detalhada acerca dos endpoints disponíveis.
2. Autenticação
Todos os endpoints seguros requerem um token Bearer no cabeçalho Authorization:
Authorization: Bearer {JWT Token}
3. Sumário de Endpoints
Segue a descrição dos endpoints disponíveis na API
3.1. POST /rent_api/Account/login
Descrição: Autenticação de utilizador e obtenção de tokens JWT.
Corpo do Pedido: SimpleLoginFO_UserCommand
• username: Nome de utilizador
• password: Palavra-passe do utilizador
Exemplo – pedido:
4
{
"username": "string",
"password": "string"
}
Resposta: SimpleLoginResult
• jwtToken: Token de autenticação
• refreshToken: Token de actualização
• name: Nome do utilizador
• mustConfirmMail: É necessário confirmar o e-mail
• mustConfirmPhone: É necessário confirmar o telefone
• email: E-mail do utilizador
• phoneNumber: Telefone do utilizador
Exemplo – resposta de sucesso (200):
{
"succeeded": true,
"errors": [
"string"
],
"jwtToken": "string",
"refreshToken": "string",
"name": "string",
"mustConfirmPhone": true,
"mustConfirmEmail": true,
"email": "string",
"phoneNumber": "string"
}
3.2. POST /rent_api/Account/refresh-token
Descrição: Geração de novo token de autenticação baseado no token de actualização.
Corpo do Pedido: RefreshTokenSimpleCommand
• refreshToken: Token de actualização
Exemplo – pedido:
5
{
"refreshToken": "string"
}
Resposta: SimpleLoginResult
• jwtToken: Token de autenticação
• refreshToken: Token de actualização
• name: Nome do utilizador
• mustConfirmMail: É necessário confirmar o e-mail
• mustConfirmPhone: É necessário confirmar o telefone
• email: E-mail do utilizador
• phoneNumber: Telefone do utilizador
Exemplo – resposta de sucesso (200):
{
"succeeded": true,
"errors": [
"string"
],
"jwtToken": "string",
"refreshToken": "string",
"name": "string",
"mustConfirmPhone": true,
"mustConfirmEmail": true,
"email": "string",
"phoneNumber": "string"
}
3.3. GET /rent_api/DataSets/GetDataSet
Descrição: Obter informações de um determinado DataSet.
Parâmetros de Query:
• name: Nome do DataSet. Valores possíveis:
o BusinessPurpose
o LegalForm
o Provinces
o EconomicActivitiesClassification
o CompanyActivity
o Municipalities
o Nationalities
6
o AcademicLevel
o Gender
o MaritalStatus
o RENTEmployeeDocumentTypes
o EmploymentProfessionalCategory
o EmploymentStatus
o ProfessionalCategory
o EmploymentCenter
o CollectiveEmployeeDocumentTypes
o CompanyPropertyType
Resposta: Lista de DataSetDTO
• id: Id do registo
• value: Valor do registo
• keyValue: Chave do registo
Exemplo – resposta de sucesso (200):
[
{
"id": 0,
"value": "string",
"keyValue": "string"
}
]
3.4. POST /rent_api/RENT/submit-company-information
Descrição: Submissão da informação da empresa.
Corpo do Pedido: UpdateRENTFrontOfficeUserCommand
• companyInfo: Objecto CompanyInformation
o contactName: Nome - Obrigatório
o taxIdNumber: NIF - Obrigatório - Deve ter entre 8 a 14 caracteres
o permitCode: Código do alvará - Obrigatório - Deve ter no máximo 25 caracteres
o permitCodeValidUntil: Data de validade do alvará - Obrigatório
o niss: NISS
o companyAddress: Objeto CompanyAddress
▪ provinceKey: Província - Obrigatório - Preencher com keyValue
correspondente do DataSet 'Provinces'
7
▪ municipalityKey: Município - Obrigatório - Preencher com keyValue
correspondente do DataSet 'Municipalities' - Deve pertencer à província
selecionada
▪ address: Morada - Obrigatório
▪ district: Bairro - Obrigatório
o businessPurposeKeyList: Lista de sector económico - Obrigatório - Valores da lista
devem ser preenchidos com os keyValue correspondentes do DataSet
'BusinessPurpose'
o experience: Anos de experiência - Obrigatório
o companyEmail: Email da empresa - Obrigatório
o companyPhone: Telefone da empresa - Obrigatório
o companyEACKey: CAE da Empresa - Obrigatório - Preencher com keyValue
correspondente do DataSet 'EconomicActivitiesClassification'
o shareCapital: Capital Social - Obrigatório
o publicDivisionPercentage: Repartição Estatal (%) - Obrigatório - As duas repartições
devem perfazer 100%
o privateNationalDivisionPercentage: Repartição Privado Nacional (%) - Obrigatório -
As duas repartições devem perfazer 100%
o activityStartYear: Ano de início de actividade - Obrigatório
o legalFormKey: Natureza Jurídica - Obrigatório - Preencher com keyValue
correspondente do DataSet 'LegalForm'
o companyActivityKey: Actividade principal da empresa - Obrigatório - Preencher com
keyValue correspondente do DataSet 'CompanyActivity'
o corporateObject: Objecto social - Obrigatório
o companyPropertyTypeKey: Tipo de Propriedade - Obrigatório - Preencher com
keyValue correspondente do DataSet 'CompanyPropertyType'
• isFirstSubmission: Indica se é a primeira submissão da empresa. Deve estar a true caso a
empresa tenha sido criada no ano que está a declarar e tem 30 dias para entregar o rent
após a sua constituição, deve ser false se já não é a primeira vez que entrega o rent
8
Exemplo – pedido:
{
"companyInfo": {
"contactName": "string",
"taxIdNumber": "string",
"permitCode": "string",
"permitCodeValidUntil": "2025-04-16T10:04:52.633Z",
"niss": "string",
"companyAddress": {
"provinceKey": "string",
"municipalityKey": "string",
"address": "string",
"district": "string"
},
"businessPurposeKeyList": [
"string"
],
"experience": 0,
"companyEmail": "string",
"companyPhone": "string",
"companyEACKey": "string",
"subsidiaryCompany": "string",
"subsidiaryCompanyPostalCode": "string",
"subsidiaryCompanyActivity": "string",
"subsidiaryCompanyEACKey": "string",
"maleWorkersNumber": 0,
"femaleWorkersNumber": 0,
"totalWorkersNumber": 0,
"shareCapital": 0,
"publicDivisionPercentage": 0,
"privateNationalDivisionPercentage": 0,
"activityStartYear": 0,
"legalFormKey": "string",
"companyActivityKey": "string",
"corporateObject": "string"",
"companyPropertyTypeKey": "string"
},
"isFirstSubmission": false
}
Resposta: Result
• succeded: Sucesso na operação?
• errors: Lista de mensagens de erro
Exemplo – resposta de sucesso (200):
{
"succeeded": true,
"errors": [
"string"
]
}
9
3.5. POST /rent_api/RENT/submit-work-centers-information
Descrição: Submissão dos centros de trabalho da empresa (máx. 500 por invocação).
Corpo do Pedido: UpsertRENTWorkCentersCommand
• workCenterList: Objecto com lista de WorkCenter
o Cada WorkCenter contém:
▪ provinceKey: Província - Obrigatório - Preencher com keyValue
correspondente do DataSet 'Provinces'
▪ municipalityKey: Município - Obrigatório - Preencher com keyValue
correspondente do DataSet 'Municipalities' - Deve pertencer à província
selecionada
▪ activityKey: Actividade - Obrigatório - Preencher com keyValue
correspondente do DataSet 'EconomicActivitiesClassification'
▪ name: Nome do Centro - Obrigatório
▪ address: Morada - Obrigatório
▪ postalCode: Caixa Postal
▪ phoneNumber: Telefone - Obrigatório
▪ email: Email - Obrigatório
▪ workerCount: Nº de trabalhadores - Obrigatório
▪ instrumentCount: Instrumento - Obrigatório
• isFirstSubmission: Indica se é a primeira submissão da empresa. Deve estar a true caso a
empresa tenha sido criada no ano que está a declarar e tem 30 dias para entregar o rent
após a sua constituição, deve ser false se já não é a primeira vez que entrega o rent
Exemplo – pedido:
10
{
"workCenterList": {
"workCenters": [
{
"provinceKey": "string",
"municipalityKey": "string",
"activityKey": "string",
"name": "string",
"address": "string",
"postalCode": "string",
"phoneNumber": "string",
"email": "string",
"workerCount": 0,
"instrumentCount": "string"
}
]
},
"isFirstSubmission": false
}
Resposta: Result
• succeded: Sucesso na operação?
• errors: Lista de mensagens de erro
Exemplo – resposta de sucesso (200):
{
"succeeded": true,
"errors": [
"string"
]
}
3.6. POST /rent_api/RENT/submit-work-center-employees-information
Descrição: Submissão da informação dos trabalhadores (máx. 500).
Corpo do Pedido: UpsertRENTWorkCenterEmployeesCommand
• workCenterEmployeeList: Objecto com lista de WorkCenterEmployeeInfo
o Cada WorkCenterEmployeeInfo contém:
▪ provinceKey: Província - Obrigatório se nacionalidade for Angolana -
Preencher com keyValue correspondente do DataSet 'Provinces'
11
▪ municipalityKey: Município - Obrigatório se nacionalidade for Angolana -
Preencher com keyValue correspondente do DataSet 'Municipalities' -
Deve pertencer à província selecionada
▪ nationalityKey: Nacionalidade - Obrigatório - Preencher com keyValue
correspondente do DataSet 'Nationalities'
▪ address: Morada - Obrigatório
▪ name: Nome do trabalhador - Obrigatório
▪ ssn: NISS - Obrigatório - Caso o trabalhador não esteja inscrito no INSS,
colocar o nº Visto Trabalho
▪ nif: NIF - Obrigatório
▪ dateOfBirth: Data de nascimento - Obrigatório
▪ genderKey: Género - Obrigatório - Preencher com keyValue
correspondente do DataSet 'Gender'
▪ maritalStatusKey: Estado Civil - Obrigatório - Preencher com keyValue
correspondente do DataSet 'MaritalStatus'
▪ academicLevelKey: Nível Académico - Obrigatório - Preencher com keyValue
correspondente do DataSet 'AcademicLevel'
▪ documentTypeKey: Documento de Identificação - Obrigatório - Preencher
com keyValue correspondente do DataSet
'CollectiveEmployeeDocumentTypes'
▪ identityDocumentNumber: N.º Documento de Identificação - Obrigatório
▪ workVisaNumber: Nº de Visto de trabalho do trabalhador - Obrigatório se o
Documento de Identificação for Passaporte
▪ identityDocumentIssueDate: Data de Emissão do Documento de
Identificação - Obrigatório
▪ identityDocumentExpiryDate: Data de Validade do Documento de
Identificação - Obrigatório
▪ addmissionDate: Data de Admissão - Obrigatório
▪ professionalCategoryKey: Categoria Profissional - Obrigatório - Preencher
com keyValue correspondente do DataSet
'EmploymentProfessionalCategories'
▪ employmentStatusKey: Situação Profissional - Obrigatório - Preencher com
keyValue correspondente do DataSet 'EmploymentStatuses'
▪ baseSalary: Remuneração total em Kz - Obrigatório
▪ salaryStatedInTheContract: Salário Expresso no Contracto em Kz -
Obrigatório
▪ functionKey: Profissão - Obrigatório - Preencher com keyValue
correspondente do DataSet 'ProfessionalCategory'
▪ normalWorkingHours: Horas normais
▪ weeklyWorkingHours: Horas semanais
▪ regularProvision: Prestação regular
▪ irregularProvision: Prestação irregular
12
• isFirstSubmission: Indica se é a primeira submissão da empresa. Deve estar a true caso a
empresa tenha sido criada no ano que está a declarar e tem 30 dias para entregar o rent
após a sua constituição, deve ser false se já não é a primeira vez que entrega o rent
Resposta: Result
• succeded: Sucesso na operação?
• errors: Lista de mensagens de erro
Exemplo – resposta de sucesso (200):
{
"succeeded": true,
"errors": [
"string"
]
}
3.7. POST /rent_api/RENT/submit-work-center-employee-documents
Descrição: Submissão dos documentos dos trabalhadores (máx. 50 documentos).
Corpo do Pedido: multipart/form-data
• WorkCenterEmployeeDocumentList: Objecto com lista de WorkCenterEmployeeDocumentInfo
o Cada WorkCenterEmployeeDocumentInfo contém:
▪ documentTypeKey: Tipo de Documento de Identificação - Obrigatório -
Preencher com keyValue correspondente do DataSet
'RENTEmployeeDocumentTypes'
▪ employeeSSN: NISS do trabalhador a quem pertence o documento -
Obrigatório - Caso o trabalhador não esteja inscrito no INSS, colocar o nº
Visto Trabalho
▪ documentIndex: Posição do documento na lista de documentos
'Documents' - Obrigatório - O primeiro documento da lista tem índice 0
• Documents: Lista de arquivos (ficheiros binários)
• isFirstSubmission: Indica se é a primeira submissão da empresa. Deve estar a true caso a
empresa tenha sido criada no ano que está a declarar e tem 30 dias para entregar o rent
após a sua constituição, deve ser false se já não é a primeira vez que entrega o rent
Não é possível invocar este método através da Swagger UI apresentada quando se acede ao URL
da aplicação. A título de exemplo, apresenta-se abaixo um exemplo de código C# que permite a
invocação do método.
13
var client = new RestClient("<URL_API>");
var request = new RestRequest("rent_api/RENT/submit-work-center-employee-
documents", [Link]);
// Add multipart form data headers
[Link] = true;
// Add Bearer token to the Authorization header
[Link]("Authorization", $"Bearer {bearerToken}");
for (int i = 0; i < [Link]; i++)
{
var docInfo = documents[i];
[Link]($"WorkCenterEmployeeDocumentList[{i}].DocumentTypeKey",
[Link]());
[Link]($"WorkCenterEmployeeDocumentList[{i}].EmployeeSSN",
[Link]);
[Link]($"WorkCenterEmployeeDocumentList[{i}].DocumentIndex",
[Link]());
}
foreach (var (fileName, content) in files)
{
[Link]("Documents", content, fileName, "image/png");
}
var response = await [Link](request);
if ([Link])
{
[Link]("Files and document info uploaded successfully.");
}
else
{
[Link]($"Error: {[Link]}");
Resposta: Result
• succeded: Sucesso na operação?
• errors: Lista de mensagens de erro
Exemplo – resposta de sucesso (200):
{
"succeeded": true,
"errors": [
"string"
]
}
14
3.8. POST /rent_api/RENT/submit-rent-map
Descrição: Submissão final do Mapa RENT.
Corpo do Pedido: SubmitRENTMapCommand
• employmentCenterKey: Centro de emprego - Obrigatório - Preencher com keyValue
correspondente do DataSet 'EmploymentCenter'
• isFirstSubmission: Indica se é a primeira submissão da empresa. Deve estar a true caso a
empresa tenha sido criada no ano que está a declarar e tem 30 dias para entregar o rent
após a sua constituição, deve ser false se já não é a primeira vez que entrega o rent
Exemplo – pedido:
{
"employmentCenterKey": "string",
"isFirstSubmission": false
}
Resposta: RENTMapSubmitResult
• mapName: Nome do mapa RENT
• status: Estado do mapa RENT
• submissionDate: Data de submissão do mapa RENT
• success: Sucesso na submissão
Exemplo – resposta de sucesso (200):
{
"mapName": "string",
"status": "string",
"submissionDate": "string",
"success": true
}
15