Corpo da Resposta

As solicitações da API REST dos domínios de identidades retornam um corpo de resposta JSON. O código de status indica êxito ou falha.

Códigos de Resposta Suportados

Observação

Consulte Códigos de Resposta para obter mais informações sobre os códigos de resposta suportados.

Corpo da Resposta com Êxito

O formato de resposta para todas as solicitações da API REST é um objeto JSON. O conteúdo exato da resposta depende do conteúdo e do tipo de solicitação, se a solicitação foi bem-sucedida ou falhou, e de qualquer filtragem de consulta executada.

Observação

Consulte a guia Exemplos em cada página de ponto final para obter exemplos de corpo de resposta específicos.

Corpo de Resposta POST Bem-sucedido

Veja a seguir um exemplo de resposta indicando a criação bem-sucedida de um recurso User com uma solicitação POST:

{
    "idcsCreatedBy": {
        "type": "App",
        "display": "Confidential App",
        "value": "<app-id>",
        "ocid": "<app-ocid>",
        "$ref": "https://<domainURL>/admin/v1/Apps/<app-id>"
    },
    "id": "<user-id>",
    "urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User": {
        "isFederatedUser": false
    },
    "meta": {
        "created": "2023-08-29T21:04:25.379Z",
        "lastModified": "2023-08-29T21:04:25.379Z",
        "version": "7fd6be02ffc542809e3ea193d1942df7",
        "resourceType": "User",
        "location": "https://<domainURL>/admin/v1/Users/<user-id>"
    },
    "active": true,
    "displayName": "Clarence Saladna",
    "idcsLastModifiedBy": {
        "value": "<app-id>",
        "display": "Confidential App",
        "ocid": "<app-ocid>",
        "type": "App",
        "$ref": "https://<domainURL>/admin/v1/Apps/<app-id>"
    },
    "name": {
        "givenName": "Clarence",
        "familyName": "Saladna",
        "formatted": "Clarence Saladna"
    },
    "urn:ietf:params:scim:schemas:oracle:idcs:extension:userState:User": {
        "locked": {
            "on": false
        }
    },
    "ocid": "<user-ocid>",
    "userName": "csaladna@example.com",
    "emails": [
        {
            "secondary": false,
            "verified": false,
            "type": "recovery",
            "primary": false,
            "value": "csaladna@example.com"
        },
        {
            "secondary": false,
            "verified": false,
            "type": "work",
            "primary": true,
            "value": "csaladna@example.com"
        }
    ],
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:User",
        "urn:ietf:params:scim:schemas:oracle:idcs:extension:userState:User",
        "urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User"
    ],
    "domainOcid": "<domain-ocid>",
    "compartmentOcid": "<compartment-ocid>",
    "tenancyOcid": "<tenancy-ocid>",
    "urn:ietf:params:scim:schemas:oracle:idcs:extension:capabilities:User": {
        "canUseApiKeys": true,
        "canUseAuthTokens": true,
        "canUseConsolePassword": true,
        "canUseCustomerSecretKeys": true,
        "canUseOAuth2ClientCredentials": true,
        "canUseSmtpCredentials": true,
        "canUseDbCredentials": true
    }
}

Corpo de Resposta GET Bem-sucedido

As solicitações GET geralmente retornam um objeto ListResponse, que pode conter vários registros. Este exemplo mostra os resultados de uma pesquisa GET em Usuários, com o parâmetro de consulta: filter=userName sw "d", ou seja, usuários cujos nomes de usuário começam com d.

