API Specification Template
Template ini digunakan untuk mendokumentasikan API endpoints secara detail dan konsisten.📋 API Overview
Base URL:https://api.example.com/v1Authentication: Bearer Token (JWT)
Content-Type:
application/jsonRate Limit: 1000 requests/hour per user
🔐 Authentication
Get Access Token
Using Token
📚 Endpoints
1. List Resources
Endpoint:GET /api/v1/resourcesDescription: Retrieve a paginated list of resources
Authentication: Required
Rate Limit: 100 requests/minute
Request
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
page | integer | No | 1 | Page number (min: 1) |
limit | integer | No | 20 | Items per page (min: 1, max: 100) |
status | string | No | - | Filter by status: active, inactive, archived |
search | string | No | - | Search by name or description |
sort | string | No | -createdAt | Sort field. Prefix with - for descending |
startDate | string | No | - | Filter by start date (ISO 8601) |
endDate | string | No | - | Filter by end date (ISO 8601) |
Response
Response Codes
| Code | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request - Invalid parameters |
| 401 | Unauthorized - Invalid or missing token |
| 403 | Forbidden - Insufficient permissions |
| 429 | Too Many Requests - Rate limit exceeded |
| 500 | Internal Server Error |
2. Get Resource by ID
Endpoint:GET /api/v1/resources/:idDescription: Retrieve a single resource by ID
Authentication: Required
Request
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string (UUID) | Yes | Resource ID |
Response
3. Create Resource
Endpoint:POST /api/v1/resourcesDescription: Create a new resource
Authentication: Required
Idempotency: Supported via
Idempotency-Key header
Request
Request Headers
| Header | Required | Description |
|---|---|---|
Authorization | Yes | Bearer token |
Idempotency-Key | No | Unique key for idempotent requests (max 255 chars) |
Content-Type | Yes | Must be application/json |
Request Body
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
name | string | Yes | 1-255 chars | Resource name |
description | string | No | max 1000 chars | Resource description |
status | string | No | enum: active, inactive | Default: active |
tags | array[string] | No | max 10 items | Resource tags |
metadata | object | No | max 10 keys | Custom metadata |
Response
4. Update Resource
Endpoint:PUT /api/v1/resources/:idDescription: Update an existing resource (full update)
Authentication: Required
5. Partial Update Resource
Endpoint:PATCH /api/v1/resources/:idDescription: Partially update a resource
Authentication: Required
6. Delete Resource
Endpoint:DELETE /api/v1/resources/:idDescription: Delete a resource (soft delete)
Authentication: Required
📊 Error Codes Reference
| Code | HTTP Status | Description |
|---|---|---|
VALIDATION_ERROR | 400 | Request validation failed |
UNAUTHORIZED | 401 | Invalid or missing authentication |
FORBIDDEN | 403 | Insufficient permissions |
RESOURCE_NOT_FOUND | 404 | Resource not found |
DUPLICATE_RESOURCE | 409 | Resource already exists |
RATE_LIMIT_EXCEEDED | 429 | Too many requests |
INTERNAL_ERROR | 500 | Internal server error |
🔄 Webhooks
Webhook Events
Event Types
resource.created- Resource createdresource.updated- Resource updatedresource.deleted- Resource deletedresource.status_changed- Status changed
📚 SDK Examples
- Go
- Flutter/Dart
Template Usage: Copy section yang relevan untuk dokumentasi API Anda. Sesuaikan endpoint, parameter, dan response sesuai kebutuhan.