How Can We Help?
Understanding Dependents in the Pure APIUnderstanding Dependents in the Pure API
In traditional relational databases, data relationships are typically defined using primary keys (PK) and foreign keys (FK) to establish links between table rows in tables. However, in the API, relationships between different content types are managed through UUIDs (Universally Unique Identifiers) and dependents.
Instead of foreign keys, the API provides DEPENDENTS endpoints that allow users to retrieve related records for a given content type. These endpoints return all associated content linked to a specified UUID.
How Dependents Work
Each content type (e.g., Person, Research Output, Project) may have dependencies, other content that relies on it. To retrieve these dependencies, the API provides dedicated DEPENDENTS endpoints. For example, if you want to identify records that depend on a specific Research Output (and might prevent its deletion), you would use the GET dependents endpoint with the Research Output's UUID.
Rule of Thumb:
- UUIDs are always present in content and serve as unique identifiers.
- The API does not use traditional database constraints like primary and foreign keys.
- Instead, relationships are retrieved dynamically through the DEPENDENTS endpoints, which identify content that relies on a given record. This helps you understand dependencies between content types and how they are connected. This allows you to create logical associations.
List of Dependents Endpoints
The following API endpoints are available to retrieve dependent relationships for each content type:
- GET Lists all dependents of an Application
- GET Lists all dependents of an Award
- GET Lists all dependents of an External Organization
- GET Lists all dependents of an External Person
- GET Lists all dependents of a Journal
- GET Lists all dependents of an Organization
- GET Lists all dependents of a Person
- GET Lists all dependents of a Project
- GET Lists all dependents of a Publisher
- GET Lists all dependents of a Research Output
Example Use Case
If you need to find all relationships for a specific Person with UUID 12345-abcdef-12345-abcdef
, you would call:
GET /ws/api/persons/12345-abcdef-12345-abcdef/dependents
This will return a list of all content types that have a relationship with this Person.
Please note: In this list, the organization linked to the person is not shown, as the organization exists independently of the person. The person can be deleted without affecting the organization, but cannot be deleted if they are the author of a research output, as the output depends on the person
{
"items": [
{
"systemName": "Activity",
"uuid": "209ee220-edc1-4502-983d-2bf61f20388e"
},
{
"systemName": "Impact",
"uuid": "79b94064-4d79-4ce3-9058-791f3ad4f243"
},
{
"systemName": "Prize",
"uuid": "2357c89a-7b10-458d-9e0a-851de9567c1c"
},
{
"systemName": "PressMedia",
"uuid": "9605f938-fcb9-49ae-bf09-3f18cdcd7cff"
},
{
"systemName": "Equipment",
"uuid": "0f7364e7-a474-4869-ba77-c5480ca6db88"
},
{
"systemName": "Project",
"uuid": "8a9e55bc-c5ec-4e7d-8887-f25a7a3c1f13"
},
{
"systemName": "StudentThesis",
"uuid": "c5054eee-87b6-47fe-8adb-40447625d11f"
},
{
"systemName": "ResearchOutput",
"uuid": "24850554-4c15-465a-b876-d381cfce50b2"
},
{
"systemName": "Course",
"uuid": "6502d342-ecfe-4e05-a9e4-bf039e7b9c2b"
}
]
}
This API call returns a list of all content types associated with the person identified by the provided UUID. The response includes:
-
items
: An array of objects, each containing:-
systemName
: The name of the related content type (e.g., "Project", "ResearchOutput"). -
uuid
: The unique identifier of the related content.
-
To retrieve more information about a specific dependent item, use its systemName
and uuid
to construct a new API request. For example, to get details about a related project, use the uuid
from the "Project" or “ResearchOutput” in the response and call:
GET /ws/api/projects/{uuid}
GET /ws/api/research-ouputs/{uuid}
If the user does not have access to view all the dependent content, an authorization error will be thrown.
Quick diagram
Explanation:
-
Central Node: The
Person
with UUIDperson_uuid
is the central entity. -
Direct Dependents: The person has direct relationships with both
Project
(UUIDproject_uuid
) andResearch Output
(UUIDsro1_uuid
,ro2_uuid
,ro3_uuid
). This means the person is directly involved in the project and has also authored or contributed to the research outputs.
Interpretation:
This diagram shows that the person is independently connected to both a project and research outputs. This could represent, for example, a researcher who is working on a project and has also published research articles that are not directly related to that project.
Published at March 27, 2025