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
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.
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
-
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çãohttp://<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