# Meldestelle Self-Contained Systems API

Unified API Gateway for all bounded contexts of the Austrian Equestrian Federation's Meldestelle system.

Interactive API Documentation OpenAPI Specification

## Overview

The Meldestelle API provides a unified interface to various bounded contexts while maintaining the independence of each context. This API Gateway aggregates all bounded context APIs and provides a single entry point for clients.

The API follows REST principles and uses JSON for data exchange. All responses are wrapped in a consistent format using the `BaseDto` wrapper.

Authentication is handled using JWT (JSON Web Token) based authentication. Most endpoints require authentication, which can be obtained by registering and logging in through the Authentication Context.

## API Contexts

### Authentication Context

User authentication, registration, and profile management

Base Path: /auth

#### Key Endpoints:

- POST /auth/register - User registration
- POST /auth/login - User authentication
- GET /auth/profile - Get user profile
- PUT /auth/profile - Update user profile
- POST /auth/change-password - Change password

### Members Context

Member registration, profile management, and membership administration

Base Path: /api/members

#### Key Endpoints:

- GET /api/members - Get all members with pagination
- GET /api/members/search - Search members by criteria
- GET /api/members/{id} - Get member by ID
- POST /api/members - Create new member
- PUT /api/members/{id} - Update member information
- DELETE /api/members/{id} - Delete member (soft delete)

### Master Data Context

Reference data management (countries, states, age classes, venues)

Base Path: /api/masterdata

#### Key Endpoints:

- GET /api/masterdata/countries - Get all countries
- GET /api/masterdata/countries/active - Get active countries
- GET /api/masterdata/countries/{id} - Get country by ID
- POST /api/masterdata/countries - Create country
- PUT /api/masterdata/countries/{id} - Update country
- DELETE /api/masterdata/countries/{id} - Delete country

### Horse Registry Context

Horse registration, ownership, and pedigree management

Base Path: /api/horses

#### Key Endpoints:

- GET /api/horses - Get all horses
- GET /api/horses/active - Get active horses
- GET /api/horses/{id} - Get horse by ID
- GET /api/horses/search - Search horses by name
- POST /api/horses - Create horse
- PUT /api/horses/{id} - Update horse
- DELETE /api/horses/{id} - Delete horse

### Event Management Context

Event creation, management, and participant registration

Base Path: /api/events

#### Key Endpoints:

- GET /api/events - Get all events
- GET /api/events/stats - Get event statistics
- POST /api/events - Create event
- GET /api/events/{id} - Get event by ID
- PUT /api/events/{id} - Update event
- DELETE /api/events/{id} - Delete event
- GET /api/events/search - Search events

## Documentation Resources

### Swagger UI

Interactive documentation for exploring and testing the API endpoints.

Open Swagger UI

### OpenAPI Specification

Raw OpenAPI 3.0.3 specification in YAML format for code generation or import into other tools.

View OpenAPI Spec

### Postman Collection

Comprehensive API collection covering all endpoints with pre-configured request examples.

Download Collection

### Health Monitoring

Real-time health status and monitoring information for all downstream services.

View Health Status

## System Monitoring & Health

### Health Check Endpoints

The API Gateway provides comprehensive health monitoring for all downstream services:

#### Monitoring Endpoints:

- GET /actuator/health - Comprehensive health status of all services
- GET /actuator/metrics - System metrics and performance data
- GET /actuator/info - Application information and build details
- GET /actuator/prometheus - Prometheus-compatible metrics export

Health Indicator Features:

- Monitors critical services: Members, Horses, Events, Masterdata, Auth
- Optional service monitoring: Ping service
- Circuit breaker status integration
- Service discovery status from Consul
- Detailed error reporting and status codes

## Getting Started

### Authentication

The API uses JWT (JSON Web Token) based authentication:

1. Register a new user via `POST /auth/register`
2. Login with credentials via `POST /auth/login`
3. Extract the JWT token from the login response
4. Include the token in the `Authorization` header: `Bearer <token>`

### Response Format

All API responses follow a consistent format using the `BaseDto` wrapper:

    {
      "success": true,
      "data": {
        "example": "Actual response data goes here"
      },
      "message": "Operation completed successfully",
      "timestamp": "2024-01-15T10:30:00Z"
    }