{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "totalResults": 3,
    "Resources": [
        {
            "idcsCreatedBy": {
                "type": "User",
                "display": "dennis@example.com",
                "value": "OCI User",
                "ocid": "<user-ocid>",
                "$ref": "https://<domainURL>/admin/v1/Users/OCI User"
            },
            "id": "<user-id>",
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User": {
                "isFederatedUser": false
            },
            "meta": {
                "created": "2023-08-15T20:48:12.736Z",
                "lastModified": "2023-08-15T20:48:12.736Z",
                "version": "087a80ea35614663b05ea69b24b425a7",
                "resourceType": "User",
                "location": "https://<domainURL>/admin/v1/Users/<user-id>"
            },
            "active": true,
            "displayName": "Dean",
            "idcsLastModifiedBy": {
                "value": "OCI User",
                "display": "dean@example.com",
                "ocid": "<user-ocid>",
                "type": "User",
                "$ref": "https://<domainURL>/admin/v1/Users/OCI User"
            },
            "name": {
                "givenName": "Dean",
                "familyName": "",
                "formatted": "Dean"
            },
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:userState:User": {
                "locked": {
                    "on": false
                }
            },
            "ocid": "<user-ocid>",
            "userName": "dean@example.com",
            "emails": [
                {
                    "secondary": false,
                    "verified": false,
                    "type": "recovery",
                    "primary": false,
                    "value": "dean@example.com"
                },
                {
                    "secondary": false,
                    "verified": false,
                    "type": "work",
                    "primary": true,
                    "value": "dean@example.com"
                }
            ],
            "schemas": [
                "urn:ietf:params:scim:schemas:core:2.0:User",
                "urn:ietf:params:scim:schemas:oracle:idcs:extension:userState:User",
                "urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User"
            ],
            "domainOcid": "<domain-ocid>",
            "compartmentOcid": "<compartment-ocid>",
            "tenancyOcid": "<tenancy-ocid>",
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:capabilities:User": {
                "canUseApiKeys": true,
                "canUseAuthTokens": true,
                "canUseConsolePassword": true,
                "canUseCustomerSecretKeys": true,
                "canUseOAuth2ClientCredentials": true,
                "canUseSmtpCredentials": true,
                "canUseDbCredentials": true
            }
        },
        {
            "idcsCreatedBy": {
                "type": "User",
                "display": "joel@example.com",
                "value": "OCI User",
                "ocid": "<user-ocid>",
                "$ref": "https://<domainURL>/admin/v1/Users/OCI User"
            },
            "id": "<user-id>",
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User": {
                "isFederatedUser": false
            },
            "meta": {
                "created": "2023-07-19T18:23:28.381Z",
                "lastModified": "2023-08-09T16:22:41.590Z",
                "version": "0ecbeddb823247d8a24a67739b006892",
                "resourceType": "User",
                "location": "https://<domainURL>/admin/v1/Users/<user-id>"
            },
            "active": true,
            "displayName": "Dennis",
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:mfa:User": {
                "preferredDevice": {
                    "value": "<device-id>",
                    "$ref": "https://<domainURL>/admin/v1/Devices/<device-id>"
                },
                "loginAttempts": 0,
                "mfaStatus": "ENROLLED",
                "preferredAuthenticationFactor": "PUSH"
            },
            "idcsLastModifiedBy": {
                "value": "<app-id>",
                "display": "idcssso",
                "ocid": "<app-ocid>",
                "type": "App",
                "$ref": "https://<domainURL>/admin/v1/Apps/<app-id>"
            },
            "name": {
                "givenName": "Dennis",
                "familyName": "",
                "formatted": "Dennis"
            },
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:userState:User": {
                "locked": {
                    "on": false
                }
            },
            "ocid": "<user-ocid>",
            "userName": "dennis@example.com",
            "emails": [
                {
                    "secondary": false,
                    "verified": true,
                    "type": "recovery",
                    "primary": false,
                    "value": "dennis@example.com"
                },
                {
                    "secondary": false,
                    "verified": true,
                    "type": "work",
                    "primary": true,
                    "value": "dennis@example.com"
                }
            ],
            "schemas": [
                "urn:ietf:params:scim:schemas:core:2.0:User",
                "urn:ietf:params:scim:schemas:oracle:idcs:extension:userState:User",
                "urn:ietf:params:scim:schemas:oracle:idcs:extension:mfa:User",
                "urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User"
            ],
            "domainOcid": "<domain-ocid>",
            "compartmentOcid": "<compartment-ocid>",
            "tenancyOcid": "<tenancy-ocid>",
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:capabilities:User": {
                "canUseApiKeys": true,
                "canUseAuthTokens": true,
                "canUseConsolePassword": true,
                "canUseCustomerSecretKeys": true,
                "canUseOAuth2ClientCredentials": true,
                "canUseSmtpCredentials": true,
                "canUseDbCredentials": true
            }
        },
        {
            "idcsCreatedBy": {
                "type": "User",
                "display": "colin.torretta@oracle.com",
                "value": "OCI User",
                "ocid": "<user-ocid>",
                "$ref": "https://<domainURL>/admin/v1/Users/OCI User"
            },
            "id": "<user-id>",
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User": {
                "isFederatedUser": false
            },
            "meta": {
                "created": "2023-08-21T22:36:22.978Z",
                "lastModified": "2023-08-22T03:00:22.934Z",
                "version": "d91908a80bb44ea8bc23e063b42a5e1b",
                "resourceType": "User",
                "location": "https://<domainURL>/admin/v1/Users/<user-id>"
            },
            "active": true,
            "displayName": "Diane",
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:mfa:User": {
                "preferredDevice": {
                    "value": "<device-id>",
                    "$ref": "https://<domainURL>/admin/v1/Devices/<device-id>"
                },
                "mfaStatus": "ENROLLED",
                "preferredAuthenticationFactor": "TOTP"
            },
            "idcsLastModifiedBy": {
                "value": "<app-id>",
                "display": "idcssso",
                "ocid": "<app-ocid>",
                "type": "App",
                "$ref": "https://<domainURL>/admin/v1/Apps/<app-id>"
            },
            "name": {
                "givenName": "Diane",
                "familyName": "",
                "formatted": "Diane"
            },
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:userState:User": {
                "locked": {
                    "on": false
                }
            },
            "ocid": "<user-ocid>",
            "userName": "diane@example.com",
            "emails": [
                {
                    "secondary": false,
                    "verified": true,
                    "type": "recovery",
                    "primary": false,
                    "value": "diane@example.com"
                },
                {
                    "secondary": false,
                    "verified": true,
                    "type": "work",
                    "primary": true,
                    "value": "diane@example.com"
                }
            ],
            "schemas": [
                "urn:ietf:params:scim:schemas:core:2.0:User",
                "urn:ietf:params:scim:schemas:oracle:idcs:extension:userState:User",
                "urn:ietf:params:scim:schemas:oracle:idcs:extension:mfa:User",
                "urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User"
            ],
            "domainOcid": "<domain-ocid>",
            "compartmentOcid": "<compartment-ocid>",
            "tenancyOcid": "<tenancy-ocid>",
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:capabilities:User": {
                "canUseApiKeys": true,
                "canUseAuthTokens": true,
                "canUseConsolePassword": true,
                "canUseCustomerSecretKeys": true,
                "canUseOAuth2ClientCredentials": true,
                "canUseSmtpCredentials": true,
                "canUseDbCredentials": true
            }
        }
    ],
    "startIndex": 1,
    "itemsPerPage": 50
}

