Salta ai contenuti

Codici di errore

Oltre ai codici di stato HTTP standard, diverse operazioni della RealityConnect API restituiscono nel corpo della risposta un codice error leggibile da un programma, per chiarire il motivo del rifiuto della richiesta. Questa pagina elenca ogni codice denominato per endpoint, cosa lo genera e come gestirlo.


Le operazioni che restituiscono un codice denominato usano questa struttura, con campi aggiuntivi specifici per contesto indicati per ciascun endpoint di seguito:

{
"statusCode": 409,
"error": "NodeHasDerivatives",
"message": "..."
}

message è opzionale e, quando presente, fornisce un dettaglio leggibile da una persona. Basa la logica di gestione su error, non su message.

PATCH /v1/nodes/{nodeId}/move/{newParentId} — 409 Conflict

CodiceSignificatoAzione suggerita
AccessRightsChangeRequiredLo spostamento cambierebbe chi può accedere al nodo; message illustra la modifica specificaVerifica la modifica di accesso, oppure riprova con force: true se è accettabile
MaxDepthExceededLo spostamento supererebbe la profondità massima consentita della gerarchiaSposta il nodo in una posizione meno profonda
CircularityFoundIl genitore di destinazione si trova all’interno del sottoalbero del nodo che si sta spostandoScegli un genitore esterno al sottoalbero del nodo stesso
NodeHaveMembershipsAttachedIl nodo ha record di appartenenza che ne impediscono lo spostamento oltre un confine di autorizzazioneRimuovi prima le appartenenze, oppure sposta il nodo all’interno dello stesso ambito di autorizzazione
NodesInDifferentRegionsIl nodo e il genitore di destinazione sono provisionati in region diverseNon risolvibile: i nodi non possono essere spostati tra region diverse
NodeCannotBeMovedQuesto tipo di nodo non supporta lo spostamentoNon risolvibile per questo tipo di nodo
DerivativesNotInCommonParentGli output derivati del nodo non si trovano tutti sotto un genitore comune con la destinazione dello spostamentoRiorganizza i derivati, poi riprova
SourcesNotInCommonParentGli input di origine del nodo non si trovano tutti sotto un genitore comuneRiorganizza le origini, poi riprova
DataBundleLinkedToTwinIl data bundle del nodo è collegato a un twinScollega prima il twin
DoesNotMeetHierarchyConstraintsLo spostamento viola una regola di gerarchia specifica per il tipoVerifica quali tipi figlio sono consentiti dal genitore di destinazione
MoveNodeFailedLo spostamento è stato rifiutato per un motivo senza un codice più specificoRiprova; contatta il supporto se il problema persiste

DELETE /v1/nodes/{nodeId} — 409 Conflict

CodiceSignificatoAzione suggerita
NodeHasDerivativesIl nodo ha output derivati che devono essere rimossi prima, elencati in derivatives[]Elimina o sposta i derivati elencati, poi riprova
NodeNotInDeletableStateIl nodo è attualmente in elaborazione oppure l’elaborazione non è riuscita, secondo isProcessing / isFailedAttendi il termine dell’elaborazione, oppure risolvi il problema, poi riprova
NodeHasBundleDependantsIl data bundle del nodo ha dipendenti che ne impediscono l’eliminazioneRimuovi prima i dipendenti
DeleteNodeFailedL’eliminazione è stata rifiutata per un motivo senza un codice più specificoRiprova; contatta il supporto se il problema persiste

Ripristinare o eliminare definitivamente un nodo nel cestino

Sezione intitolata “Ripristinare o eliminare definitivamente un nodo nel cestino”
EndpointStatoCodiceSignificatoAzione suggerita
PATCH /v1/nodes/{id}/restore409StorageLimitExceededIl ripristino del nodo supererebbe la quota di archiviazione dell’organizzazioneLibera spazio di archiviazione o aumenta la quota, poi riprova
DELETE /v1/nodes/{id}/hard409NoNodeRemovedIl nodo non è stato trovato nel cestino in uno stato rimovibileVerifica l’id del nodo e il suo stato nel cestino

POST /v1/bundles/{bundleId}/processing — 409 Conflict

CodiceSignificatoAzione suggerita
ProcessingCostMismatchIl costo di elaborazione inviato non corrisponde più al costo attualeRecupera una nuova stima del costo e riprova
NoInputDataFoundForProcessingNon sono stati trovati dati di input da elaborare per questo bundleVerifica che la sessione di caricamento sia stata finalizzata prima di avviare l’elaborazione
InsufficientProcessingCapacityLa capacità di elaborazione non è al momento disponibileRiprova più tardi
FailedToLaunchProcessingNon è stato possibile avviare il job di elaborazioneRiprova; contatta il supporto se il problema persiste
EndpointStatoCodiceSignificatoAzione suggerita
POST /v1/site-files403StorageLimitExceededLa quota di archiviazione dell’organizzazione è stata superataLibera spazio di archiviazione o aumenta la quota
POST /v1/site-files409FileAlreadyExistsEsiste già un file con la stessa identitàUsa il file esistente, oppure caricalo con un nome diverso
POST /v1/site-files/{fileId}/finalize400FileNotCompatibleIl formato del file caricato non è compatibile con il tipo di file previstoVerifica il formato del file e ricaricalo
POST /v1/bundles/{bundleId}/upload-sessions403StorageLimitExceededLa quota di archiviazione dell’organizzazione è stata superataLibera spazio di archiviazione o aumenta la quota
POST /v1/bundles/{bundleId}/upload-sessions/{sessionId}/files403StorageLimitExceededLa quota di archiviazione dell’organizzazione è stata superataLibera spazio di archiviazione o aumenta la quota
POST /v1/twin/{contextId}/object/attachments409StorageLimitExceededLa quota di archiviazione dell’organizzazione è stata superataLibera spazio di archiviazione o aumenta la quota
POST /v1/twin/{contextId}/object/attachments409FileAlreadyExistsEsiste già un allegato con la stessa identitàUsa l’allegato esistente, oppure caricalo con un nome diverso

