slogan3

Ontwerp een OpenAPI Specificatie voor API Event-Driven Architectuur

description

Met deze prompt ontwerp je een OpenAPI specificatie die event-driven API's ondersteunt, waardoor je integraties eenvoudiger, duidelijker en betrouwbaarder worden. Dit lost het probleem op van onvoldoende documentatie voor event-based communicatie en biedt een gestructureerd format voor ontwikkelaars.

prompt

Help me een OpenAPI specificatie te maken die een event-driven API beschrijft, inclusief eventtypen, payloadstructuren en abonnementsmechanismen. API Naam: <voer de naam van mijn API in> Type Events (bijv. create, update, delete): <beschrijf de soorten events> Payload Structuur voor elk even ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
openapi: 3.1.0 info: title: Klantbeheer API description: > Deze API ondersteunt een event-driven architectuur voor klantbeheer, inclusief eventtypes, payloadstructuren en abonnementsmechanismen. version: 1.0.0 servers: - url: https://api.klantbeheer.example.com description: API server components: securitySchemes: ApiKeyAuth: type: apiKey in: header name: X-API-Key schemas: CreateEventPayload: type: object properties: id: type: string description: Unieke identificatie van de klant naam: type: string description: Naam van de klant required: - id - naam UpdateEventPayload: type: object properties: id: type: string description: Unieke identificatie van de klant wijzigingen: type: object description: Object met de gewijzigde velden required: - id - wijzigingen paths: /events/create: post: summary: Abonneer op create events description: > Abonneer een webhook voor het ontvangen van 'create' klant events. security: - ApiKeyAuth: [] requestBody: required: true content: application/json: schema: type: object properties: callbackUrl: type: string description: De URL waar de events naartoe worden gestuurd required: - callbackUrl responses: '200': description: Abonnement succesvol aangemaakt /events/update: post: summary: Abonneer op update events description: > Abonneer een webhook voor het ontvangen van 'update' klant events. security: - ApiKeyAuth: [] requestBody: required: true content: application/json: schema: type: object properties: callbackUrl: type: string description: De URL waar de events naartoe worden gestuurd required: - callbackUrl responses: '200': description: Abonnement succesvol aangemaakt /events/delete: post: summary: Abonneer op delete events description: > Abonneer een webhook voor het ontvangen van 'delete' klant events. security: - ApiKeyAuth: [] requestBody: required: true content: application/json: schema: type: object properties: callbackUrl: type: string description: De URL waar de events naartoe worden gestuurd required: - callbackUrl responses: '200': description: Abonnement succesvol aangemaakt components: schemas: CreateEvent: type: object properties: eventType: type: string enum: [create] example: create payload: $ref: '#/components/schemas/CreateEventPayload' UpdateEvent: type: object properties: eventType: type: string enum: [update] example: update payload: $ref: '#/components/schemas/UpdateEventPayload' DeleteEvent: type: object properties: eventType: type: string enum: [delete] example: delete payload: type: object properties: id: type: string description: Unieke identificatie van de verwijderde klant # Geen payload voor delete of optioneel kunnen andere velden worden toegevoegd # Samenvatting: # - Abonnementen worden ingesteld via POST endpoints (/events/create, /events/update, /events/delete) # - Elke endpoint vereist een callbackUrl in de request body # - Authenticatie via API Key in header (X-API-Key) # - Events bevatten een eventType en payloadstructuur passend bij het eventtype
provider: deepseek
model: deepseek-chat
```yaml openapi: 3.0.3 info: title: Klantbeheer API description: Event-driven API voor klantbeheer met webhook abonnementen version: 1.0.0 contact: name: API Support email: support@voorbeeld.nl servers: - url: https://api.voorbeeld.nl/v1 description: Productie server paths: /webhooks: post: summary: Registreer een nieuwe webhook description: Registreer een webhook endpoint om events te ontvangen operationId: registerWebhook tags: - Webhooks requestBody: required: true content: application/json: schema: type: object required: - url - eventTypes properties: url: type: string format: uri description: URL waar events naartoe worden gestuurd example: "https://mijnapp.nl/webhooks/klant" eventTypes: type: array items: type: string enum: - klant.created - klant.updated - klant.deleted description: Lijst van event types waarop geabonneerd wordt secret: type: string description: Optioneel geheim voor signature verificatie responses: '201': description: Webhook succesvol geregistreerd content: application/json: schema: type: object properties: id: type: string description: Unieke identifier van de webhook url: type: string eventTypes: type: array items: type: string status: type: string enum: [active, inactive] default: active '400': description: Ongeldige request '401': description: Niet geautoriseerd get: summary: Lijst alle geregistreerde webhooks op operationId: listWebhooks tags: - Webhooks responses: '200': description: Lijst van webhooks content: application/json: schema: type: array items: $ref: '#/components/schemas/Webhook' /webhooks/{webhookId}: delete: summary: Verwijder een webhook operationId: deleteWebhook tags: - Webhooks parameters: - name: webhookId in: path required: true schema: type: string responses: '204': description: Webhook succesvol verwijderd '404': description: Webhook niet gevonden components: schemas: Event: type: object required: - id - type - timestamp - data properties: id: type: string description: Unieke identifier van het event type: type: string enum: - klant.created - klant.updated - klant.deleted description: Type van het event timestamp: type: string format: date-time description: Tijdstip waarop het event plaatsvond data: oneOf: - $ref: '#/components/schemas/KlantCreatedEvent' - $ref: '#/components/schemas/KlantUpdatedEvent' - $ref: '#/components/schemas/KlantDeletedEvent' KlantCreatedEvent: type: object required: - id - naam properties: id: type: string description: Unieke identifier van de klant naam: type: string description: Naam van de klant example: "Jan Jansen" KlantUpdatedEvent: type: object required: - id - wijzigingen properties: id: type: string description: Unieke identifier van de klant wijzigingen: type: object description: Object met gewijzigde velden en hun nieuwe waarden additionalProperties: true example: naam: "Jan Janssen" email: "jan.janssen@voorbeeld.nl" KlantDeletedEvent: type: object required: - id properties: id: type: string description: Unieke identifier van de verwijderde klant Webhook: type: object required: - id - url - eventTypes - status properties: id: type: string url: type: string eventTypes: type: array items: type: string status: type: string enum: [active, inactive] createdAt: type: string format: date-time updatedAt: type: string format: date-time securitySchemes: ApiKeyAuth: type: apiKey in: header name: X-API-Key description: API Key voor authenticatie security: - ApiKeyAuth: [] webhooks: klantEvent: post: summary: Webhook voor klant events description: Wordt aangeroepen wanneer een klant event plaatsvindt requestBody: content: application/json: schema: $ref: '#/components/schemas/Event' responses: '200': description: Event succesvol ontvangen '202': description: Event geaccepteerd voor verwerking '400': description: Ongeldig event ``` Deze OpenAPI specificatie beschrijft een complete event-driven API voor klantbeheer met: **Belangrijke kenmerken:** - **Event types**: `klant.created`, `klant.updated`, `klant.deleted` - **Payload structuren**: - Create: `{ id: string, naam: string }` - Update: `{ id: string, wijzigingen: object }` - Delete: `{ id: string }` - **Abonnementsmechanisme**: Webhook registratie via `/webhooks` endpoint - **Authenticatie**: API Key in header (X-API-Key) - **Webhook beheer**: Volledige CRUD operaties voor webhook registraties De specificatie volgt best practices voor event-driven APIs en bevat duidelijke schema's voor alle event types en webhook management.