This is a v2 science API. These APIs are currently being implemented. Some features described in “Evolution of the Bridge System” are not yet available.
A Bridge app can be used to run one or more studies, with participants who can enroll in one or more of these studies. Each study is sponsored by an organization, which grants permission to the members of that organization to access the study (according to their assigned roles).
Studies follow a lifecycle that supports the proper performance of study research. New studies are created in the
design phase and are manually advanced by study coordinators as appropriate.
Study lifecycle phases
|legacy||This study was created prior to the addition of study phases, and does not participate in any of the lifecyle constraints. To move this study into the lifecycle, this study can be transitioned via the design endpoint.|
|design||The study can be edited, including the associated schedule, and the schedule can be changed. The study is not visible in public registries, and when an account is enrolled in a study in the
|recruitment||To move to recruitment, the associated app should be available in the app store and the IRB approval for the study must be recorded as part of the study.
The study metadata can be edited during recruitment, but the associated schedule and custom events cannot be changed, nor can the study be switched to another schedule. The study becomes visible in public registries, and accounts are enrolled normally (no test tag is added). The study cannot be logically or physically deleted. When recruitment targets have been met, this study can be transitioned via the conduct endpoint.
|in_flight||The study metadata can be edited, but the schedule remains immutable. The study should no longer be visible in public registries, and attempts to enroll an account in the study will be rejected (HTTP response code:
|analysis||The study can no longer be edited in any way. The study should no longer be visible in public registries, and attempts to enroll an account in the study will be rejected (HTTP response code:
|completed||The study can no longer be edited in any way. The study should no longer be visible in public registries, and attempts to enroll an account in the study will be rejected (HTTP response code:
|withdrawn||A study can be transitioned from any other phase than
Information for study display and oversight
Even before a participant signs in to a Bridge app, it is possible to retrieve
StudyInfo from Bridge using a public (unauthenticated) study info API. This information may be helpful for tailoring a UI. In one Bridge app for example, participants were prompted to enter their study ID, and then the app used that information to tailor the sign in screen to that specific study in the app.
The fields in the
StudyInfo object are a subset of the fields that exist in the larger
Study model (which can be retrieved by participant apps after sign in, via the get study API.
StudyInfo (part of Study object)
|identifier||Y||A string identifier that is unique for this study in the context of the app where it is hosted (lower- or upper-case letters, numbers, dashes, and/or underscores only).|
|name||Y||The name of the study as you would like it to appear to participants.|
|details||N||This is a long form textual description of the study for prospective participants. It can embed rich text formatting (such as markdown) if the client will support rendering the notation.|
|phase||Y||The phase of this study (see above).|
|studyLogoUrl||N||If supplied, it should be an URL to download and display a vector-graphic (SVG) logo or graphic identifying this study. See information on uploading a logo image, below.|
|colorScheme||N||A set of colors that can be used to customize an app when the user is in the context of performing this study.|
|signInTypes||N||Participants may be enrolled with different credentials, necessitating different method of authenticating users with the Bridge server. On a per study basis, a study can indicate the optimal sign in method. A client may ask the participant for their study, then query the server for this information in order to display the appropriate sign in screen to the participant. Values should be interpreted to be in the order of their importance, if there are multiple options given. Possible values are enumerated in the SignInTypes enumeration.|
Study designers can upload a study logo. The API is similar to the hosted files API:
- The developer should create a FileRevision object for the image and submit it via the logo creation API;
- The revision will be returned with a pre-signed URL to PUT the content of the image to Amazon's S3 file hosting service (the URL expires in 10 minutes);
- The developer should PUT the file contents to S3;
- The developer should call the API to mark the logo upload as completed.
After the second call to record that the upload is finished, the study object’s
studyLogoUrl will be updated with an HTTP link to download the logo image. The updated study object is returned from the finish API.
Another set of fields on the
Study model contain information for study designers and for oversight:
|scheduleGuid||(Y)||The GUID of the schedule that will be used to generate a timeline for participants in this study. The GUID can be used to retrieve the appropriate
|clientData||N||This is an arbitrary JSON object graph that the client can use to store extra information about a study that is not specified in the Bridge schema.|
|institutionId||N||If the investigator or sponsoring institution have assigned this study an identifier of some kind, it should be recorded in this field.|
|diseases||N||What disease state is this study researching? Can be general (neurodegenerative disorders) or specific (progressive supranuclear palsy). This is an array of values and the individual entries are not currently constrained.|
|studyDesignTypes||N||What type of research design is being used in this study (intervential, observational, cohort study, cross-over, etc.). This is an array of values and the individual entries are not currently constrained.|
|keywords||N||Free text keyword values to aid in searching for this study (to categorize it, please use the
|irbName||N||The name of the IRB that approved the study or decided it was exempt from human subjects research guidelines. Optional, but can be used to identify one of several IRBs if more than one is included in the study’s contact information.|
|irbProtocolName||N||The name of the protocol as it was submitted to the IRB for approval.|
|irbProtocolId||N||The identification number issued by the IRB for the study, if any.|
|irbDecisionOn||(Y)||Before the study can launch, it must be reviewed by your IRB and either be approved, or considered exempt from human subjects research guidelines. Once
|irbDecisionType||(Y)||The type of decision issued by the IRB, either
|irbExpiresOn||(Y)||The last date that the IRB’s review is considered up-to-date for this study. Only required if the IRB’s decision was an approval and not an exemption.|
|contacts||Y||An array of
A contact contains the following information:
|name||Y||The name of the person or organization, e.g. “Dr. Tim Powers, Ph.D.” or “Sage Bionetworks”.|
|role||Y||The purpose of the contact. The values that are supported include
|position||N||The position of an individual relative to their institutional affiliation (not their role in the study, please use the role attribute for this). For example, “AssociateBioengineering.”|
|affiliation||N||The organization an individual is affiliated with, e.g. "UC San Francisco”. This may or may not be the same as the institution sponsoring the study.|
|address||N||The full mailing Address, if required (see below).|
|N||Email address of an individual or organization.|
|phone||N||Phone number of an individual or organization.|
|jurisdiction||N||The regulatory jurisdiction of this entry. When multiple jurisdictions are involved in a study, there may be principal investigators, IRBs, and study coordinators involved from each jurisdiction. It may be useful to show a participant the people and organizations involved in their specific jurisdiction, or the primary jurisdiction and their specific jurisdiction, or all jurisdictions.|
Address is suitable for displaying an address to end users.
|placeName||N||The name of a building, or sometimes the name of the organization at the address.|
|street||N||A street (usually a number and a name, but anything that defines the locality).|
|mailRouting||N||Mail routing information such as a unit, P.O. box, mail stop, or other directions on where to deliver mail at the locality.|
|city||N||City. In the example from the Philippines above, there are two municipalities specified.|
|division||N||state, province, prefecture|
|postalCode||N||Zip code, post code, etc.|
Here are some examples of more unusual addresses and how they might be stored:
- 50 miles (80 km) West of Socorro, New Mexico, USA
mailRouting= “50 miles (80 km) West of”
division= “New Mexico”
- 647 National Road
16 Sunlight Building
Barangay Muzon, Taytay, Rizal
Taytay CPO-PO Box# 1920 + Rizal
placeName= “647 National Road”
street= “16 Sunlight Building”
city= “Barangay Muzon, Taytay”
mailRouting= “Taytay CPO-PO Box# 1920”
A more complete view of the participants’ in a study can be retrieved through the Study participant APIs. Many additional APIs exist to work with an enrolled account in a study, such as to resend an email verification request or to withdraw a participant from the study.
Participant accounts can be marked with the
test_user data group. Any data collected via this account will be clearly marked as test data in the Synapse data repositories. A test account can be created in any study phase, but accounts created in the design phase will automatically be marked with the
test_user data flag. The flag cannot be removed once it is added to an account.
A special kind of test account called a preview user can be created, and this test account will be deleted when a study is moved from the
design to the
recruitment phase. Such accounts can only be enrolled in one study since they will be deleted when that study is moved to
recruitment. It is useful for allowing study designers to preview a study as it will appear in an app.
To use this feature in a Bridge app:
- Update the
App.dataGroupscollection by adding the
preview_userdata group tag (Bridge does not include this tag by default, unlike
- Any existing account or new account can be marked with the
- When a study moves from
recruitment, all accounts marked with the
preview_usertag will be deleted.
Although you can add this tag at any time to any account, it does not do anything other than the behavior described here, so it is only useful when working with a study in design. You should not add it to any administrative accounts during study design or they will be deleted as well.