SCIM: a API de lista retorna resultados paginados; filtros não compatíveis são rejeitados (pendente)

Atenção

Essa alteração de comportamento faz parte do pacote 2026_03.

Para saber o status atual do pacote, consulte Histórico do pacote.

Os pontos de extremidade da API de lista SCIM (GET /scim/v2/Users e GET /scim/v2/Groups) estão sendo alterados para retornar uma lista paginada de usuários ou grupos na conta, opcionalmente correspondendo a um filtro eq ou sw fornecido. Antes, esses pontos de extremidade retornavam um único objeto de amostra sintético.

Chamadas de lista não filtradas

Antes da mudança:

GET /scim/v2/Users e GET /scim/v2/Groups sem um parâmetro filter retornavam um único objeto de amostra sintético. Por exemplo, GET /scim/v2/Users retornava:

{
  "totalResults": 1,
  "startIndex": 1,
  "itemsPerPage": 1,
  "Resources": [{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User", "..."],
    "id": "1",
    "externalId": "synthesis_user_external_id",
    "userName": "synthesis_user",
    "displayName": "synthesis_user_display_name",
    "active": false
  }]
}

Da mesma forma, GET /scim/v2/Groups retornava um único objeto synthetic_group.

Após a mudança:

As mesmas chamadas retornam uma lista paginada de usuários ou grupos na conta, com paginação SCIM padrão (startIndex, count).

Validação da expressão de filtro

Antes da mudança:

Os valores de filtro eram analisados ​​de forma flexível. Expressões de filtro não compatíveis, incluindo aquelas com operadores lógicos (and, or) e ​​valores de filtro malformados, eram aceitas silenciosamente e retornavam 200 OK com uma matriz Resources vazia.

Após a mudança:

Os valores de filtro agora são analisados ​​como cadeias de caracteres JSON entre aspas, de acordo com os requisitos de codificação JSON do SCIM. Expressões de filtro não compatíveis ou malformadas são rejeitadas com HTTP 400 Bad Request e o tipo de erro SCIM invalidFilter. Filtros de atributo único compatíveis com eq ou sw não são afetados.

Compatibilidade com filtro ServiceProviderConfig

Antes da mudança:

GET /scim/v2/ServiceProviderConfig reportava filter.supported como um inteiro (0).

Após a mudança:

filter.supported é um booleano (true), conforme exigido pela RFC 7643.

Clientes cujos clientes SCIM enviam expressões de filtro com and ou or devem atualizar o cliente para usar filtros simples ou lidar com respostas 400 invalidFilter.

Nota

Clientes com um grande número de usuários ou grupos podem observar tempos de resposta maiores para chamadas de lista não filtradas. Para reduzir o tamanho das respostas, use excludedAttributes=groups ao listar usuários ou excludedAttributes=members ao listar grupos. Isso evita a expansão de membros, que é o principal fator que aumenta o tamanho da resposta e a latência para contas grandes.

Ref: 2276