Download OpenAPI specification:
Welcome to the CCDI Participant Index (CPI) Documentation! This site provides information to understand the CPI application programming interface (API) available to authorized users.
The CPI is designed and developed within the National Cancer Institute (NCI) Childhood Cancer Data Initiative (CCDI) program, and is intended to provide a centralized index of participant data across multiple institutions.
The goal of the CPI is to manage and share multiple cross-linked participant IDs that represent the same individual by connecting various participant IDs from different studies/research institutions (domains). These mappings will empower researchers to explore complex questions, gain deeper insights into diseases, develop innovative therapies, and enhance existing treatments.
Participant ID: Public identifier that appears in a research dataset accessible to researchers (e.g., Kids First ID or GENIE ID). This also includes global identifiers used more broadly (e.g., COG USI).
Domain: Groups of unique participant IDs, Domains can be categorized as:
The CPI is envisioned as an API-mediated service with a minimal web application to serve as an administrative user interface. CPI will not hold PII or any participant data—just IDs. Access to data with which those IDs are associated will remain under control of primary data source owners.
The CPI API will be made available to applications and services authorized by NCI. Integration with the CPI is currently under development for certain CCDI applications; other interested system owners may initiate a request for access by emailing NCIChildhoodCancerDataInitiative@mail.nih.gov.
We follow the OAuth 2.0 standard. Once your request to access the CPI API service is approved, you will receive the Client ID, credentials, and the token server endpoint. Use Client ID, credentials to communicate with the token server to obtain an access token, which you can then use token to interact with the CPI service.
📌 The latest Release can be found here - CPI V1.3 Release notes.pdf.
Given a list of 1 to many domain ID/ID pairs, return the input domain ID/ID pair and all mapped domain ID/ID pairs for each input domain ID/ID pair
domain_name | stringr'^[a-zA-Z0-9\s_.-]*$' |
participant_id | stringr'^[a-zA-Z0-9\s_.-]*$' |
An example request that includes an array of a single object containing a single Participant ID and Domain ID pair.
[- {
- "domain_name": "domain_name_1",
- "participant_id": "participant_id_1"
}
]
An example response for a request that that only included a single Participant ID and Domain ID pair in the request body.
{- "supplementary_domains": [
- {
- "domain_name": "domain_name1",
- "domain_description": "domain_description1",
- "domain_category": "dataset",
}
], - "participant_ids": [
- {
- "domain_name": "domain_name1",
- "participant_id": "participant_id_1",
- "associated_ids": [
- {
- "participant_id": "participant_id_1",
- "domain_name": "domain_name1",
- "domain_category": "organizational_identifier"
}, - {
- "participant_id": "participant_id_1",
- "domain_name": "domain_name1",
- "domain_category": "organizational_identifier"
}
]
}
]
}
Given a list of 1 to many domain ID/ID pairs, return the status for each input domain ID/ID pair
domain_name | stringr'^[a-zA-Z0-9\s_.-]*$' |
participant_id | stringr'^[a-zA-Z0-9\s_.-]*$' |
An example request that includes an array of a single object containing a single Participant ID and Domain ID pair.
[- {
- "domain_name": "domain_name_1",
- "participant_id": "participant_id_1"
}
]
Returns an array of status for each domain ID/ID pairs
[- {
- "domain_name": "domain_name_1",
- "participant_id": "participant_id1",
- "status": "valid"
}, - {
- "domain_name": "domain_name_2",
- "participant_id": "participant_id2",
- "status": "valid"
}
]
Given a list of 1 to many IDs (without domain IDs), return the input ID and all mapped domain IDs for each input ID.
Sample Description for Request Body
An example request that includes an array in the request body containing a single Participant ID.
[- "participant_id_1"
]
An example response to a request that contained a single Participant ID in the request body.
{- "participant_id": "participant_id_1",
- "associated_domains": [
- {
- "domain_name": "domain_name_1a",
- "domain_description": "domain_description_1a",
- "status": "active",
- "domain_category": "study",
- "created_date": "2023-10-11T00:00:00Z",
- "modified_date": "2023-12-11T00:00:00Z"
}, - {
- "domain_name": "domain_name_1b",
- "domain_description": "domain_description_1b",
- "domain_category": "dataset",
- "status": "active",
- "created_date": "2023-10-11T00:00:00Z",
- "modified_date": "2023-12-11T00:00:00Z"
}
]
}
Given a list of 1 to many domain IDs, return counts.
Returns an array of statistics for each domain and the total number of unique individuals and mapped participant IDs.
{- "counts_by_domain": [
- {
- "domain_name": "domain_name_1",
- "count": 10
}, - {
- "domain_name": "domain_name_2",
- "count": 20
}
], - "mapped_participant_ids": 30,
- "unique_individuals": 22
}
Get a list of all domain IDs and their properties
Returns an array of details for each domain.
[- {
- "domain_name": "domain_name_1",
- "domain_description": "domain_description_1",
- "domain_category": "study",
- "status": "active",
- "created_date": "2023-10-11T00:00:00Z",
- "modified_date": "2023-12-11T00:00:00Z"
}, - {
- "domain_name": "domain_name_2",
- "domain_description": "domain_description_2",
- "domain_category": "dataset",
- "status": "active",
- "created_date": "2023-10-11T00:00:00Z",
- "modified_date": "2023-12-11T00:00:00Z"
}
]