Pular para o conteúdo principal

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 SeniorCampo VELIX (Person)
numEmp + numCad (concatenados)externalId
nomFuncionarioname
numCpfdocument
sitAfastamento = ''active: true

externalId recomendado: ${numEmp}-${numCad}.

Exemplo — PHP (Senior X REST)

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'],
]);
}

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.