api-design
Проектирование HTTP API — REST-конвенции (ресурсы, методы, статус-коды), пагинация (cursor vs offset), версионирование, идемпотентность (Idempotency-Key)…
Skill by Vitammiin
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/vitammiin-api-design
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design, backend, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/api-design
What's inside
- Skill name
api-design- Description
- Проектирование HTTP API — REST-конвенции (ресурсы, методы, статус-коды), пагинация (cursor vs offset), версионирование, идемпотентность (Idempotency-Key), формат ошибок RFC 7807 (problem+json), безопасность и rate limiting. Use при проектировании, ревью или версионировании API и эндпоинтов, выборе кодов ошибок, пагинации, лимитов или формата ответа.
- License
- MIT
- Instructions
- 76 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Навык: API Design
## REST-конвенции
Ресурсы — существительные во множественном числе; действие выражает HTTP-метод, не URL (`POST /orders`, а не `POST /createOrder`). Вложенность — максимум один уровень (`/users/{id}/orders`), глубже — фильтром (`/orders?userId=`). Действие вне CRUD — суб-ресурсом: `POST /orders/{id}/cancel`.
| Метод | Семантика | Идемпотентен | Успех | Типичные ошибки |
|---|---|---|---|---|
| GET | чтение | ✅ | 200 | 404 |
| POST | создание / действие | ❌ | 201 (+ `Location`) или 200 | 400, 409, 422 |
| PUT | полная замена | ✅ | 200 | 404, 409 |
| PATCH | частичное обновление | ❌ | 200 | 404, 409, 422 |
| DELETE | удаление | ✅ | 204 | 404 |
Статусы ошибок: 400 — синтаксически кривой запрос; 422 — валидный JSON, не прошедший бизнес-валидацию; 401 — не аутентифицирован; 403 — аутентифицирован, но нельзя; 409 — конфликт состояния (дубликат, устаревшая версия); 429 — превышен лимит (+ `Retry-After`).
## Пагинация
| | Offset (`?page=3&limit=20`) | Cursor (`?cursor=xyz&limit=20`) |
|---|---|---|
| Простота | ✅ проще, произвольная страница | сложнее, только «дальше» |
| Стабильность при вставках/удалениях | ❌ дубли и пропуски между страницами | ✅ стабильна |
| Скорость на глубине | ❌ `OFFSET 100000` читает и выбрасывает | ✅ `WHERE (sort_key, id) < cursor` по индексу |
| Когда | админки, маленькие статичные списки | ленты, публичные API, большие/живые данные |
Cursor — непрозрачная строка (base64 от `(sort_key, id)`), клиент её не парсит. Ответ списка — конверт: `{ "data": […], "nextCursor": "…", "hasMore": true }`. Лимит — с дефолтом и максимумом (например 20/100).
## Версионирование
- Ломающее (удаление/переименование поля, смена типа или семантики) — только в новой версии. Добавление опциональных полей — не ломающее, версии не требует.
- Дефолт — версия в пути: `/v1/…` (явно, кэшируемо, просто в роутинге). Альтернатива — заголовок (`Accept: …;version=2`) для чистых URL.
- Клиент — tolerant reader: неизвестные поля ответа игнорирует, тогда добавления безопасны.
- Старую версию не бросай молча: `Deprecation`/`Sunset`-заголовки, срок жизни, заметки по миграции.
## Идемпотентность
- GET/PUT/DELETE идемпотентны по контракту — клиент может безопасно ретраить.
- POST с побочным эффектом (платёж, заказ) — **Idempotency-Key**: клиент шлёт уникальный ключ заголовком; сервер хранит `key → результат` (Redis/БД, TTL ~24ч) и на повтор возвращает сохранённый ответ, не выполняя операцию дважды. Обязателен для денежных операций и любых ретраящихся вызовов (вебхуки, очереди).
- Потребители очередей — идемпотентны всегда: at-least-once означает, что дубли будут.
## Ошибки: RFC 7807 (application/problem+json)
Единый формат всех ошибок API:
```json
{
"type": "https://api.example.com/errors/insufficient-funds",
"title": "Insufficient funds",
"status": 422,
"detail": "Balance 5.00 is less than order total 20.00",
"instance": "/orders/req-7f3a",
"code": "INSUFFICIENT_FUNDS",
"errors": [{ "field": "amount", "message": "…" }]
}
```
- `code` — стабильный машинный код: по нему ветвится клиент; человекочитаемый текст может меняться и локализоваться.
- Валидационные ошибки — списком по полям, все сразу, не по одной.
- Не течь внутренностями: stack trace, SQL, имена таблиц — только в логи; наружу — generic 500 + `instance`/requestId для соотнесения с логами.
## Пример хорошего эндпоинта
```
POST /v1/orders
Authorization: Bearer <token>
Idempotency-Key: 3f2a-…
{ "items": [{ "productId": "p_1", "qty": 2 }] }
201 Created
Location: /v1/orders/ord_9x1
{ "id": "ord_9x1", "status": "pending", "total": { "amount": 4200, "currency": "EUR" }, "createdAt": "2026-08-06T10:00:00Z" }
```
Деньги — минорными единицами + валюта (не float); даты — ISO 8601 в UTC; id — префиксованные строки. Ошибка того же эндпоинта — problem+json с 422 и машинным `code`.
## Безопасность (минимум)
Аутентификация на каждом эндпоинте (Bearer/JWT), авторизация — на уровне ресурса (чужой `orderId` → 403/404), rate limiting per-user/per-key с 429, вход валидируется схемой (zod) до бизнес-логики.
## Углублённо
- REST vs GraphQL vs gRPC: GraphQL — клиенты с разными потребностями в данных; gRPC — внутренняя сервис-сервис связь с жёсткими контрактами; дефолт публичного API — REST.
- Контракты и OpenAPI-покрытие → навык **swagger-coverage**.
- Коды и обработка ошибок → навык **error-handling**.
- Локализация ответов (i18n) → навык **i18n**: контракт ошибок — стабильный машинный `code` + параметры (не готовый переведённый текст), выбор языка по `Accept-Language`/локали пользователя.From Vitammiin/agent-vorcl-flow, MIT.
More from Vitammiin/agent-vorcl-flow
- 0.598score
architect
Vitammiin
Архитектор систем и технических решений.
SkillAFreshness: A★ 2Claude Code +9 - 0.595score
analyzer
Vitammiin
Широкий read-only аудит багов, типов, структуры БД и качества backend/frontend.
SkillAFreshness: A★ 2Claude Code +9 - 0.593score
architect-analyze
Vitammiin
Анализ требований и контекста задачи (architect).
SkillAFreshness: A★ 2Claude Code +9 - 0.593score
analyzer-bugs
Vitammiin
Поиск багов — необработанные ошибки, race conditions, edge cases.
SkillAFreshness: A★ 2Claude Code +9 - 0.593score
analyzer-db
Vitammiin
Аудит структуры БД — схема, индексы, FK, N+1, миграции.
SkillAFreshness: A★ 2Claude Code +9 - 0.593score
archmap-annotate
Vitammiin
LLM-обогащение готового architecture.json — память агентов, семантические dataflow-связи, назначение модулей; всё бездоказательное merge сам пометит inferred…
SkillAFreshness: A★ 2Claude Code +9 - 0.593score
archmap-diagram
Vitammiin
Диаграммы draw.io и/или Mermaid из architecture.json — многостраничный mxfile (Overview/ERD/API/Agents) и .mmd (flowchart/erDiagram) строго из извлечённых…
SkillAFreshness: A★ 2Claude Code +9 - 0.593score
archmap-extract
Vitammiin
Только фаза Extraction — детерминированные скрипты обходят репо и пишут architecture.json с source:{file,line} у каждого узла, без рендеров (archmap).
SkillAFreshness: A★ 2Claude Code +9 - 0.593score
analyzer-backend
Vitammiin
Поиск «плохого» кода на бэкенде — нарушения архитектуры, логика в контроллерах.
SkillAFreshness: A★ 2Claude Code +9 - 0.593score
analyzer-types
Vitammiin
Проверка типов — tsc, any, небезопасные касты, рассинхрон zod↔типы.
SkillAFreshness: A★ 2Claude Code +9 - 0.593score
architect-design
Vitammiin
Проектирование архитектуры решения (architect).
SkillAFreshness: A★ 2Claude Code +9 - 0.593score
architect-review
Vitammiin
Ревью существующей архитектуры (architect).
SkillAFreshness: A★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 16, 2026 (12 days ago)
- Last release
- Aug 25, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/Vitammiin/agent-vorcl-flow
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Vitammiin
- 0.598score
architect
Vitammiin
Архитектор систем и технических решений.
SkillAFreshness: A★ 2Claude Code +9 - 0.595score
analyzer
Vitammiin
Широкий read-only аудит багов, типов, структуры БД и качества backend/frontend.
SkillAFreshness: A★ 2Claude Code +9 - 0.593score
analyzer-types
Vitammiin
Проверка типов — tsc, any, небезопасные касты, рассинхрон zod↔типы.
SkillAFreshness: A★ 2Claude Code +9 - 0.593score
analyzer-db
Vitammiin
Аудит структуры БД — схема, индексы, FK, N+1, миграции.
SkillAFreshness: A★ 2Claude Code +9 - 0.593score
analyzer-backend
Vitammiin
Поиск «плохого» кода на бэкенде — нарушения архитектуры, логика в контроллерах.
SkillAFreshness: A★ 2Claude Code +9 - 0.593score
analyzer-bugs
Vitammiin
Поиск багов — необработанные ошибки, race conditions, edge cases.
SkillAFreshness: A★ 2Claude Code +9
Cite this page
api-design skill. Agent Mart. https://agentmart.dev/skills/vitammiin-api-design (last updated 2026-10-24)