Ir al contenido

Códigos de error

Además de los códigos de estado HTTP estándar, varias operaciones de la API de RealityConnect devuelven un código error legible por máquina en el cuerpo de la respuesta para aclarar por qué se rechazó una solicitud. Esta página cataloga cada código con nombre por endpoint, qué lo activa y cómo gestionarlo.


Las operaciones que devuelven un código con nombre usan esta forma, con campos adicionales específicos del contexto indicados en cada endpoint más abajo:

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

message es opcional y, cuando está presente, da un detalle legible por humanos. Basa tu manejo en error, no en message.

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

CódigoSignificadoAcción sugerida
AccessRightsChangeRequiredEl movimiento cambiaría quién puede acceder al nodo; message explica el cambio específicoRevisa el cambio de acceso, o vuelve a intentarlo con force: true si es aceptable
MaxDepthExceededEl movimiento excedería la profundidad máxima permitida en la jerarquíaMueve el nodo a una ubicación menos profunda
CircularityFoundEl padre de destino está dentro del subárbol del nodo que se está moviendoElige un padre fuera del propio subárbol del nodo
NodeHaveMembershipsAttachedEl nodo tiene registros de membresía que bloquean moverlo a través de un límite de permisosElimina primero las membresías, o muévelo dentro del mismo ámbito de permisos
NodesInDifferentRegionsEl nodo y el padre de destino están provisionados en regiones distintasNo se puede resolver — los nodos no pueden moverse entre regiones
NodeCannotBeMovedEste tipo de nodo no admite ser movidoNo se puede resolver para este tipo de nodo
DerivativesNotInCommonParentLos derivados del nodo no están todos bajo un padre común con el destino del movimientoReorganiza los derivados y vuelve a intentarlo
SourcesNotInCommonParentLas fuentes del nodo no están todas bajo un padre comúnReorganiza las fuentes y vuelve a intentarlo
DataBundleLinkedToTwinEl Data Bundle del nodo está vinculado a un twinDesvincula primero el twin
DoesNotMeetHierarchyConstraintsEl movimiento viola una regla de jerarquía específica del tipoRevisa qué tipos hijo admite el padre de destino
MoveNodeFailedEl movimiento se rechazó por un motivo sin un código más específicoVuelve a intentarlo; contacta con soporte si persiste

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

CódigoSignificadoAcción sugerida
NodeHasDerivativesEl nodo tiene derivados que deben eliminarse primero, listados en derivatives[]Elimina o mueve los derivados listados y vuelve a intentarlo
NodeNotInDeletableStateEl nodo está actualmente en procesamiento o el procesamiento falló, según isProcessing / isFailedEspera a que termine el procesamiento, o resuelve el fallo, y vuelve a intentarlo
NodeHasBundleDependantsEl Data Bundle del nodo tiene dependientes que bloquean la eliminaciónElimina primero los dependientes
DeleteNodeFailedLa eliminación se rechazó por un motivo sin un código más específicoVuelve a intentarlo; contacta con soporte si persiste

Restaurar o eliminar permanentemente un nodo en la papelera

Sección titulada «Restaurar o eliminar permanentemente un nodo en la papelera»
EndpointEstadoCódigoSignificadoAcción sugerida
PATCH /v1/nodes/{id}/restore409StorageLimitExceededRestaurar el nodo excedería la cuota de almacenamiento de la organizaciónLibera espacio o aumenta la cuota, y vuelve a intentarlo
DELETE /v1/nodes/{id}/hard409NoNodeRemovedEl nodo no se encontró en la papelera en un estado eliminableVerifica el id del nodo y su estado en la papelera

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

CódigoSignificadoAcción sugerida
ProcessingCostMismatchEl costo de procesamiento enviado ya no coincide con el costo actualObtén una nueva estimación de costo y vuelve a intentarlo
NoInputDataFoundForProcessingNo se encontraron datos de entrada para procesar en este Data BundleVerifica que la sesión de carga se haya finalizado antes de lanzar el procesamiento
InsufficientProcessingCapacityLa capacidad de procesamiento no está disponible en este momentoVuelve a intentarlo más tarde
FailedToLaunchProcessingNo se pudo lanzar el trabajo de procesamientoVuelve a intentarlo; contacta con soporte si persiste
EndpointEstadoCódigoSignificadoAcción sugerida
POST /v1/site-files403StorageLimitExceededSe excedió la cuota de almacenamiento de la organizaciónLibera espacio o aumenta la cuota
POST /v1/site-files409FileAlreadyExistsYa existe un archivo con la misma identidadUsa el archivo existente, o sube uno con un nombre distinto
POST /v1/site-files/{fileId}/finalize400FileNotCompatibleEl formato del archivo subido no es compatible con el tipo de archivo esperadoVerifica el formato del archivo y vuelve a subirlo
POST /v1/bundles/{bundleId}/upload-sessions403StorageLimitExceededSe excedió la cuota de almacenamiento de la organizaciónLibera espacio o aumenta la cuota
POST /v1/bundles/{bundleId}/upload-sessions/{sessionId}/files403StorageLimitExceededSe excedió la cuota de almacenamiento de la organizaciónLibera espacio o aumenta la cuota
POST /v1/twin/{contextId}/object/attachments409StorageLimitExceededSe excedió la cuota de almacenamiento de la organizaciónLibera espacio o aumenta la cuota
POST /v1/twin/{contextId}/object/attachments409FileAlreadyExistsYa existe un adjunto con la misma identidadUsa el adjunto existente, o sube uno con un nombre distinto

