Ontwerp een OpenAPI-specificatie voor API Gedistribueerde Transacties en Consistentiebeheer
description
Met deze prompt kun je een OpenAPI-specificatie ontwerpen die complexe gedistribueerde transacties en consistente data-uitwisseling ondersteunt. Dit voorkomt integratiefouten, verbetert betrouwbaarheid en maakt je API robuuster dan standaard specificaties. Het is uniek doordat het zich richt op transactionele consistentie, iets wat vaak ontbreekt in API-documentatie.
prompt
Help me een OpenAPI-specificatie te maken die het beheer van gedistribueerde transacties en consistentie in mijn API documenteert.
API Naam: <voer de naam van mijn API in>
Type Transacties (bijv. two-phase commit, saga pattern): <beschrijf het transactiebeheer>
Consistentieregels (bijv. eventual consistency, stron ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
openapi: 3.1.0
info:
title: ShopAPI
versie: 1.0.0
beschrijving: >
API voor het beheer van bestellingen met ondersteuning voor gedistribueerde transacties
(two-phase commit) en sterke consistentie. Gebruik API-sleutel in de header voor authenticatie.
servers:
- url: https://api.shopvoorbeeld.nl
beschrijving: Productieomgeving
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Sleutel
schemas:
Order:
type: object
properties:
id:
type: string
description: Unieke identifier voor de bestelling
item:
type: string
hoeveelheid:
type: integer
status:
type: string
description: Status van de bestelling
required:
- id
- item
- hoeveelheid
- status
CreateOrderRequest:
type: object
properties:
item:
type: string
hoeveelheid:
type: integer
required:
- item
- hoeveelheid
OrderResponse:
allOf:
- $ref: '#/components/schemas/Order'
- description: >
Bevat de volledige bestelling gegevens inclusief ID en status.
security:
- ApiKeyAuth: []
tags:
- naam: Bestellingen
beschrijving: Beheer van bestellingen met gedistribueerde transacties en consistentie
x-transactie:
type: two-phase commit
beschrijving: >
Deze API ondersteunt two-phase commit voor gedistribueerde transacties, waardoor
de consistentie over meerdere systemen gegarandeerd wordt tijdens ordercreatie en -updates.
consistentie:
type: strong consistency
beschrijving: >
De API garandeert sterke consistentie, waardoor elke read altijd de meest recente
write reflecteert. Dit wordt bereikt door synchronisatie tijdens transacties.
paths:
/orders:
post:
summary: Creëer een nieuwe bestelling
tags:
- Bestellingen
security:
- ApiKeyAuth: []
requestBody:
description: Details van de nieuwe bestelling
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOrderRequest'
responses:
'201':
description: Order succesvol aangemaakt
content:
application/json:
schema:
$ref: '#/components/schemas/OrderResponse'
'400':
description: Ongeldige aanvraag
'401':
description: Niet geautoriseerd
x-transactie:
initiatie: >
Transactie wordt gestart met two-phase commit protocol.
fase1: Prepare
fase2: Commit of Rollback
/orders/{id}:
get:
summary: Haal details van een bestelling op
tags:
- Bestellingen
security:
- ApiKeyAuth: []
parameters:
- in: path
name: id
schema:
type: string
required: true
description: ID van de bestelling
responses:
'200':
description: Details van de bestelling
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
'404':
description: Bestelling niet gevonden
'401':
description: Niet geautoriseerd
# Opmerking:
# - De specificatie benadrukt dat transacties via two-phase commit worden beheerd.
# - De API garandeert sterke consistentie voor alle lees- en schrijfoperaties.
# - Authenticatie gebeurt via een API-sleutel in de header.
# - Deze specificatie kan verder uitgebreid worden met meer endpoints en details indien nodig.
provider: deepseek
model: deepseek-chat
Zeker, hier is een OpenAPI-specificatie in YAML voor je ShopAPI die two-phase commit transacties en strong consistency documenteert:
```yaml
openapi: 3.0.0
info:
title: ShopAPI
description: |
API voor het beheren van winkelbestellingen met gedistribueerde transacties.
**Transactiebeheer:**
- Two-Phase Commit protocol voor gedistribueerde transacties
- Sterke consistentie (strong consistency) gegarandeerd voor alle operaties
**Authenticatie:**
API-sleutel vereist in de X-API-Key header
version: 1.0.0
contact:
name: API Support
email: support@shopapi.com
servers:
- url: https://api.shop.com/v1
description: Productieserver
paths:
/orders:
post:
summary: Maak een nieuwe bestelling aan
description: |
Creëert een nieuwe bestelling met two-phase commit transactiebeheer.
**Transactiestroom:**
1. Prepare fase - Valideer en reserveer resources
2. Commit fase - Bevestig en persisteer de transactie
**Consistentie:**
Sterke consistentie gegarandeerd - alle wijzigingen zijn direct zichtbaar
operationId: createOrder
security:
- apiKey: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OrderRequest'
responses:
'201':
description: |
Bestelling succesvol aangemaakt met two-phase commit.
Transactie is atomisch uitgevoerd met sterke consistentie.
content:
application/json:
schema:
$ref: '#/components/schemas/OrderResponse'
'400':
description: Ongeldig verzoek of transactie validatie mislukt
'401':
description: Ongeldige of ontbrekende API-sleutel
'409':
description: |
Transactie conflict - two-phase commit prepare fase mislukt
vanwege inconsistentie in gedistribueerde systemen
'500':
description: |
Transactie mislukt - two-phase commit kon niet worden voltooid
vanwege systeemfouten
/orders/{id}:
get:
summary: Haal bestellingdetails op
description: |
Haalt gedetailleerde informatie over een specifieke bestelling op.
**Consistentie:**
Sterke consistentie gegarandeerd - retourneert altijd de meest recente staat
operationId: getOrder
security:
- apiKey: []
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
description: Unieke identifier van de bestelling
responses:
'200':
description: |
Bestellingdetails succesvol opgehaald.
Sterke consistentie gegarandeerd - data is direct consistent.
content:
application/json:
schema:
$ref: '#/components/schemas/OrderResponse'
'401':
description: Ongeldige of ontbrekende API-sleutel
'404':
description: Bestelling niet gevonden
components:
schemas:
OrderRequest:
type: object
required:
- customerId
- items
properties:
customerId:
type: string
format: uuid
description: Unieke identifier van de klant
items:
type: array
items:
$ref: '#/components/schemas/OrderItem'
shippingAddress:
$ref: '#/components/schemas/Address'
OrderResponse:
type: object
properties:
id:
type: string
format: uuid
description: Unieke identifier van de bestelling
customerId:
type: string
format: uuid
status:
type: string
enum: [pending, confirmed, shipped, delivered, cancelled]
description: |
Status van de bestelling met sterke consistentie -
wijzigingen zijn direct zichtbaar in alle systemen
items:
type: array
items:
$ref: '#/components/schemas/OrderItem'
totalAmount:
type: number
format: float
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
OrderItem:
type: object
required:
- productId
- quantity
properties:
productId:
type: string
format: uuid
quantity:
type: integer
minimum: 1
price:
type: number
format: float
Address:
type: object
properties:
street:
type: string
city:
type: string
postalCode:
type: string
country:
type: string
securitySchemes:
apiKey:
type: apiKey
name: X-API-Key
in: header
description: API-sleutel voor authenticatie
responses:
TransactionError:
description: |
Two-phase commit transactie mislukt.
Sterke consistentie kon niet worden gegarandeerd.
content:
application/json:
schema:
type: object
properties:
error:
type: string
transactionId:
type: string
phase:
type: string
enum: [prepare, commit]
details:
type: string
tags:
- name: Orders
description: |
Endpoints voor bestellingbeheer met two-phase commit transacties
en sterke consistentie garanties
```
Deze specificatie documenteert duidelijk:
- **Two-phase commit** transactiebeheer in de beschrijvingen en response codes
- **Sterke consistentie** garanties bij alle endpoints
- **API-sleutel authenticatie** via header
- Gedetailleerde foutafhandeling voor transactiegerelateerde scenario's
- Duidelijke schemas voor request/response structuren