Table 3:
Suggested library API functions with all requests made in, and responses returned in, YAML+Markdown/JSON/XML formats
| Function | User access level | Description | |
|---|---|---|---|
| Search | Simple search | Public | A free text search, examining the entire contents of the portal and returning a list of phenotypes that match the search criteria | 
| Advanced search | Public | A free text search, examining specified sections of the portal (e.g., main content, just metadata) and returning a list of phenotypes that match the search criteria | |
| Phenotype extraction | Extracting specific phenotype(s) | Public | Given a phenotype ID supplied by a user (or generated by the platform), the API returns the phenotype definition | 
| Extracting all phenotypes | Public | Return a full list of phenotypes | |
| Adding new phenotype(s) | Authorized users | Only authorized users should be allowed to submit either a single or group of phenotype definitions | |
| Updating a phenotype definition | Updating the contents of a specific phenotype | Authorized users | Each aspect of a phenotype definition—including constituent code lists, links to datasets where that phenotype appears, and other metadata—can be updated by passing a phenotype ID and the names of the fields to update and their new values. Each update should mark a version number to keep record of any updates over time | 
| Updating a complete phenotype with multiple features | Authorized users | Update a phenotype's contents by passing a phenotype ID and submitting an updated phenotype definition file to replace the previous version for public view | |
| Submission of a new validation case study for an existing phenotype | Authorized users | Adding a new use case to validate an existing phenotype (identified by a phenotype ID) by passing a file | |
| Deletion of a phenotype | Removing a phenotype from public view (soft delete) | Private to portal administrators | An administrator of the portal can hide a phenotype definition by providing a phenotype ID | 
| Removing a phenotype from the library (hard delete) | Private to portal administrators | An administrator of the portal can delete a phenotype definition entirely by providing a phenotype ID | |