Corpo de Resposta Simples no Erro

Em caso de erro e sucesso, o corpo da resposta é JSON. O formato de todas as respostas de erro da API REST de domínios de identidades é semelhante. Este exemplo é uma exceção simples que detalha o código de status e a mensagem de exceção para uma solicitação inválida.

{
  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:Error"
  ],
  "detail": "Request failed: HTTP 400 Bad Request.",
  "status": "400"
}

Exemplo de Resposta de Exceção de Validação

Este exemplo é uma exceção de validação em que alguns atributos obrigatórios estão ausentes.

{
  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:Error",
    "urn:ietf:params:scim:api:oracle:idcs:extension:messages:Error"
  ],
  "detail": "Missing required attribute(s): mappingAttributeValue,password.",
  "status": "400",
  "urn:ietf:params:scim:api:oracle:idcs:extension:messages:Error": {
    "messageId": "error.common.validation.missingReqAttributes"
  }
}

Exemplo de Resposta de Exceção Funcional

Este exemplo é uma exceção funcional com detalhes adicionais.

{
  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:Error",
    "urn:ietf:params:scim:api:oracle:idcs:extension:messages:Error"
  ],
  "detail": "INVALID_CREDENTIALS",
  "status": "400",
  "urn:ietf:params:scim:api:oracle:idcs:extension:messages:Error": {
    "additionalData": {
      "csr": false,
      "tenantName": "TENANT1",
      "id": "<tenancy-id>",
      "displayName": "Jane Smith",
      "locale": "en",
      "preferredLanguage": "en",
      "timezone": "America/Chicago"
    }
  }
}