PUT /v1/groups/{groupId}/users/{userId} (agregar un miembro) — 409 Conflict

CódigoSignificadoAcción sugerida
GroupHasSamlLinkLa membresía del grupo se gestiona mediante una integración SAML/SSOGestiona la membresía a través del proveedor SAML
CannotInviteToSCIMGroupLa membresía del grupo se gestiona mediante aprovisionamiento SCIMGestiona la membresía a través del proveedor SCIM
UserAlreadyMemberEl usuario ya es miembro del grupoNo se necesita ninguna acción

DELETE /v1/groups/{groupId}/users/{userId} (eliminar un miembro) — 409 Conflict

CódigoSignificadoAcción sugerida
GroupHasSamlLinkLa membresía del grupo se gestiona mediante una integración SAML/SSOGestiona la membresía a través del proveedor SAML
CannotRemoveMemberFromSCIMGroupLa membresía del grupo se gestiona mediante aprovisionamiento SCIMGestiona la membresía a través del proveedor SCIM

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

CódigoSignificadoAcción sugerida
DuplicateGroupNameYa existe un grupo con este nombre en la organizaciónElige un nombre distinto
CannotUpdateMemberFromSCIMGroupLa membresía del grupo se gestiona mediante aprovisionamiento SCIMGestiona la membresía a través del proveedor SCIM

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

CódigoSignificadoAcción sugerida
CannotRemoveSCIMGroupLa membresía del grupo se gestiona mediante aprovisionamiento SCIMGestiona la membresía a través del proveedor SCIM
CannotRemoveOrganizationGroupEl grupo no tiene una única división propietariaNo se puede resolver — este grupo no se puede eliminar mediante este endpoint

POST /v1/nodes/{nodeId}/invitations y POST /v1/invitations comparten los mismos códigos de error.

EstadoCódigoSignificadoAcción sugerida
409UserAlreadyInvitedEl usuario ya tiene una invitación pendienteNo se necesita ninguna acción
409UserAlreadyMemberEl usuario ya es miembroNo se necesita ninguna acción
403InvalidEmailDomainEl dominio del correo invitado no está permitido para esta organizaciónUsa una dirección de correo con un dominio permitido
400CustomRoleNotAssignableToDataNodeEl rol personalizado especificado no se puede asignar en este nodoElige un rol asignable en este nodo
400CustomRoleNotFoundEl rol personalizado especificado no existeVerifica el id del rol
400AdminsitrativeRoleNotFound*El rol administrativo especificado no existeVerifica el id del rol
400AdministrativeRoleInvalidNodeSe dirigió un rol administrativo a un nodo que no lo admiteAsigna el rol administrativo a nivel de organización en su lugar
422InvitationEmailRejectedEl proveedor de correo rechazó permanentemente la dirección del destinatarioCorrige la dirección de correo antes de volver a intentarlo
503InvitationEmailNotSentEl proveedor de correo no está disponible temporalmente; no se persistió nadaVuelve a intentar la solicitud tal cual

* Este nombre de código lleva un error de tipeo en la respuesta actual de la API — cópialo exactamente como se muestra, no AdministrativeRoleNotFound.

Límite de tasa, autenticación y control de acceso

Sección titulada «Límite de tasa, autenticación y control de acceso»

Un 403 puede provenir de cualquiera de las tres capas de control de acceso descritas en Primeros pasos — Modelo de seguridad: ámbitos de OAuth, roles por nodo y acceso al contenido. Las tres comparten actualmente el mismo código de estado, y la mayoría comparte el mismo cuerpo genérico, así que trata un 403 como “no autorizado por alguno de estos motivos” en lugar de asumir que siempre es un problema de ámbito.

EstadoCódigoSignificado
429rate_limitedSe agotó el bucket de solicitudes de la organización — consulta Límites de tasa
401not_authenticatedA la solicitud le falta un token bearer, o el token no se pudo analizar
401invalid_tokenFalló la verificación de firma o expiración del token
403(sin código — mensaje: "Insufficient OAuth scopes")El token no tiene un ámbito que la operación requiere — consulta Ámbitos de OAuth
403(sin código — mensaje: "Forbidden resource")El rol o el acceso al contenido del solicitante en este nodo no permite la acción, o la organización alcanzó un límite de licencias/asientos — el cuerpo no distingue cuál
403errorCode: "SSORestrictedResource"Este recurso está restringido a quienes se autentican mediante una sesión específica de SSO/proveedor de identidad
  • Consulta la referencia de la API para ver los esquemas completos de solicitud y respuesta de cada operación.