A production-grade Spring Boot REST API for querying protein-disease associations derived from biomedical databases (UniProt, DisGeNET, OMIM, MalaCards). Built as part of the VisFlow 2.0 biomedical workflow research infrastructure.
- Java 17 + Spring Boot 3.2
- Spring Data JPA + PostgreSQL
- OpenAPI 3 / Swagger UI
- JUnit 5 + Mockito (unit + integration tests)
- Docker + Docker Compose
- GitHub Actions CI
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/proteins |
List all proteins (paginated) |
| GET | /api/v1/proteins/{uniprotId} |
Get protein with disease associations |
| GET | /api/v1/proteins/search?q= |
Search by gene name, protein name, UniProt ID |
| GET | /api/v1/proteins/by-disease?disease= |
Find proteins by disease name |
| POST | /api/v1/proteins |
Create protein record |
| PUT | /api/v1/proteins/{uniprotId} |
Update protein |
| DELETE | /api/v1/proteins/{uniprotId} |
Delete protein |
| POST | /api/v1/proteins/{uniprotId}/diseases |
Add disease association |
| GET | /api/v1/proteins/{uniprotId}/diseases |
Get disease associations (optional minScore filter) |
# Start PostgreSQL + API
docker compose up
# API available at http://localhost:8080
# Swagger UI at http://localhost:8080/swagger-ui.html
# OpenAPI spec at http://localhost:8080/api-docsmvn test# Start PostgreSQL locally, then:
export DB_URL=jdbc:postgresql://localhost:5432/bioquery
export DB_USER=bioquery
export DB_PASS=bioquery
mvn spring-boot:runsrc/
├── main/java/com/kallol/bioquery/
│ ├── controller/ # REST endpoints
│ ├── service/ # Business logic
│ ├── repository/ # JPA repositories
│ ├── model/ # JPA entities
│ ├── dto/ # Request/Response DTOs
│ ├── exception/ # Custom exceptions + global handler
│ └── config/ # OpenAPI config
└── test/java/com/kallol/bioquery/
├── controller/ # MockMvc integration tests
└── service/ # Mockito unit tests
This API serves as the data access layer for the BioFlow Pipeline and supports the VisFlow 2.0 declarative workflow system (ACM SSDBM 2025).