openapi: 3.1.0 info: title: fete API description: Privacy-focused event announcements and RSVPs version: 0.1.0 license: name: GPL-3.0-or-later identifier: GPL-3.0-or-later servers: - url: /api paths: /events: post: operationId: createEvent summary: Create a new event tags: - events requestBody: required: true content: application/json: schema: $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: CreateEventRequest: type: object required: - title - dateTime - expiryDate properties: 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