Add OpenAPI spec for POST /events endpoint

Define CreateEventRequest, CreateEventResponse, ProblemDetail, and
ValidationProblemDetail schemas. RFC 9457 problem details for errors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-05 10:56:17 +01:00
parent 387445e089
commit eeadaf58c7

View File

@@ -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
responses:
"200":
description: Service is healthy
- events
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/HealthResponse"
$ref: "#/components/schemas/CreateEventRequest"
responses:
"201":
description: Event created successfully
content:
application/json:
schema:
$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
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
example: UP