Autenticação
Para autenticação e obtenção do token de acesso, siga o procedimento descrito abaixo:
- Obtenção do OAuth Client Assertion:
- Acesse o seguinte endpoint:
https://app.customerfi.com/rest/swagger-ui/index.html#!/oauth2/getOAuthClientAssertion_get_6GET
/rest/v2/oauth2/clients/{clientId}/assertion - Informe o
clientID
- Utilize o resultado para obtenção do
assertion
. - Geração do Access Token:
- Utilize o seguinte endpoint:
https://app.customerfi.com/rest/swagger-ui/index.html#!/oauth2/getToken_post_0POST
/rest/v2/oauth2/auth - Com o
assertion
access_token
.
O access_token
deverá ser informado no campo app_key
antes de realizar as consultas seguintes:
APIs Úteis
O companyId
utilizado na maioria das APIs pode ser obtido através de consulta no painel do Identity Configurações > Segurança > Token REST API
Lista todos os Usuários
GET
/rest/v2/companies/{companyId}/users
- Podendo ser informado o PageSize ou offset para necessidade de paginação.
Lista todos os Aplicativos
GET
/rest/v2/companies/{companyId}/apps
Listar todas as Roles ou Empresas associadas a um Aplicativo de ERP
GET
/rest/v2/scim/v2/extensions/Resources/Companies/{companyId}/Applications/{appId}
- Podendo ser informado o
resourceTypes
Role
Company
Gerenciamento de Recursos dos Aplicativos
As APIs responsáveis pela manipulação de recursos dos aplicativos estão documentadas no seguinte endpoint:
https://app.customerfi.com/rest/swagger-ui/index.html#!/scim
Consulta de Papeis e Empresas de um Aplicativo (RM ou Protheus)
Para listar os papeis atribuídos a um determinado aplicativo, utilize o seguinte endpoint:
GET
/rest/v2/scim/v2/extensions/Resources/Companies/{companyId}/Applications/{appId}
- Filtrando apenas os Papeis informando o
resourceTypes
Role
resourceTypes
Company
Consulta de Papeis ou Empresas Atribuídos a um Usuário
Para consultar os papeis vinculados a um usuário específico, utilize:
GET
/rest/v2/scim/v2/extensions/Entitlements/Companies/{companyId}/Users/{userId}
- Filtrando apenas os Papeis informando o
resourceTypes
Role
resourceTypes
Company
Para identificar a qual Empresa uma determinada Role está vinculada é possível consultar o ext.restrictions
informado. Exemplo:
Papel: Acesso_Hid
: “”
Empresa: ext.restrictions
: “”
Retorno do JSON:
{ "dateCreated": "2025-01-29_19:54:23", "id": "", "schemas": [ "urn:scim:schemas:core:2.0:ListResponse" ], "deleted": "N", "status": "A", "itemsPerPage": 25, "totalResults": 1, "startIndex": 1, "resourceClass": "com.totvslabs.idm.common.extension.Resource", "resources": [ { "dateCreated": "2025-01-15_00:26:01", "id": "", "externalId": "Acesso_H", "meta": { "dateCreated": "2025-01-29_19:54:23", "resourceType": "Resource" }, "schemas": [ "urn:scim:schemas:extension:2.0:Resource" ], "deleted": "N", "status": "A", "companyId": "", "applicationId": "", "type": "Role", "name": { "en-US": "Acesso_H", "es-ES": "Acesso_H", "pt-BR": "Acesso_H", "pt-PT": "Acesso_H" }, "description": { "en-US": "Controle%20de%20usu%C3%A1rios%2Fperfis", "es-ES": "Controle%20de%20usu%C3%A1rios%2Fperfis", "pt-BR": "Controle%20de%20usu%C3%A1rios%2Fperfis", "pt-PT": "Controle%20de%20usu%C3%A1rios%2Fperfis" }, "displayName": { "en-US": "Controle%20de%20usu%C3%A1rios%2Fperfis", "es-ES": "Controle%20de%20usu%C3%A1rios%2Fperfis", "pt-BR": "Controle%20de%20usu%C3%A1rios%2Fperfis", "pt-PT": "Controle%20de%20usu%C3%A1rios%2Fperfis" }, "ext": { "internalId": "Acesso_H", "owner": "user", "direct": "true", "restrictions": "[\"\"]" }, "scimResourceTypeEnum": "ROLE" } ]
Estrutura Hierárquica das Empresas no RM
No contexto do RM:
- Os papeis são organizados hierarquicamente abaixo de uma empresa, definido o type como “Role”.
- Cada empresa possui um identificador resourceID e um type definido como "Company".
No exemplo, a empresa abaixo possui o seguinte resourceID= 01010101010101__PR
Atribuição de Papeis a um Usuário
Para atribuir um papel a um usuário, restringindo por empresa, utilize o seguinte endpoint:POST
/rest/v2/scim/v2/extensions/Entitlements/Companies/{companyId}/Applications/{appId}/Users/{userId}
Ao efetuar a atribuição, é necessário informar:
- O papel que será vinculado ao usuário
- Se necessário uma empresa a qual o vínculo será restrito.
{ resourceIds:[""], modelRestriction:["01010101010101__PR"] }
Com isso será configurado apenas o Papel Acesso_H para empresa exemplo.
Se não for informado um modelRestriction
será ativo o papel para todas as empresas presentes.
Caso seja necessário remover a Role a API é semelhante, pode ser passado o mesm
POST
/rest/v2/scim/v2/extensions/Entitlements/Companies/{companyId}/Applications/{appId}/Users/{userId}/remove
Explicação sobre a Estrutura de Papeis no Identity
Os papeis dentro do Identity não são entidades independentes. A estrutura segue o modelo:
- O Identity possui usuários, grupos e aplicativos.
- Quando há integração com um ERP (como Protheus ou RM), é criado um aplicativo correspondente.
- No RM, um grupo de permissão determina quais itens de menu um usuário pode visualizar.
- Durante a sincronização do RM com o Identity, os grupos de permissão do RM são enviados para o aplicativo RM criado na integração.
- Para evitar confusão com os grupos do Identity, esses grupos de permissão são referenciados com o nome de papeis.
- Um papel só existe dentro de um aplicativo e não pode ser consultado sem referência ao aplicativo.
- Caso um aplicativo seja removido, todos os papeis associados também são excluídos.
Portanto, não é possível obter uma lista global de papeis sem especificar um aplicativo ou vínculo com o aplicativo. A listagem de papeis deve ser feita por aplicativo, utilizando os endpoints descritos anteriormente.
É possível consultar os Papeis vinculados a um usuário através do endpoint abaixo, filtrando o resourceTypes=”Role”
, porém note que todo Role
está vinculado a um applicationId
:GET
/rest/v2/scim/v2/extensions/Entitlements/Companies/{companyId}/Users/{userId}