Monitoramento Dinâmico Usando os Cabeçalhos HTTP ECID e RID

O monitoramento dinâmico é o mecanismo pelo qual as solicitações HTTP podem ser identificadas de forma exclusiva e, portanto, rastreadas à medida que fluem pelo sistema.

Ele também fornece um meio pelo qual as informações de contexto podem ser comunicadas entre os componentes cooperantes do domínio de identidades envolvidos no atendimento de solicitações. O ECID (Execution Context ID) e o RID (Relationship ID) são úteis no rastreamento da sequência de eventos entre serviços.

  • O ECID: Um identificador exclusivo. O ECID é exclusivo para cada nova tarefa raiz. Esse número permanece o mesmo que é compartilhado na árvore de tarefas associadas à tarefa raiz.

  • O RID: Um identificador de relacionamento. O RID é um conjunto ordenado de números que descreve o local de cada tarefa na árvore de tarefas. Normalmente, o número à esquerda é zero e, em seguida, os números aumentam para cada subtarefa adicional.

Os cabeçalhos HTTP X-ORACLE-DMS-ECID e X-ORACLE-DMS-RID são retornados como parte da resposta REST do domínio de identidades. Esses cabeçalhos HTTP correspondem ao ECID e ao RID da solicitação. Os valores desses cabeçalhos são definidos pelo domínio de identidades ao retornar a resposta. O chamador pode usar o ECID e o RID para rastrear e correlacionar solicitações originadas com eventos que surgem do domínio de identidades.

Por exemplo, o cliente pode incluir esses valores como parte de uma mensagem de erro, porque é importante correlacionar eventos no lado do cliente com erros no lado do servidor. O formato padrão da Oracle para registro em log envolve um campo dedicado ao ECID. Depois que o ECID é conhecido, quando é lido a partir de uma mensagem de log no nível de erro, por exemplo, é possível encontrar todas as outras mensagens de log associadas a essa tarefa consultando os arquivos de log para obter mensagens que contenham esse ECID.

Use os relatórios de Dados de Diagnóstico dos domínios de identidades para exibir os dados de log capturados para fins de diagnóstico. Você pode encontrar o ECID e o RID no relatório e, em seguida, correlacionar esses identificadores ao ECID e ao RID que são retornados pelas chamadas REST dos domínios de identidade que seus aplicativos fazem. Consulte Executando o Relatório de Dados de Diagnóstico.

Exemplos de Monitoramento Dinâmico

Esta seção contém exemplos que mostram o seguinte:
  • Uma solicitação POST no ponto final /Users.

  • Os cabeçalhos de comando cURL que são resultado da execução do POST no ponto final /Users.

  • Uma resposta de retorno de um GET no ponto final /AuditEvents que mostra que o ECID é o mesmo que foi usado pelo servidor para criar o usuário.

  • Uma seção do relatório de diagnóstico que foi gerada quando a solicitação POST no ponto final /Users foi executada.

POST - Solicitação para /Usuários

curl -X POST -D dumpedHeadersPostUsers.txt
http://<domainURL>/admin/v1/Users
-H 'Authorization: Bearer eyJ4NXQjUzI....poYw'
-H 'Cache-Control: no-cache'
-H 'Content-Type: application/json'
-d '{
   "schemas": [ 
    "urn:ietf:params:scim:schemas:core:2.0:User"
   ],
   "name": {
 	"givenName": "Clarence",
 	"familyName": "Saladna"
   },
   "userName": "csaladna@example.com",
   "emails": [
 	{
 	  "value": "csaladna@example.com",
 	  "type": "work",
 	  "primary": true
 	},
 	{
 	  "value": "csaladna1@example.com",
 	  "primary": false,
 	  "type": "recovery" 
	}
   ]
 }'

Cabeçalhos de Comando cURL na Resposta

HTTP/1.1 201 Created
Date: Thu, 04 Jan 2018 12:57:37 GMT
Content-Type: application/json;charset=utf-8
Content-Length: 1227
Proxy-Connection: Keep-Alive
X-ORACLE-DMS-RID: 0
X-ORACLE-DMS-ECID: 0000M31FtLAFo2H6yvR_6G1QJ7Wl0000K

