Corpo risposta

Le richieste API REST dei domini di Identity restituiscono un corpo di risposta JSON. Il codice di stato indica l'esito positivo o negativo.

Codici di risposta supportati

Nota

Per ulteriori informazioni sui codici di risposta supportati, vedere Codici di risposta.

Corpo risposta al completamento

Il formato di risposta per tutte le richieste API REST è un oggetto JSON. Il contenuto esatto della risposta dipende dal contenuto e dal tipo di richiesta, dall'esito positivo o negativo della richiesta e dall'eventuale filtro delle query eseguito.

Nota

Per esempi specifici del corpo della risposta, vedere la scheda Esempi in ciascuna pagina endpoint.

Corpo risposta POST riuscita

Di seguito è riportata una risposta di esempio che indica la riuscita della creazione di una risorsa User con una richiesta 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 risposta GET riuscita

Le richieste GET in genere restituiscono un oggetto ListResponse, che potrebbe contenere più record. Questo esempio mostra i risultati di una ricerca GET sugli utenti, con il parametro di query: filter=userName sw "d", ovvero gli utenti i cui nomi utente iniziano con 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 risposta semplice in caso di errore

In caso di errore e in caso di successo, il corpo della risposta è JSON. Il formato per tutte le risposte di errore dell'API REST dei domini di Identity è simile. Questo esempio è una semplice eccezione che descrive in dettaglio il codice di stato e il messaggio di eccezione per una richiesta non valida.

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

Esempio di risposta eccezione convalida

Questo esempio è un'eccezione di convalida in cui mancano alcuni attributi obbligatori.

{
  "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"
  }
}

Esempio di risposta eccezione funzionale

Questo esempio è un'eccezione funzionale con dettagli aggiuntivi.

{
  "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"
    }
  }
}

Monitoraggio dinamico mediante le intestazioni HTTP ECID e RID

Il monitoraggio dinamico è il meccanismo attraverso il quale le richieste HTTP possono essere identificate in modo univoco e quindi tracciate mentre fluiscono attraverso il sistema.

Fornisce inoltre un mezzo mediante il quale è possibile comunicare informazioni di contesto tra i componenti del dominio di identità che hanno collaborato coinvolti nell'evasione delle richieste. L'ID contesto di esecuzione (ECID) e l'ID relazione (RID) sono utili per tenere traccia della sequenza di eventi tra i servizi.

  • ECID: un identificativo univoco. L'ECID è univoco per ogni nuovo task radice. Questo numero rimane uguale a quello condiviso nell'albero dei task associati al task radice.

  • RID: un identificativo di relazione. Il RID è un set ordinato di numeri che descrive la posizione di ciascun task nella relativa struttura. Il numero iniziale è in genere uno zero, quindi i numeri aumentano per ogni subtask aggiuntivo.

Le intestazioni HTTP X-ORACLE-DMS-ECID e X-ORACLE-DMS-RID vengono restituite come parte della risposta REST dal dominio di Identity. Queste intestazioni HTTP corrispondono all'ECID e al RID della richiesta. I valori di queste intestazioni vengono impostati dal dominio di Identity quando viene restituita la risposta. Il chiamante può utilizzare l'ECID e il RID per tenere traccia e correlare le richieste originate con gli eventi che derivano dal dominio di Identity.

Ad esempio, il client può includere questi valori come parte di un messaggio di errore, perché è importante correlare gli eventi sul lato client con gli errori sul lato server. Il formato standard Oracle per la registrazione riguarda un campo dedicato all'ECID. Dopo che l'ECID è noto, quando viene letto da un messaggio di log a livello di errore, ad esempio, è possibile trovare tutti gli altri messaggi di log associati a tale attività eseguendo una query sui file di log per i messaggi che contengono tale ECID.

Utilizzare i report Dati diagnostici dei domini di Identity per visualizzare i dati di log acquisiti a scopo diagnostico. È possibile trovare l'ECID e il RID nel report, quindi correlarli all'ECID e al RID restituiti dalle chiamate REST dei domini di identità effettuate dalle applicazioni. Vedere Esecuzione del rapporto Dati di diagnostica.

Esempi di monitoraggio dinamico

Questa sezione contiene esempi che mostrano quanto segue:
  • Richiesta POST sull'endpoint /Users.

  • Intestazioni di comando cURL risultanti dall'esecuzione di POST sull'endpoint /Users.

  • Risposta di ritorno di un GET sull'endpoint /AuditEvents che mostra che l'ECID è uguale a quello utilizzato dal server per creare l'utente.

  • Sezione del report diagnostico generato durante l'esecuzione della richiesta POST sull'endpoint /Users.

Richiesta POST a/utenti

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" 
	}
   ]
 }'

Intestazioni comando cURL nella risposta

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

Risposta alla richiesta GET a /AuditEvents

Nota: questo esempio mostra che l'ECID è uguale a quello utilizzato dal server per creare l'utente.

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

Risposta

{
  "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
}

Esempio di report diagnostico

Esempio di report diagnostico.