Type a singular resource such as “car” or “order item” and get a complete OpenAPI document (formerly called Swagger) for its list, get, create, update and delete endpoints, as YAML or JSON. The spec is rebuilt as you edit. Paths, schema names, path parameters and operationIds are derived from the name, and every one can be overridden under Names.
The generator suits developers who want a consistent starting point for a new REST API before writing code. Choose OpenAPI 3.1.0 or 3.0.3, edit the fields, pick offset or cursor pagination, PUT, PATCH or both, and optional bearer JWT security. Copy the result or download it as order-items.yaml or .json. Copy link stores the settings, never any data, in the address after #c=. Everything runs in your browser; nothing is uploaded.
Example
Resource order item with the default fields (id, name, createdAt, updatedAt) lists these endpoints:
GET /v1/order-items
POST /v1/order-items
GET /v1/order-items/{orderItemId}
PUT /v1/order-items/{orderItemId}
DELETE /v1/order-items/{orderItemId}
The spec starts like this:
openapi: "3.1.0"
info:
title: Order Items API
version: "1.0.0"
description: "API for order items: list, create, get, replace and delete."
servers:
- url: /v1
The list response is the OrderItemList schema with items and total:
total:
type: integer
description: Number of order items that match, across all pages.
minimum: 0
examples:
- 1
“Café” becomes /cafes and Cafe; a word the plural rules do not know only gets an -s, so fix it in the Plural box.
Limitations
- One resource per spec: no relations, and fields cannot be objects or arrays.
- No field constraints (length, range, pattern) or descriptions.
- Filters are equality only, one per filterable field.
- Error responses are fixed, and the only security scheme is bearer JWT.
- One server URL; no code generation, no rendered documentation and no import of an existing spec.
- Invalid settings keep the previous spec, greyed out, with the error under the field.
FAQ
What is the difference between OpenAPI 3.0 and 3.1?
Version 3.1 is a JSON Schema dialect. A nullable string is type: [string, "null"] instead of nullable: true, and examples (a list) replaces example. Use 3.0.3 if a tool in your chain does not read 3.1 yet.
Should I use offset or cursor pagination?
Offset takes offset and limit and returns items and total; it is simple and allows jumping to a page, but rows can shift between requests. Cursor takes cursor and returns items and nextCursor, which is null on the last page; it stays stable on changing data but gives no total.
Why are errors application/problem+json?
RFC 9457 defines that media type and the members type, title, status, detail and instance, so clients can parse every error the same way. Turn the option off to get plain descriptions.
Should updates use PUT or PATCH?
PUT replaces the resource: send every field, and optional ones you leave out are cleared. PATCH is generated as a JSON Merge Patch (RFC 7396, application/merge-patch+json): all fields are optional and null removes an optional field. Choose Both to offer the two; the PUT operation is then named replace….
What do ETag and If-Match do here?
GET, POST, PUT and PATCH responses carry an ETag naming the current version. PUT, PATCH and DELETE require it back in If-Match. A missing header gets 428 (RFC 6585); an outdated one gets 412 (RFC 9110).