PUT /v1/groups/{groupId}/users/{userId} (aggiungere un membro) — 409 Conflict

CodiceSignificatoAzione suggerita
GroupHasSamlLinkL’appartenenza al gruppo è gestita da un’integrazione SAML/SSOGestisci l’appartenenza tramite il provider SAML
CannotInviteToSCIMGroupL’appartenenza al gruppo è gestita tramite il provisioning SCIMGestisci l’appartenenza tramite il provider SCIM
UserAlreadyMemberL’utente è già membro del gruppoNessuna azione necessaria

DELETE /v1/groups/{groupId}/users/{userId} (rimuovere un membro) — 409 Conflict

CodiceSignificatoAzione suggerita
GroupHasSamlLinkL’appartenenza al gruppo è gestita da un’integrazione SAML/SSOGestisci l’appartenenza tramite il provider SAML
CannotRemoveMemberFromSCIMGroupL’appartenenza al gruppo è gestita tramite il provisioning SCIMGestisci l’appartenenza tramite il provider SCIM

Creazione, ridenominazione ed eliminazione di gruppi

Sezione intitolata “Creazione, ridenominazione ed eliminazione di gruppi”

POST /v1/groups e PATCH /v1/groups/{groupId} — 409 Conflict

CodiceSignificatoAzione suggerita
DuplicateGroupNameEsiste già un gruppo con questo nome nell’organizzazioneScegli un nome diverso
CannotUpdateMemberFromSCIMGroupL’appartenenza al gruppo è gestita tramite il provisioning SCIMGestisci l’appartenenza tramite il provider SCIM

DELETE /v1/groups/{groupId} — 409 Conflict

CodiceSignificatoAzione suggerita
CannotRemoveSCIMGroupL’appartenenza al gruppo è gestita tramite il provisioning SCIMGestisci l’appartenenza tramite il provider SCIM
CannotRemoveOrganizationGroupIl gruppo non ha un’unica divisione proprietariaNon risolvibile: questo gruppo non può essere eliminato tramite questo endpoint

POST /v1/nodes/{nodeId}/invitations e POST /v1/invitations condividono gli stessi codici di errore.

StatoCodiceSignificatoAzione suggerita
409UserAlreadyInvitedL’utente ha già un invito in sospesoNessuna azione necessaria
409UserAlreadyMemberL’utente è già membroNessuna azione necessaria
403InvalidEmailDomainIl dominio dell’email invitata non è consentito per questa organizzazioneUsa un indirizzo email con un dominio consentito
400CustomRoleNotAssignableToDataNodeIl ruolo personalizzato specificato non può essere assegnato a questo nodoScegli un ruolo assegnabile a questo nodo
400CustomRoleNotFoundIl ruolo personalizzato specificato non esisteVerifica l’id del ruolo
400AdminsitrativeRoleNotFound*Il ruolo amministrativo specificato non esisteVerifica l’id del ruolo
400AdministrativeRoleInvalidNodeUn ruolo amministrativo è stato applicato a un nodo che non lo supportaAssegna invece il ruolo amministrativo a livello di organizzazione
422InvitationEmailRejectedIl provider di posta ha rifiutato in modo permanente l’indirizzo del destinatarioCorreggi l’indirizzo email prima di riprovare
503InvitationEmailNotSentIl provider di posta non è temporaneamente disponibile; non è stato salvato nullaRiprova la richiesta senza modifiche

* Il nome di questo codice contiene un errore di battitura nella risposta attuale dell’API: usalo esattamente come mostrato, non AdministrativeRoleNotFound.

Limitazione di frequenza, autenticazione e controllo degli accessi

Sezione intitolata “Limitazione di frequenza, autenticazione e controllo degli accessi”

Un 403 può derivare da uno qualsiasi dei tre livelli di controllo degli accessi descritti in Per iniziare — Modello di sicurezza: scope OAuth, ruoli per nodo e accesso ai contenuti. Attualmente tutti e tre condividono lo stesso codice di stato, e la maggior parte condivide anche lo stesso corpo generico: considera quindi un 403 come “non autorizzato per uno di questi motivi”, piuttosto che presumere che si tratti sempre di un problema di scope.

StatoCodiceSignificato
429rate_limitedIl bucket di richieste dell’organizzazione è esaurito — consulta Limiti di frequenza
401not_authenticatedAlla richiesta manca un bearer token, oppure il token non è analizzabile
401invalid_tokenIl controllo della firma o della scadenza del token non è riuscito
403(nessun codice — messaggio: "Insufficient OAuth scopes")Il token non include uno scope richiesto dall’operazione — consulta Riferimento agli scope OAuth
403(nessun codice — messaggio: "Forbidden resource")Il ruolo o l’accesso ai contenuti del chiamante su questo nodo non consente l’azione, oppure l’organizzazione ha raggiunto un limite di licenze/posti — il corpo della risposta non distingue tra i due casi
403errorCode: "SSORestrictedResource"Questa risorsa è riservata ai chiamanti autenticati tramite una sessione SSO/identity provider specifica
  • Consulta il riferimento API per gli schemi completi di richiesta e risposta per ogni operazione.