Referência da API SCIM
Referência da API SCIM
Esta página documenta os endpoints SCIM 2.0 que a axe Account expõe para provisionamento de usuários e grupos. Na maioria dos casos, o conector SCIM do seu provedor de identidade chama esses endpoints para você; esta referência é destinada a equipes que constroem uma integração personalizada ou validam o comportamento diretamente.
A axe implementa o padrão SCIM 2.0 (RFC 7643 / RFC 7644). Esta página foca no comportamento específico da axe. Para o protocolo genérico, consulte as especificações SCIM.
URL base e autenticação
Todos os endpoints são servidos sob /api/scim/v2 no seu URL base regional ou privado:
https://axe.deque.com/api/scim/v2Autentique todas as solicitações com sua chave de API SCIM:
-H "X-API-Key: <API_KEY>"
# or
-H "Authorization: <API_KEY>"Veja Pré-requisitos e Configuração para obter uma chave e o URL base.
Convenções
- Tipo de conteúdo:
application/json - Respostas de erro usa o esquema de erro SCIM:
{ "schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"], "detail": "<message>", "status": <code> } - Paginação (Usuários):
startIndex(baseada em 1) ecount(1–100). - Filtragem (Usuários, Grupos):
filterusando o operadoreq, por exemplo,userName eq "user@example.com".
Usuários
Listar usuários
GET /api/scim/v2/UsersRetorna membros da sua empresa. Suporta paginação e filtragem.
Quando um filter é fornecido, a busca não é restringida à sua empresa: um usuário correspondente que não seja membro é retornado com active: false. Verifique active em vez de tratar qualquer resultado como membro. As solicitações filtradas sempre retornam no máximo um recurso e ignoram count e startIndex.
Parâmetros de consulta
| Parâmetro | Tipo | Descrição |
|---|---|---|
filter |
string | Opcional. por exemplo, userName eq "user@example.com" ou externalId eq "<id>". |
startIndex |
inteiro | Opcional. Índice baseado em 1 do primeiro resultado. Padrão 1. |
count |
inteiro | Opcional. Resultados por página, 1–100. |
Exemplo
curl -H "X-API-Key: $KEY" \
"https://axe.deque.com/api/scim/v2/Users?count=10&startIndex=1"Resposta 200 OK
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 42,
"itemsPerPage": 10,
"startIndex": 1,
"Resources": [
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "5f3e...c2",
"userName": "user@example.com",
"active": true,
"name": { "givenName": "Alex", "familyName": "Doe" },
"emails": [
{ "primary": true, "value": "user@example.com", "type": "work", "display": "user@example.com" }
],
"groups": [
{ "value": "grp-1", "display": "Axe Monitor", "$ref": "/Groups/grp-1" }
],
"meta": { "resourceType": "User", "location": "/Users/5f3e...c2" }
}
]
}Erros
| Status | detail |
|---|---|
| 400 | Count must be between 1-100 |
Obter um usuário
GET /api/scim/v2/Users/{id}Retorna um único usuário pelo seu ID de usuário axe. active reflete a associação à empresa.
Resposta 200 OK — um recurso de Usuário (veja acima).
Erros
| Status | detail |
|---|---|
| 404 | User not found |
Criar um usuário
POST /api/scim/v2/UsersProvisiona um usuário: cria a conta axe, adiciona-o à sua empresa e envia um e-mail de convite. Um valor groups no corpo é ignorado — atribua o acesso ao produto separadamente via PATCH /Groups.
Corpo da solicitação
| Campo | Obrigatório | Descrição |
|---|---|---|
schemas |
✅ | Deve incluir urn:ietf:params:scim:schemas:core:2.0:User. |
userName |
✅ | O e-mail do usuário. |
name.givenName |
✅ | Primeiro nome. |
name.familyName |
✅ | Sobrenome. |
emails |
✅ | Array com exatamente uma entrada primary: true. |
active |
✅ | true adiciona o usuário à empresa. |
externalId |
— | Identificador único do seu diretório (recomendado). |
Exemplo
curl -X POST -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d '{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"userName": "user@example.com",
"name": { "givenName": "Alex", "familyName": "Doe" },
"emails": [{ "type": "work", "value": "user@example.com", "primary": true }],
"active": true
}' \
"https://axe.deque.com/api/scim/v2/Users"Resposta 201 Created — o recurso de Usuário criado.
Erros
| Status | detail |
|---|---|
| 400 | Validation errors: Exactly one primary e-mail is required at 'emails'. (envelope de erro genérico, não o esquema de erro SCIM) |
| 400 | A primary email is required but was not found in the emails array |
| 400 | User email domain does not match enterprise root group |
| 400 | Enterprise does not have an identity provider configured |
| 409 | User is already a member of an enterprise |
Substituir um usuário
PUT /api/scim/v2/Users/{id}Atualiza o nome e o e-mail de um usuário.
Corpo da solicitação
| Campo | Obrigatório | Descrição |
|---|---|---|
schemas |
✅ | Deve incluir urn:ietf:params:scim:schemas:core:2.0:User. |
id |
✅ | Axe user ID do usuário (UUID). Deve corresponder a {id} no caminho. |
name.givenName |
✅ | Primeiro nome. |
name.familyName |
✅ | Sobrenome. |
emails |
✅ | Array contendo os e-mails do usuário. Exatamente uma entrada deve ter primary: true. |
name.middleName |
— | Nome do meio. |
meta |
— | Aceito e ignorado; o servidor atribui meta. |
Resposta 200 OK — o recurso de Usuário atualizado.
Erros
| Status | detail |
|---|---|
| 404 | User not found |
| 403 | User is a member of multiple enterprises |
| 403 | User is not a member of this enterprise |
| 400 | No primary email found in the provided emails array |
| 409 | A user with this email already exists |
Ativar ou desativar um usuário
PATCH /api/scim/v2/Users/{id}Define a associação à empresa. active: true adiciona o usuário à empresa; active: false o desativa (remove a associação; a conta é mantida).
Corpo da solicitação
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [
{ "op": "replace", "value": { "active": false } }
]
}Resposta 204 No Content
Erros
| Status | detail |
|---|---|
| 404 | User not found |
| 400 | Cannot remove the last admin from the enterprise |
Desativar um usuário
DELETE /api/scim/v2/Users/{id}Remove o usuário de sua empresa (remoção leve — a conta é mantida).
Resposta 204 No Content
Erros
| Status | detail |
|---|---|
| 404 | User not found |
| 400 | Cannot remove the last admin from the enterprise |
Grupos
Os grupos são assinaturas de produtos (concedem acesso a um produto) ou equipes (organizam os usuários). Veja Como o SCIM Funciona com a Conta axe.
Listar grupos
GET /api/scim/v2/GroupsRetorna todas as assinaturas de produtos e equipes de sua empresa. Este endpoint não é paginado.
Parâmetros de consulta
| Parâmetro | Tipo | Descrição |
|---|---|---|
filter |
string | Opcional. displayName eq "<name>". Correspondência exata e Sensível a maiúsculas com nomes de equipes e nomes de produtos — diferente do filtro userName em /Users, que não distingue maiúsculas de minúsculas. |
Resposta 200 OK
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 5,
"startIndex": 1,
"itemsPerPage": 5,
"Resources": [
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
"id": "grp-1",
"displayName": "Axe Monitor",
"members": [
{ "value": "5f3e...c2", "display": "user@example.com", "$ref": "/Users/5f3e...c2" }
]
}
]
}Obter um grupo
GET /api/scim/v2/Groups/{id}Resposta 200 OK — um recurso de Grupo.
Erros
| Status | detail |
|---|---|
| 404 | Group not found |
Criar um grupo
POST /api/scim/v2/GroupsCria uma equipe. Se displayName corresponder exatamente ao nome de um produto para o qual sua empresa possui uma assinatura ativa, nenhuma equipe é criada — o grupo de assinaturas de produtos existente é retornado em vez disso (201, com suas id e Location), e quaisquer members no corpo da solicitação são ignorados. Gerencie a associação desse grupo através de PATCH /Groups/{id}.
A correspondência diferencia maiúsculas e minúsculas e é exata. Se o nome corresponder a um produto cuja assinatura não não está ativa, uma equipe regular é criada com esse nome — ela não concederá acesso ao produto.
Corpo da solicitação
| Campo | Obrigatório | Descrição |
|---|---|---|
schemas |
✅ | Deve incluir urn:ietf:params:scim:schemas:core:2.0:Group. |
displayName |
✅ | Nome da equipe (não pode estar em branco, ≤128 caracteres). |
members |
— | Array opcional (≤1000). |
Resposta 201 Created — o recurso de Grupo criado, com um cabeçalho Location.
Erros
| Status | detail |
|---|---|
| 400 | The group was not created because some users are not members of the enterprise. User IDs: ... |
| 409 | A group with this displayName already exists |
Atualizar a participação no grupo
PATCH /api/scim/v2/Groups/{id}Adiciona ou remove membros. Para um grupo de assinatura, isso concede ou revoga um assento de produto. Para um grupo de equipe, isso altera a participação na equipe.
Corpo da solicitação
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [
{ "op": "add", "path": "members", "value": [ { "value": "5f3e...c2" } ] }
]
}Use op: "remove" com um path para remover membros. Um replace com um array vazio remove todos os membros.
Resposta 204 No Content
Erros
| Status | detail |
|---|---|
| 404 | Group not found |
| 404 | Product not found |
| 402 | Enterprise subscription out of seats |
| 400 | Some users were not added to the group because they are not members of the enterprise. User IDs: ... |
| 400 | Path is required for remove operations |
Excluir um grupo
DELETE /api/scim/v2/Groups/{id}Exclui um equipe. Solicitações de exclusão contra um grupo de assinatura de produto são ignoradas (retorna 204).
Resposta 204 No Content
Erros
| Status | detail |
|---|---|
| 404 | Group not found |
Atualizar um grupo (não suportado)
PUT /api/scim/v2/Groups/{id}Não suportado. Retorna 405 Method not allowed. Use PATCH para modificar a participação.
Pontos de descoberta
Esses suportam a configuração automática do conector. Todos retornam 200 OK.
| Endpoint | Retornos |
|---|---|
GET /api/scim/v2/ServiceProviderConfig |
Capacidades suportadas (patch, filtro com máximo de 100 resultados; não suporta lotes e ordenação). |
GET /api/scim/v2/Schemas |
Definições de esquema de Usuário e Grupo. |
GET /api/scim/v2/Schemas/{id} |
Um único esquema por URN. 404 "Schema not found" se desconhecido. |
GET /api/scim/v2/ResourceTypes |
Tipos de recursos de Usuário e Grupo. |
GET /api/scim/v2/ResourceTypes/{id} |
Um único tipo de recurso. 404 "Resource type not found" se desconhecido. |