Resposta à solicitação GET para /AuditEvents

Observação: Este exemplo mostra que o ECID é igual ao que foi usado pelo servidor para criar o usuário.

Solicitação
http://<domainURL>/admin/v1/AuditEvents?filter=actorName sw "adm" and ecId eq "0000M31FtLAFo2H6yvR_6G1QJ7Wl0000K^"

Resposta

{
  "schemas": [
    "urn:scim:api:messages:2.0:ListResponse"
  ],
  "totalResults": 1,
  "Resources": [
    {
      "idcsCreatedBy": {
        "type": "User",
        "display": "admin opc",
        "value": "<user-id>",
        "$ref": "https://<domainURL>/admin/v1/Users/<user-id>"
      },
      "actorName": "admin@oracle.com",
      "id": "2a02fb8bc9a548edb21fe1c80ff6ada0",
      "actorDisplayName": "admin opc",
      "meta": {
        "created": "2024-01-04T12:57:46.314Z",
        "lastModified": "2024-01-04T12:57:46.314Z",
        "resourceType": "AuditEvent",
        "location": "https://<domainURL>/admin/v1/AuditEvents/2a02fb8bc9a548edb21fe1c80ff6ada0"
      },
      "actorId": "<user-id>",
      "adminResourceId": "a06ff8169b3640a29792a15ece75c906",
      "adminResourceName": "csaladna@example.com",
      "timestamp": "2024-01-04T12:57:46.312Z",
      "idcsLastModifiedBy": {
        "value": "<user-id>",
        "display": "admin opc",
        "type": "User",
        "$ref": "https://<domainURL>/admin/v1/Users/<user-id>"
      },
      "quotaCount": 0,
      "ecId": "0000M31FtLAFo2H6yvR_6G1QJ7Wl0000K^",
      "rId": "0",
      "eventId": "admin.user.create.success",
      "ssoAuthnLevel": 0,
      "adminResourceType": "User",
      "actorType": "User",
      "serviceName": "Admin",
      "adminValuesAdded": "{\"schemas\":[\"urn:ietf:params:scim:schemas:core:2.0:User\"],\"name\":{\"familyName\":\"Saladna\",\"givenName\":\"Clarence\",\"formatted\":\"Clarence Saladna\"},\"userName\":\"csaladna@example.com\",\"emails\":[{\"value\":\"csaladna@example.com\",\"primary\":\"true\",\"type\":\"work\",\"verified\":\"false\"},{\"value\":\"csaladna@example.com\",\"primary\":\"false\",\"type\":\"recovery\",\"verified\":\"false\"}],\"id\":\"a06ff8169b3640a29792a15ece75c906\",\"displayName\":\"Clarence Saladna\",\"urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User\":{\"status\":\"verified\"},\"active\":\"true\",\"password\":\"*********\",\"urn:ietf:params:scim:schemas:oracle:idcs:extension:passwordState:User\":{\"mustChange\":\"true\",\"lastSuccessfulSetDate\":\"2024-01-04T12:57:37.940Z\",\"cantChange\":\"false\",\"expired\":\"false\",\"passwordHistory\":[{\"sequenceNumber\":\"1\",\"value\":\"*********\"}]},\"urn:ietf:params:scim:schemas:oracle:idcs:extension:userState:User\":{\"locked\":{\"on\":\"false\"},\"loginAttempts\":\"0\"},\"meta\":{\"created\":\"2024-01-04T12:57:37.951Z\",\"lastModified\":\"2024-01-04T12:57:37.951Z\"},\"idcsCreatedBy\":{\"value\":\"<user-id>\",\"type\":\"User\",\"display\":\"admin opc\"},\"idcsLastModifiedBy\":{\"value\":\"<user-id>\",\"type\":\"User\",\"display\":\"admin opc\"}}",
      "schemas": [
        "urn:ietf:params:scim:schemas:oracle:idcs:AuditEvent"
      ]
    }
  ],
  "startIndex": 1,
  "itemsPerPage": 50
}

Amostra do Relatório de Diagnóstico

Esta é uma amostra de relatório de diagnóstico.