Complete CRUD API for managing genomics research data with JWT authentication, role-based access control, and Keycloak integration.
Folio provides a comprehensive REST API for managing genomics research data with:
- JWT Authentication: Secure token-based authentication via Keycloak
- Role-based Access Control: Granular permissions with
folio.READ
andfolio.WRITE
scopes - Complete CRUD Operations: Full Create, Read, Update, Delete operations for all entities
- Soft Deletes: All delete operations preserve data integrity with timestamp-based soft deletion
- Cascade Protection: Prevents deletion of entities with dependencies
- Keycloak Integration: Automatic project and study group creation and user management
Pathogens (managed by super users)
└── Projects (with read/write/admin groups)
└── Studies (with read/write/admin groups)
- Public Access: Anyone with valid token can view pathogens
- Super User (
folio.WRITE
): Can create/edit/delete pathogens, projects, and studies - Project Members: Automatic group-based permissions (read/write/admin) for project access
- Study Members: Automatic group-based permissions (read/write/admin) for study access
- Data Protection: Cascade deletion prevention maintains referential integrity
GET /health
- Health check endpoint
GET /pathogens
- List all pathogensPOST /pathogens
- Create a new pathogenGET /pathogens/{pathogen_id}
- Get pathogen detailsPUT /pathogens/{pathogen_id}
- Update pathogenDELETE /pathogens/{pathogen_id}
- Delete pathogen (soft delete)
GET /projects
- List all projectsPOST /projects
- Create a new projectGET /projects/{project_id}
- Get project detailsPUT /projects/{project_id}
- Update projectDELETE /projects/{project_id}
- Delete project (soft delete)
POST /projects/{project_slug}/resource
- Create Keycloak resource for projectGET /projects/{project_slug}/resource
- Get project resource detailsPOST /projects/{project_slug}/group
- Create Keycloak group for projectGET /projects/{project_slug}/group
- Get project group detailsGET /projects/{project_slug}/group/members
- Get project group membersPOST /projects/{project_slug}/group/members/{username}
- Add user to project groupDELETE /projects/{project_slug}/group/members/{username}
- Remove user from project groupPOST /projects/{project_slug}/users
- Add user to project with permissionsGET /projects/{project_slug}/studies
- Get studies for a projectGET /projects/{project_slug}/summary
- Get project summary with statistics
GET /studies
- List all studiesPOST /studies
- Create a new studyGET /studies/{study_id}
- Get study detailsPUT /studies/{study_id}
- Update studyDELETE /studies/{study_id}
- Delete study (soft delete)
POST /studies/{study_id}/resource
- Create Keycloak resource for studyGET /studies/{study_id}/resource
- Get study resource detailsPOST /studies/{study_id}/group
- Create Keycloak group for studyGET /studies/{study_id}/group
- Get study group detailsGET /studies/{study_id}/group/members
- Get study group membersPOST /studies/{study_id}/group/members/{username}
- Add user to study groupDELETE /studies/{study_id}/group/members/{username}
- Remove user from study groupPOST /studies/{study_id}/users
- Add user to study with permissions
When projects and studies are created, Folio automatically:
- Creates UMA resources in Keycloak
- Creates corresponding groups with appropriate permissions
- Manages user group membership
- Handles resource-based authorization
Swagger documentation is available at /docs/
when the service is running.