diff --git a/backend/src/main/resources/openapi/api.yaml b/backend/src/main/resources/openapi/api.yaml index 5841564..b30a5a5 100644 --- a/backend/src/main/resources/openapi/api.yaml +++ b/backend/src/main/resources/openapi/api.yaml @@ -11,27 +11,120 @@ servers: - url: /api paths: - /health: - get: - operationId: getHealth - summary: Health check + /events: + post: + operationId: createEvent + summary: Create a new event tags: - - health + - events + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/CreateEventRequest" responses: - "200": - description: Service is healthy + "201": + description: Event created successfully content: application/json: schema: - $ref: "#/components/schemas/HealthResponse" + $ref: "#/components/schemas/CreateEventResponse" + "400": + description: Validation failed + content: + application/problem+json: + schema: + $ref: "#/components/schemas/ValidationProblemDetail" components: schemas: - HealthResponse: + CreateEventRequest: type: object required: - - status + - title + - dateTime + - expiryDate properties: - status: + title: type: string - example: UP + minLength: 1 + maxLength: 200 + description: + type: string + maxLength: 2000 + dateTime: + type: string + format: date-time + description: Event date and time with UTC offset (ISO 8601) + example: "2026-03-15T20:00:00+01:00" + location: + type: string + maxLength: 500 + expiryDate: + type: string + format: date + description: Date after which event data is deleted. Must be in the future. + example: "2026-06-15" + + CreateEventResponse: + type: object + required: + - eventToken + - organizerToken + - title + - dateTime + - expiryDate + properties: + eventToken: + type: string + format: uuid + description: Public token for the event URL + organizerToken: + type: string + format: uuid + description: Secret token for organizer access + title: + type: string + dateTime: + type: string + format: date-time + expiryDate: + type: string + format: date + + ProblemDetail: + type: object + properties: + type: + type: string + format: uri + default: "about:blank" + title: + type: string + status: + type: integer + detail: + type: string + instance: + type: string + format: uri + additionalProperties: true + + ValidationProblemDetail: + allOf: + - $ref: "#/components/schemas/ProblemDetail" + - type: object + properties: + fieldErrors: + type: array + items: + type: object + required: + - field + - message + properties: + field: + type: string + message: + type: string