Senior RH
A Senior mantém duas gerações de API em paralelo: o WebService SOAP legado (WSFuncionario.asmx), ainda em produção na maioria dos clientes com Senior RH clássico, e a API REST da plataforma atual, Senior X.
Versões antigas — WebService SOAP
Endpoint típico:
POST https://SEU_SENIOR/SeniorWS/WSFuncionario.asmx
SOAPAction: "http://www.senior.com.br/WSFuncionario/ConsultarFuncionarios"
Envelope SOAP mínimo:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ConsultarFuncionarios xmlns="http://www.senior.com.br/WSFuncionario">
<usuario>SEU_USUARIO</usuario>
<senha>SUA_SENHA</senha>
<numEmp>1</numEmp>
</ConsultarFuncionarios>
</soap:Body>
</soap:Envelope>
Senior X — REST API
Autenticação OAuth2 (client_credentials), payloads JSON:
GET https://platform.senior.com.br/t/senior.com.br/hcm_pessoa/v1/employees
Authorization: Bearer {token}
Mapeamento de campos
| Campo Senior | Campo VELIX (Person) |
|---|---|
numEmp + numCad (concatenados) | externalId |
nomFuncionario | name |
numCpf | document |
sitAfastamento = '' | active: true |
externalId recomendado: ${numEmp}-${numCad}.
Exemplo — PHP (Senior X REST)
- PHP
- PowerShell
use Velix\VelixClient;
use Velix\Modules\PersonsModule;
use GuzzleHttp\Client;
$senior = new Client(['base_uri' => getenv('SENIOR_X_URL')]);
$velix = new VelixClient([
'apiUrl' => getenv('VELIX_API_URL'),
'apiKey' => getenv('VELIX_API_KEY'),
]);
$persons = new PersonsModule($velix);
$token = json_decode(
$senior->post('/authorization_server/oauth/token', [
'form_params' => [
'grant_type' => 'client_credentials',
'client_id' => getenv('SENIOR_CLIENT_ID'),
'client_secret' => getenv('SENIOR_CLIENT_SECRET'),
],
])->getBody(),
true
)['access_token'];
$employees = json_decode(
$senior->get('/hcm_pessoa/v1/employees', [
'headers' => ['Authorization' => "Bearer $token"],
])->getBody(),
true
);
foreach ($employees['content'] as $e) {
$externalId = "{$e['numEmp']}-{$e['numCad']}";
$persons->upsert([
'externalId' => $externalId,
'name' => $e['nomFuncionario'],
'document' => $e['numCpf'],
]);
}
Import-Module VelixSDK
Connect-Velix -ApiUrl $env:VELIX_API_URL -ApiKey $env:VELIX_API_KEY
$token = (Invoke-RestMethod -Method Post -Uri "$env:SENIOR_X_URL/authorization_server/oauth/token" -Body @{
grant_type = "client_credentials"
client_id = $env:SENIOR_CLIENT_ID
client_secret = $env:SENIOR_CLIENT_SECRET
}).access_token
$employees = Invoke-RestMethod -Uri "$env:SENIOR_X_URL/hcm_pessoa/v1/employees" `
-Headers @{ Authorization = "Bearer $token" }
foreach ($e in $employees.content) {
$externalId = "$($e.numEmp)-$($e.numCad)"
Invoke-VelixUpsertPerson -ExternalId $externalId -Name $e.nomFuncionario -Document $e.numCpf
}
Recomendação de arquitetura
- Senior RH clássico (SOAP): rode o sync como job Windows Service ou tarefa agendada próxima ao servidor Senior, já que o WebService normalmente só é acessível na rede interna do cliente.
- Senior X (REST): pode ser consumido diretamente de um job em nuvem, já que a API é pública com OAuth2.