autocomit

This commit is contained in:
2026-02-07 17:51:17 +01:00
parent ff2eb62174
commit b752e26526
68 changed files with 8291 additions and 0 deletions
+308
View File
@@ -0,0 +1,308 @@
# LDPv2 MVP - API Endpoints Summary
Complete list of RESTful API endpoints for the MVP.
**Base URL**: `http://localhost:8080/api`
**Authentication**: Bearer JWT token (except /auth endpoints)
---
## Authentication Endpoints
| Method | Endpoint | Description | Auth Required |
|--------|----------|-------------|---------------|
| POST | `/auth/register` | Register new user | No |
| POST | `/auth/login` | Login and get JWT token | No |
| GET | `/auth/me` | Get current user info | Yes |
---
## Business Unit Endpoints
| Method | Endpoint | Description | Auth Required |
|--------|----------|-------------|---------------|
| GET | `/business-units` | List all business units | Yes |
| GET | `/business-units/search?q={query}` | Search business units | Yes |
| GET | `/business-units/{id}` | Get business unit by ID | Yes |
| POST | `/business-units` | Create business unit | Yes |
| PUT | `/business-units/{id}` | Update business unit | Yes |
| DELETE | `/business-units/{id}` | Delete business unit | Yes |
**Query Parameters**:
- `page`: Page number (default: 0)
- `size`: Page size (default: 20)
- `sort`: Sort criteria (e.g., `name,asc`)
---
## Application Endpoints
| Method | Endpoint | Description | Auth Required |
|--------|----------|-------------|---------------|
| GET | `/applications` | List all applications | Yes |
| GET | `/applications/search` | Advanced search | Yes |
| GET | `/applications/{id}` | Get application by ID | Yes |
| POST | `/applications` | Create application | Yes |
| PUT | `/applications/{id}` | Update application | Yes |
| PATCH | `/applications/{id}/status` | Update status only | Yes |
| DELETE | `/applications/{id}` | Delete application | Yes |
| GET | `/applications/by-status/{status}` | Filter by status | Yes |
| GET | `/applications/by-business-unit/{businessUnitId}` | Filter by BU | Yes |
**Query Parameters for `/applications` and `/applications/search`**:
- `status`: Filter by ApplicationStatus
- `businessUnitId`: Filter by business unit ID
- `name`: Search by name (partial match)
- `page`, `size`, `sort`: Pagination
---
## Environment Endpoints
| Method | Endpoint | Description | Auth Required |
|--------|----------|-------------|---------------|
| GET | `/environments` | List all environments | Yes |
| GET | `/environments/{id}` | Get environment by ID | Yes |
| POST | `/environments` | Create environment | Yes |
| PUT | `/environments/{id}` | Update environment | Yes |
| DELETE | `/environments/{id}` | Delete environment | Yes |
| PATCH | `/environments/{id}/deactivate` | Deactivate environment | Yes |
| PATCH | `/environments/{id}/reactivate` | Reactivate environment | Yes |
**Query Parameters**:
- `isActive`: Filter by active status (default: true)
- `isProduction`: Filter production environments
- `environmentGroup`: Filter by group
- `page`, `size`, `sort`: Pagination
---
## Version Endpoints
| Method | Endpoint | Description | Auth Required |
|--------|----------|-------------|---------------|
| GET | `/applications/{appId}/versions` | List versions for application | Yes |
| GET | `/versions/{id}` | Get version by ID | Yes |
| POST | `/applications/{appId}/versions` | Create version | Yes |
| PUT | `/versions/{id}` | Update version | Yes |
| DELETE | `/versions/{id}` | Delete version | Yes |
| GET | `/versions/latest?applicationId={appId}` | Get latest version | Yes |
**Query Parameters for `/applications/{appId}/versions`**:
- `page`, `size`, `sort`: Pagination (default sort: releaseDate,desc)
---
## Deployment Endpoints
### Recording & Retrieval
| Method | Endpoint | Description | Auth Required |
|--------|----------|-------------|---------------|
| POST | `/deployments` | Record new deployment | Yes |
| GET | `/deployments` | List all deployments | Yes |
| GET | `/deployments/{id}` | Get deployment by ID | Yes |
| GET | `/deployments/search` | Advanced search | Yes |
### Current State Queries
| Method | Endpoint | Description | Auth Required |
|--------|----------|-------------|---------------|
| GET | `/deployments/current` | Get current state (all apps/envs) | Yes |
| GET | `/applications/{appId}/deployments` | Deployment history for app | Yes |
| GET | `/applications/{appId}/deployments/current` | Current state per env for app | Yes |
| GET | `/environments/{envId}/deployments/current` | Current deployments in env | Yes |
### Statistics & Analytics
| Method | Endpoint | Description | Auth Required |
|--------|----------|-------------|---------------|
| GET | `/deployments/stats/summary` | Summary statistics | Yes |
| GET | `/deployments/stats/frequency?range={days}` | Deployment frequency | Yes |
| GET | `/deployments/stats/by-environment` | Deployments by environment | Yes |
| GET | `/deployments/stats/by-application` | Top deployed applications | Yes |
| GET | `/deployments/stats/version-distribution` | Version distribution | Yes |
| GET | `/deployments/calendar?year={year}&month={month}` | Calendar data | Yes |
### Export
| Method | Endpoint | Description | Auth Required |
|--------|----------|-------------|---------------|
| GET | `/deployments/export?format={csv\|excel}` | Export deployments | Yes |
**Query Parameters for `/deployments` and `/deployments/search`**:
- `applicationId`: Filter by application
- `versionId`: Filter by version
- `environmentId`: Filter by environment
- `dateFrom`: Filter by start date
- `dateTo`: Filter by end date
- `deployedBy`: Filter by user
- `page`, `size`, `sort`: Pagination
**Query Parameters for `/deployments/current`**:
- `applicationId`: Optional filter by application
- `environmentId`: Optional filter by environment
---
## Contact Endpoints
### Contact Roles
| Method | Endpoint | Description | Auth Required |
|--------|----------|-------------|---------------|
| GET | `/contact-roles` | List all contact roles | Yes |
| POST | `/contact-roles` | Create contact role | Yes (Admin) |
### Persons
| Method | Endpoint | Description | Auth Required |
|--------|----------|-------------|---------------|
| GET | `/persons` | List all persons | Yes |
| GET | `/persons/{id}` | Get person by ID | Yes |
| POST | `/persons` | Create person | Yes |
| PUT | `/persons/{id}` | Update person | Yes |
| DELETE | `/persons/{id}` | Delete person | Yes |
**Query Parameters for `/persons`**:
- `email`: Search by email
- `name`: Search by name (first or last)
- `page`, `size`, `sort`: Pagination
### Contacts
| Method | Endpoint | Description | Auth Required |
|--------|----------|-------------|---------------|
| GET | `/contacts` | List all contacts | Yes |
| GET | `/contacts/{id}` | Get contact with persons | Yes |
| POST | `/contacts` | Create contact | Yes |
| PUT | `/contacts/{id}` | Update contact | Yes |
| DELETE | `/contacts/{id}` | Delete contact | Yes |
| POST | `/contacts/{id}/persons/{personId}` | Add person to contact | Yes |
| DELETE | `/contacts/{id}/persons/{personId}` | Remove person from contact | Yes |
| PATCH | `/contacts/{id}/persons/{personId}/primary` | Set as primary | Yes |
---
## Common Response Formats
### Success Response (Single Entity)
```json
{
"id": "uuid",
"name": "Entity Name",
...
"createdAt": "2026-02-07T10:00:00Z",
"updatedAt": "2026-02-07T10:00:00Z"
}
```
### Success Response (Paginated List)
```json
{
"content": [ /* array of entities */ ],
"pageable": {
"pageNumber": 0,
"pageSize": 20,
"sort": { "sorted": true, "unsorted": false }
},
"totalElements": 100,
"totalPages": 5,
"last": false,
"first": true,
"size": 20,
"number": 0,
"numberOfElements": 20,
"empty": false
}
```
### Error Response
```json
{
"status": 400,
"message": "Validation failed",
"timestamp": "2026-02-07T10:00:00Z",
"path": "/api/applications",
"errors": [
{
"field": "name",
"message": "Name is required",
"rejectedValue": null
}
]
}
```
---
## HTTP Status Codes
| Code | Meaning | When Used |
|------|---------|-----------|
| 200 | OK | Successful GET, PUT, PATCH |
| 201 | Created | Successful POST |
| 204 | No Content | Successful DELETE |
| 400 | Bad Request | Validation error, business rule violation |
| 401 | Unauthorized | Missing or invalid JWT token |
| 403 | Forbidden | Valid token but insufficient permissions |
| 404 | Not Found | Resource doesn't exist |
| 409 | Conflict | Duplicate resource (e.g., unique constraint violation) |
| 500 | Internal Server Error | Unexpected server error |
---
## Authentication Header
All authenticated endpoints require:
```
Authorization: Bearer <JWT_TOKEN>
```
Example:
```
GET /api/applications
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
```
---
## CORS Configuration
Frontend origin allowed: `http://localhost:4200` (development)
Allowed methods: `GET`, `POST`, `PUT`, `PATCH`, `DELETE`, `OPTIONS`
Allowed headers: `*`
Credentials: `true`
---
## Rate Limiting (Future)
Not implemented in MVP, but planned for production:
- 100 requests per minute per user
- 1000 requests per hour per user
---
## API Versioning
Current version: `v1` (implicit)
Future versions will use URL path: `/api/v2/...`
---
## OpenAPI/Swagger Documentation
Interactive API documentation available at:
- **Swagger UI**: `http://localhost:8080/swagger-ui/index.html`
- **OpenAPI Spec**: `http://localhost:8080/v3/api-docs`
---
**Document Version**: 1.0
**Last Updated**: February 2026
**Status**: Complete for MVP