Bridge Research Study REST API
Method | URI | Auth | Body | Return | Description |
---|---|---|---|---|---|
Studies | |||||
GET | /studies | Bridge User | - | PaginatedResults<Study> | All studies (for creating links within any community) |
GET | /studies/{id} | Bridge User | - | Study | |
GET | /studies/enrolled | Bridge User | - | PaginatedResults<Study> | All studies in which the user has one or more participants enrolled. Need this to set up correct forms, etc. in the UI |
POST | /studies | Admin | Study | Study | study with id returned |
PUT | /studies/{id} | Admin | Study | Study | |
DELETE | /studies/{id} | Admin | - | - | |
POST | /studies/{id}/consent | Bridge User | Dataset | Dataset | Submit consent form instance; become a participant in the study |
DELETE | /studies/{id}/withdraw/{id} | Bridge User | - | - | Delete all datasets for the indicated participant, and delete the consent record; this participant has been withdrawn from the study |
Forms / Dataset Definitions | |||||
GET | /studies/{id}/forms | Bridge User | - | PaginatedResults<Form> | Unlikely to be more than a page of these |
GET | /studies/{id}/forms/{id} | Bridge User | - | Form | |
POST | /studies/{id}/forms | Researcher w/ edit permission | Form | Form | form with id returned |
PUT | /studies/{id}/forms/{id} | Researcher w/ edit permission | Form | Form | |
DELETE | /studies/{id}/forms/{id} | Researcher w/ edit permission | - | - | |
Consents (a special kind of form/dataset definition, one per study, used to create a consent record, stored encrypted) | |||||
GET | /studies/{id}/consent | Bridge User | - | Form | get consent form |
PUT | /studies/{id}/consent | Researcher w/ edit permission | Form | - | create or update consent form |
DELETE | /studies/{id}/consent | Researcher w/ edit permission | - | - | delete consent form |
Participants (User will create one or more participants for each research project the user is involved with; I would list all participations across all projects, since we proposed initially to show it in the profile or journal section of the app) | |||||
GET | /participants | Bridge User | - | PaginatedResults<Dataset> | All across all studies, for this user |
GET | /participants/{id} | Bridge User | - | Dataset | view consent form |
PUT | /participants/{id} | Bridge User | Dataset | Dataset | update consent form |
Datasets (have to be scoped to a participant; not sure how to structure forms with a project or forms between projects) | |||||
GET | /datasets/{id} | Anonymized Participant | - | PaginatedResults<DatasetHeader> | All datasets for one participant |
GET | /form/{id}/datasets/{id} | Anonymized Participant | PaginatedResults<DatasetHeader> | All datasets for a specific form and participant | |
GET | /study/{id}/datasets/{id} | Anonymized Participant | All datasets for a specific study and participant (datasets may have been generated from different forms) | ||
POST | /datasets/{id} | Anonymized Participant | DatasetRow | - | Append a row to the dataset (create if necessary) for a participant |
GET | /datasets/{id}/{row} | Anonymized Participant | - | DatasetRow | Get full record for row N for a participant |
PUT | /datasets/{id}/{row} | Anonymized Participant | DatasetRow | DatasetRow | Edit row N for a participant |
DELETE | /datasets/{id}/{row} | Anonymized Participant | - | - | Delete row N for a participant |
Participants - In order for a user to manipulate multiple participants, those records have to have some kind of identifying information that we can refer to (that is the same between consents to different research), like a name or something. Otherwise we really can't give the user an UI to manipulate Jane vs. Johnny in a given study.