API reference
A read-only JSON API over the directory. No authentication. All responses are JSON, immutable per deploy, and cached at the edge with a long s-maxage and an ETag keyed on the data version — send If-None-Match to get a 304.
Base & conventions
- Base URL:
https://commerce-bots.com - Versioning: path-versioned under
/api/v1. - Collections return a
{ total, data, _meta }envelope; single items return the object directly. - Errors are JSON with a stable
errorcode and an HTTP status.
Endpoints
| GET | /api/v1/servers | List integrations. Supports the query parameters below. |
| GET | /api/v1/servers/{id} | A single integration entry, or 404 with an error body. |
| GET | /api/v1/compatible?with={id} | Compatibility records referencing an integration, joined with the other one. |
Query parameters — GET /api/v1/servers
| Param | Type | Description |
|---|---|---|
| platform | string | Filter by platform id (e.g. shopify, auctane, stripe). |
| category | enum | storefront | payments | shipping | search | crm | … |
| auth | enum | Auth model: none | apikey | oauth2 | both. |
| type | enum | Vendor type: official | community | fork. |
| q | string | Free-text match over name, id, summary, and tags. |
| sort | string | name (default) | updated. |
| limit | int | Page size (default all). |
| offset | int | Items to skip (pagination). |
Filters combine with AND. Unknown parameters are ignored.
Collection envelope
200 OK
// GET /api/v1/servers
{
"total": 8,
"data": [ /* ServerEntry[] — see /directory/{id} for the full shape */ ],
"_meta": {
"generatedAt": "2026-06-22T00:00:00.000Z",
"dataVersion": "bd3dee45200f",
"repoUrl": "https://github.com/Commerce-bots-com/commerce-bots-public"
}
}Error shape
404 Not Found
// GET /api/v1/servers/does-not-exist → 404
{ "error": "server-not-found", "id": "does-not-exist" }