Pinnate Docs

GitHubApp

Pinnate SDK

Version 0.1.10

Getting started

Install

npm install @pinnate-dev/js-sdk

Initialize the client

import { Client } from '@pinnate-dev/js-sdk';

const client = new Client({
  baseUrl: 'https://api.example.com',
  headers: { Authorization: `Bearer ${process.env.API_TOKEN}` },
});

APIs

get

/v1/apis

List APIs

const result = await client.pinnate.apis.list(/* … */);

Parameters

page: int

Query parameter page

limit: int

Query parameter limit

post

/v1/apis

Create an API

const result = await client.pinnate.apis.create(/* … */);

Parameters

body: ApiCreateRequest (required)

Request body (ApiCreateRequest)

get

/v1/apis/{api}

Get an API

const result = await client.pinnate.apis.get(/* … */);

Parameters

api: string (required)

Path parameter api

patch

/v1/apis/{api}

Update an API

const result = await client.pinnate.apis.update(/* … */);

Parameters

api: string (required)

Path parameter api

body: ApiUpdateRequest (required)

Request body (ApiUpdateRequest)

post

/v1/apis/{api}/spec

Upload an OpenAPI document

const result = await client.pinnate.apis.uploadSpec(/* … */);

Parameters

api: string (required)

Path parameter api

body: SpecUploadRequest (required)

Request body (SpecUploadRequest)

Schemas

get

/v1/schemas

List schemas

const result = await client.pinnate.schemas.list(/* … */);

Parameters

page: int

Query parameter page

limit: int

Query parameter limit

post

/v1/schemas

Create a schema

const result = await client.pinnate.schemas.create(/* … */);

Parameters

body: SchemaCreateRequest (required)

Request body (SchemaCreateRequest)

get

/v1/schemas/{schema}

Get a schema

const result = await client.pinnate.schemas.get(/* … */);

Parameters

schema: string (required)

Path parameter schema

post

/v1/schemas/{schema}/versions

Upload a JSON Schema document

const result = await client.pinnate.schemas.uploadSchemaVersion(/* … */);

Parameters

schema: string (required)

Path parameter schema

body: DocumentUploadRequest (required)

Request body (DocumentUploadRequest)

Rulesets

get

/v1/rulesets

List rulesets

const result = await client.pinnate.rulesets.list(/* … */);

Parameters

page: int

Query parameter page

limit: int

Query parameter limit

post

/v1/rulesets

Create a ruleset

const result = await client.pinnate.rulesets.create(/* … */);

Parameters

body: RulesetCreateRequest (required)

Request body (RulesetCreateRequest)

get

/v1/rulesets/{ruleset}

Get a ruleset

const result = await client.pinnate.rulesets.get(/* … */);

Parameters

ruleset: string (required)

Path parameter ruleset

patch

/v1/rulesets/{ruleset}

Update a ruleset

const result = await client.pinnate.rulesets.update(/* … */);

Parameters

ruleset: string (required)

Path parameter ruleset

body: RulesetUpdateRequest (required)

Request body (RulesetUpdateRequest)

post

/v1/rulesets/{ruleset}/versions

Upload a Spectral ruleset document

const result = await client.pinnate.rulesets.uploadRulesetVersion(/* … */);

Parameters

ruleset: string (required)

Path parameter ruleset

body: DocumentUploadRequest (required)

Request body (DocumentUploadRequest)

Sites

get

/v1/sites

List sites

const result = await client.pinnate.sites.list(/* … */);

Parameters

page: int

Query parameter page

limit: int

Query parameter limit

post

/v1/sites

Create a site

const result = await client.pinnate.sites.create(/* … */);

Parameters

body: SiteCreateRequest (required)

Request body (SiteCreateRequest)

SDKs

get

/v1/sdks

List SDKs

const result = await client.pinnate.sdks.list(/* … */);

Parameters

page: int

Query parameter page

limit: int

Query parameter limit

post

/v1/sdks

Create an SDK

const result = await client.pinnate.sdks.create(/* … */);

Parameters

body: SdkCreateRequest (required)

Request body (SdkCreateRequest)

Builds

post

/v1/sdks/{sdk}/builds

Queue an SDK build

const result = await client.pinnate.builds.create(/* … */);

Parameters

sdk: string (required)

Path parameter sdk

get

/v1/builds

List builds

const result = await client.pinnate.builds.list(/* … */);

Parameters

page: int

Query parameter page

limit: int

Query parameter limit

Models

Api

{
  "id": "01J8A7B2C3D4E5F6G7H8J9KMN1",
  "organization_id": "01J8A7B2C3D4E5F6G7H8J9KMNA",
  "name": "Payments API",
  "slug": "payments-api",
  "visibility": "public",
  "description": "Charge, refund, and reconcile card payments for connected accounts.",
  "logo_url": "https://cdn.example.com/logos/payments.svg",
  "ruleset_id": "01J8A7B2C3D4E5F6G7H8J9KMN3",
  "blocking_severity": "warn",
  "current_spec": {
    "id": "01J8A7B2C3D4E5F6G7H8J9KMN2",
    "api_id": "01J8A7B2C3D4E5F6G7H8J9KMN1",
    "version": "1.2.0",
    "title": "Payments API",
    "checksum": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
    "source": "upload",
    "parsed_summary": {
      "paths": 14,
      "operations": 28,
      "openapi": "3.1.0"
    },
    "is_current": true,
    "created_at": "2026-03-15T14:22:08Z",
    "updated_at": "2026-03-15T14:22:08Z"
  },
  "created_at": "2026-01-08T09:41:12Z",
  "updated_at": "2026-03-15T14:22:08Z"
}

ApiCreateRequest

{
  "name": "Payments API",
  "slug": "payments-api",
  "visibility": "public",
  "description": "Charge, refund, and reconcile card payments for connected accounts.",
  "ruleset_id": "01J8A7B2C3D4E5F6G7H8J9KMN3",
  "blocking_severity": "warn"
}

ApiList

{
  "data": [
    {
      "id": "01J8A7B2C3D4E5F6G7H8J9KMN1",
      "organization_id": "01J8A7B2C3D4E5F6G7H8J9KMNA",
      "name": "Payments API",
      "slug": "payments-api",
      "visibility": "public",
      "description": "Charge, refund, and reconcile card payments for connected accounts.",
      "logo_url": "https://cdn.example.com/logos/payments.svg",
      "ruleset_id": "01J8A7B2C3D4E5F6G7H8J9KMN3",
      "blocking_severity": "warn",
      "created_at": "2026-01-08T09:41:12Z",
      "updated_at": "2026-03-15T14:22:08Z"
    }
  ],
  "total": 1
}

ApiResource

{
  "data": {
    "id": "01J8A7B2C3D4E5F6G7H8J9KMN1",
    "organization_id": "01J8A7B2C3D4E5F6G7H8J9KMNA",
    "name": "Payments API",
    "slug": "payments-api",
    "visibility": "public",
    "description": "Charge, refund, and reconcile card payments for connected accounts.",
    "logo_url": "https://cdn.example.com/logos/payments.svg",
    "ruleset_id": "01J8A7B2C3D4E5F6G7H8J9KMN3",
    "blocking_severity": "warn",
    "current_spec": {
      "id": "01J8A7B2C3D4E5F6G7H8J9KMN2",
      "api_id": "01J8A7B2C3D4E5F6G7H8J9KMN1",
      "version": "1.2.0",
      "title": "Payments API",
      "checksum": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
      "source": "upload",
      "parsed_summary": {
        "paths": 14,
        "operations": 28,
        "openapi": "3.1.0"
      },
      "is_current": true,
      "created_at": "2026-03-15T14:22:08Z",
      "updated_at": "2026-03-15T14:22:08Z"
    },
    "created_at": "2026-01-08T09:41:12Z",
    "updated_at": "2026-03-15T14:22:08Z"
  }
}

ApiUpdateRequest

{
  "description": "Charge, refund, and reconcile card payments for connected accounts.",
  "visibility": "public",
  "blocking_severity": "warn"
}

Build

{
  "id": "01J8A7B2C3D4E5F6G7H8J9KMN9",
  "sdk_id": "01J8A7B2C3D4E5F6G7H8J9KMN8",
  "status": "published",
  "runtime": "node22",
  "image": "ghcr.io/pinnate/generator-typescript:1.4.2",
  "started_at": "2026-03-18T09:11:02Z",
  "finished_at": "2026-03-18T09:12:41Z",
  "created_at": "2026-03-18T09:10:55Z",
  "updated_at": "2026-03-18T09:12:41Z"
}

BuildList

{
  "data": [
    {
      "id": "01J8A7B2C3D4E5F6G7H8J9KMN9",
      "sdk_id": "01J8A7B2C3D4E5F6G7H8J9KMN8",
      "status": "published",
      "runtime": "node22",
      "image": "ghcr.io/pinnate/generator-typescript:1.4.2",
      "started_at": "2026-03-18T09:11:02Z",
      "finished_at": "2026-03-18T09:12:41Z",
      "created_at": "2026-03-18T09:10:55Z",
      "updated_at": "2026-03-18T09:12:41Z"
    }
  ],
  "total": 1
}

CreateBuildResponse

{
  "data": [
    {
      "id": "01J8A7B2C3D4E5F6G7H8J9KMN9",
      "sdk_id": "01J8A7B2C3D4E5F6G7H8J9KMN8",
      "status": "published",
      "runtime": "node22",
      "image": "ghcr.io/pinnate/generator-typescript:1.4.2",
      "started_at": "2026-03-18T09:11:02Z",
      "finished_at": "2026-03-18T09:12:41Z",
      "created_at": "2026-03-18T09:10:55Z",
      "updated_at": "2026-03-18T09:12:41Z"
    }
  ]
}

DocumentUploadRequest

{
  "document": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "required": [
      "email"
    ],
    "properties": {
      "email": {
        "type": "string",
        "format": "email"
      }
    }
  }
}

ErrorMessage

{
  "message": "Unauthenticated."
}

Ruleset

{
  "id": "01J8A7B2C3D4E5F6G7H8J9KMN3",
  "organization_id": "01J8A7B2C3D4E5F6G7H8J9KMNA",
  "name": "OAS baseline",
  "slug": "oas-baseline",
  "visibility": "private",
  "description": "Company-wide OpenAPI style and security checks based on spectral:oas.",
  "blocking_severity": "error",
  "current_version": {
    "id": "01J8A7B2C3D4E5F6G7H8J9KMN4",
    "ruleset_id": "01J8A7B2C3D4E5F6G7H8J9KMN3",
    "version": "1.0.0",
    "title": "OAS baseline",
    "checksum": "2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae",
    "source": "github",
    "parsed_summary": {
      "extends": [
        "spectral:oas"
      ],
      "rules": 12
    },
    "is_current": true,
    "created_at": "2026-02-02T08:12:55Z",
    "updated_at": "2026-02-02T08:12:55Z"
  },
  "created_at": "2026-01-05T10:00:00Z",
  "updated_at": "2026-02-02T08:12:55Z"
}

RulesetCreateRequest

{
  "name": "OAS baseline",
  "slug": "oas-baseline",
  "visibility": "private",
  "description": "Company-wide OpenAPI style and security checks based on spectral:oas.",
  "blocking_severity": "error",
  "document": {
    "extends": [
      "spectral:oas"
    ],
    "rules": []
  }
}

RulesetList

{
  "data": [
    {
      "id": "01J8A7B2C3D4E5F6G7H8J9KMN3",
      "organization_id": "01J8A7B2C3D4E5F6G7H8J9KMNA",
      "name": "OAS baseline",
      "slug": "oas-baseline",
      "visibility": "private",
      "description": "Company-wide OpenAPI style and security checks based on spectral:oas.",
      "blocking_severity": "error",
      "created_at": "2026-01-05T10:00:00Z",
      "updated_at": "2026-02-02T08:12:55Z"
    }
  ],
  "total": 1
}

RulesetResource

{
  "data": {
    "id": "01J8A7B2C3D4E5F6G7H8J9KMN3",
    "organization_id": "01J8A7B2C3D4E5F6G7H8J9KMNA",
    "name": "OAS baseline",
    "slug": "oas-baseline",
    "visibility": "private",
    "description": "Company-wide OpenAPI style and security checks based on spectral:oas.",
    "blocking_severity": "error",
    "current_version": {
      "id": "01J8A7B2C3D4E5F6G7H8J9KMN4",
      "ruleset_id": "01J8A7B2C3D4E5F6G7H8J9KMN3",
      "version": "1.0.0",
      "title": "OAS baseline",
      "checksum": "2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae",
      "source": "github",
      "parsed_summary": {
        "extends": [
          "spectral:oas"
        ],
        "rules": 12
      },
      "is_current": true,
      "created_at": "2026-02-02T08:12:55Z",
      "updated_at": "2026-02-02T08:12:55Z"
    },
    "created_at": "2026-01-05T10:00:00Z",
    "updated_at": "2026-02-02T08:12:55Z"
  }
}

RulesetUpdateRequest

{
  "blocking_severity": "warn",
  "description": "Company-wide OpenAPI style and security checks based on spectral:oas."
}

RulesetVersion

{
  "id": "01J8A7B2C3D4E5F6G7H8J9KMN4",
  "ruleset_id": "01J8A7B2C3D4E5F6G7H8J9KMN3",
  "version": "1.0.0",
  "title": "OAS baseline",
  "checksum": "2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae",
  "source": "github",
  "parsed_summary": {
    "extends": [
      "spectral:oas"
    ],
    "rules": 12
  },
  "is_current": true,
  "created_at": "2026-02-02T08:12:55Z",
  "updated_at": "2026-02-02T08:12:55Z"
}

RulesetVersionResource

{
  "data": {
    "id": "01J8A7B2C3D4E5F6G7H8J9KMN4",
    "ruleset_id": "01J8A7B2C3D4E5F6G7H8J9KMN3",
    "version": "1.0.0",
    "title": "OAS baseline",
    "checksum": "2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae",
    "source": "github",
    "parsed_summary": {
      "extends": [
        "spectral:oas"
      ],
      "rules": 12
    },
    "is_current": true,
    "created_at": "2026-02-02T08:12:55Z",
    "updated_at": "2026-02-02T08:12:55Z"
  }
}

Schema

{
  "id": "01J8A7B2C3D4E5F6G7H8J9KMN5",
  "organization_id": "01J8A7B2C3D4E5F6G7H8J9KMNA",
  "name": "Customer",
  "slug": "customer",
  "visibility": "public",
  "description": "Canonical customer profile used by billing and support APIs.",
  "current_version": {
    "id": "01J8A7B2C3D4E5F6G7H8J9KMN6",
    "schema_id": "01J8A7B2C3D4E5F6G7H8J9KMN5",
    "version": "3.1.0",
    "title": "Customer",
    "checksum": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "source": "upload",
    "parsed_summary": {
      "type": "object",
      "properties": 6
    },
    "is_current": true,
    "created_at": "2026-02-20T11:05:44Z",
    "updated_at": "2026-02-20T11:05:44Z"
  },
  "created_at": "2026-01-12T16:18:03Z",
  "updated_at": "2026-02-20T11:05:44Z"
}

SchemaCreateRequest

{
  "name": "Customer",
  "slug": "customer",
  "visibility": "public",
  "description": "Canonical customer profile used by billing and support APIs.",
  "document": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "title": "Customer",
    "type": "object",
    "required": [
      "id",
      "email"
    ],
    "properties": {
      "id": {
        "type": "string"
      },
      "email": {
        "type": "string",
        "format": "email"
      }
    }
  }
}

SchemaList

{
  "data": [
    {
      "id": "01J8A7B2C3D4E5F6G7H8J9KMN5",
      "organization_id": "01J8A7B2C3D4E5F6G7H8J9KMNA",
      "name": "Customer",
      "slug": "customer",
      "visibility": "public",
      "description": "Canonical customer profile used by billing and support APIs.",
      "created_at": "2026-01-12T16:18:03Z",
      "updated_at": "2026-02-20T11:05:44Z"
    }
  ],
  "total": 1
}

SchemaResource

{
  "data": {
    "id": "01J8A7B2C3D4E5F6G7H8J9KMN5",
    "organization_id": "01J8A7B2C3D4E5F6G7H8J9KMNA",
    "name": "Customer",
    "slug": "customer",
    "visibility": "public",
    "description": "Canonical customer profile used by billing and support APIs.",
    "current_version": {
      "id": "01J8A7B2C3D4E5F6G7H8J9KMN6",
      "schema_id": "01J8A7B2C3D4E5F6G7H8J9KMN5",
      "version": "3.1.0",
      "title": "Customer",
      "checksum": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "source": "upload",
      "parsed_summary": {
        "type": "object",
        "properties": 6
      },
      "is_current": true,
      "created_at": "2026-02-20T11:05:44Z",
      "updated_at": "2026-02-20T11:05:44Z"
    },
    "created_at": "2026-01-12T16:18:03Z",
    "updated_at": "2026-02-20T11:05:44Z"
  }
}

SchemaVersion

{
  "id": "01J8A7B2C3D4E5F6G7H8J9KMN6",
  "schema_id": "01J8A7B2C3D4E5F6G7H8J9KMN5",
  "version": "3.1.0",
  "title": "Customer",
  "checksum": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
  "source": "upload",
  "parsed_summary": {
    "type": "object",
    "properties": 6
  },
  "is_current": true,
  "created_at": "2026-02-20T11:05:44Z",
  "updated_at": "2026-02-20T11:05:44Z"
}

SchemaVersionResource

{
  "data": {
    "id": "01J8A7B2C3D4E5F6G7H8J9KMN6",
    "schema_id": "01J8A7B2C3D4E5F6G7H8J9KMN5",
    "version": "3.1.0",
    "title": "Customer",
    "checksum": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "source": "upload",
    "parsed_summary": {
      "type": "object",
      "properties": 6
    },
    "is_current": true,
    "created_at": "2026-02-20T11:05:44Z",
    "updated_at": "2026-02-20T11:05:44Z"
  }
}

Sdk

{
  "id": "01J8A7B2C3D4E5F6G7H8J9KMN8",
  "organization_id": "01J8A7B2C3D4E5F6G7H8J9KMNA",
  "name": "Payments SDK",
  "config": {
    "version": "0.1.0",
    "targets": {
      "typescript": {
        "packageName": "@acme/payments-sdk"
      }
    }
  },
  "targets": [
    {
      "id": "01J8A7B2C3D4E5F6G7H8J9KMN9",
      "type": "typescript",
      "repository": "acme/payments-typescript",
      "branch": "main"
    }
  ],
  "apis": [
    {
      "id": "01J8A7B2C3D4E5F6G7H8J9KMN1",
      "organization_id": "01J8A7B2C3D4E5F6G7H8J9KMNA",
      "name": "Payments API",
      "slug": "payments-api",
      "visibility": "public",
      "description": "Charge, refund, and reconcile card payments for connected accounts.",
      "logo_url": "https://cdn.example.com/logos/payments.svg",
      "ruleset_id": "01J8A7B2C3D4E5F6G7H8J9KMN3",
      "blocking_severity": "warn",
      "created_at": "2026-01-08T09:41:12Z",
      "updated_at": "2026-03-15T14:22:08Z"
    }
  ],
  "created_at": "2026-02-01T12:00:00Z",
  "updated_at": "2026-03-18T09:10:33Z"
}

SdkApiAttachment

{
  "api_id": "01J8A7B2C3D4E5F6G7H8J9KMN1",
  "namespace": "Payments"
}

SdkConfig

{
  "version": "0.1.0",
  "targets": {
    "typescript": {
      "packageName": "@acme/payments-sdk"
    },
    "php": {
      "packageName": "acme/payments-sdk",
      "namespace": "Acme\\\\Payments"
    },
    "cli": {
      "binaryName": "acme"
    }
  }
}

SdkCreateRequest

{
  "name": "Payments SDK",
  "targets": [
    "typescript",
    "php"
  ],
  "config": {
    "version": "0.1.0",
    "targets": {
      "typescript": {
        "packageName": "@acme/payments-sdk"
      },
      "php": {
        "packageName": "acme/payments-sdk",
        "namespace": "Acme\\\\Payments"
      }
    }
  },
  "apis": [
    {
      "api_id": "01J8A7B2C3D4E5F6G7H8J9KMN1",
      "namespace": "Payments"
    }
  ]
}

SdkList

{
  "data": [
    {
      "id": "01J8A7B2C3D4E5F6G7H8J9KMN8",
      "organization_id": "01J8A7B2C3D4E5F6G7H8J9KMNA",
      "name": "Payments SDK",
      "config": {
        "version": "0.1.0",
        "targets": {
          "typescript": {
            "packageName": "@acme/payments-sdk"
          }
        }
      },
      "targets": [
        {
          "id": "01J8A7B2C3D4E5F6G7H8J9KMN9",
          "type": "typescript"
        }
      ],
      "apis": [],
      "created_at": "2026-02-01T12:00:00Z",
      "updated_at": "2026-03-18T09:10:33Z"
    }
  ],
  "total": 1
}

SdkResource

{
  "data": {
    "id": "01J8A7B2C3D4E5F6G7H8J9KMN8",
    "organization_id": "01J8A7B2C3D4E5F6G7H8J9KMNA",
    "name": "Payments SDK",
    "config": {
      "version": "0.1.0",
      "targets": {
        "typescript": {
          "packageName": "@acme/payments-sdk"
        }
      }
    },
    "targets": [
      {
        "id": "01J8A7B2C3D4E5F6G7H8J9KMN9",
        "type": "typescript",
        "repository": "acme/payments-typescript",
        "branch": "main"
      }
    ],
    "apis": [
      {
        "id": "01J8A7B2C3D4E5F6G7H8J9KMN1",
        "organization_id": "01J8A7B2C3D4E5F6G7H8J9KMNA",
        "name": "Payments API",
        "slug": "payments-api",
        "visibility": "public",
        "description": "Charge, refund, and reconcile card payments for connected accounts.",
        "logo_url": "https://cdn.example.com/logos/payments.svg",
        "ruleset_id": "01J8A7B2C3D4E5F6G7H8J9KMN3",
        "blocking_severity": "warn",
        "created_at": "2026-01-08T09:41:12Z",
        "updated_at": "2026-03-15T14:22:08Z"
      }
    ],
    "created_at": "2026-02-01T12:00:00Z",
    "updated_at": "2026-03-18T09:10:33Z"
  }
}

SdkTarget

{
  "id": "01J8A7B2C3D4E5F6G7H8J9KMN9",
  "type": "typescript",
  "repository": "acme/payments-typescript",
  "branch": "main"
}

Site

{
  "id": "01J8A7B2C3D4E5F6G7H8J9KMN7",
  "organization_id": "01J8A7B2C3D4E5F6G7H8J9KMNA",
  "name": "Payments docs",
  "slug": "payments-docs",
  "title": "Payments Documentation",
  "visibility": "public",
  "apis": [
    {
      "id": "01J8A7B2C3D4E5F6G7H8J9KMN1",
      "organization_id": "01J8A7B2C3D4E5F6G7H8J9KMNA",
      "name": "Payments API",
      "slug": "payments-api",
      "visibility": "public",
      "description": "Charge, refund, and reconcile card payments for connected accounts.",
      "logo_url": "https://cdn.example.com/logos/payments.svg",
      "ruleset_id": "01J8A7B2C3D4E5F6G7H8J9KMN3",
      "blocking_severity": "warn",
      "created_at": "2026-01-08T09:41:12Z",
      "updated_at": "2026-03-15T14:22:08Z"
    }
  ],
  "created_at": "2026-01-20T13:30:00Z",
  "updated_at": "2026-03-10T17:45:21Z"
}

SiteCreateRequest

{
  "name": "Payments docs",
  "slug": "payments-docs",
  "title": "Payments Documentation",
  "api_ids": [
    "01J8A7B2C3D4E5F6G7H8J9KMN1"
  ]
}

SiteList

{
  "data": [
    {
      "id": "01J8A7B2C3D4E5F6G7H8J9KMN7",
      "organization_id": "01J8A7B2C3D4E5F6G7H8J9KMNA",
      "name": "Payments docs",
      "slug": "payments-docs",
      "title": "Payments Documentation",
      "visibility": "public",
      "apis": [],
      "created_at": "2026-01-20T13:30:00Z",
      "updated_at": "2026-03-10T17:45:21Z"
    }
  ],
  "total": 1
}

SiteResource

{
  "data": {
    "id": "01J8A7B2C3D4E5F6G7H8J9KMN7",
    "organization_id": "01J8A7B2C3D4E5F6G7H8J9KMNA",
    "name": "Payments docs",
    "slug": "payments-docs",
    "title": "Payments Documentation",
    "visibility": "public",
    "apis": [
      {
        "id": "01J8A7B2C3D4E5F6G7H8J9KMN1",
        "organization_id": "01J8A7B2C3D4E5F6G7H8J9KMNA",
        "name": "Payments API",
        "slug": "payments-api",
        "visibility": "public",
        "description": "Charge, refund, and reconcile card payments for connected accounts.",
        "logo_url": "https://cdn.example.com/logos/payments.svg",
        "ruleset_id": "01J8A7B2C3D4E5F6G7H8J9KMN3",
        "blocking_severity": "warn",
        "created_at": "2026-01-08T09:41:12Z",
        "updated_at": "2026-03-15T14:22:08Z"
      }
    ],
    "created_at": "2026-01-20T13:30:00Z",
    "updated_at": "2026-03-10T17:45:21Z"
  }
}

SpecSummary

{
  "paths": 14,
  "operations": 28,
  "openapi": "3.1.0"
}

SpecUploadRequest

{
  "document": {
    "openapi": "3.1.0",
    "info": {
      "title": "Payments API",
      "version": "1.2.0"
    },
    "paths": {
      "/charges": {
        "post": {
          "operationId": "createCharge",
          "responses": {
            "201": {
              "description": "Created"
            }
          }
        }
      }
    }
  }
}

SpecVersion

{
  "id": "01J8A7B2C3D4E5F6G7H8J9KMN2",
  "api_id": "01J8A7B2C3D4E5F6G7H8J9KMN1",
  "version": "1.2.0",
  "title": "Payments API",
  "checksum": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
  "source": "upload",
  "parsed_summary": {
    "paths": 14,
    "operations": 28,
    "openapi": "3.1.0"
  },
  "is_current": true,
  "created_at": "2026-03-15T14:22:08Z",
  "updated_at": "2026-03-15T14:22:08Z"
}

SpecVersionResource

{
  "data": {
    "id": "01J8A7B2C3D4E5F6G7H8J9KMN2",
    "api_id": "01J8A7B2C3D4E5F6G7H8J9KMN1",
    "version": "1.2.0",
    "title": "Payments API",
    "checksum": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
    "source": "upload",
    "parsed_summary": {
      "paths": 14,
      "operations": 28,
      "openapi": "3.1.0"
    },
    "is_current": true,
    "created_at": "2026-03-15T14:22:08Z",
    "updated_at": "2026-03-15T14:22:08Z"
  }
}

ValidationError

{
  "message": "The given data was invalid.",
  "errors": {
    "name": [
      "The name field is required."
    ],
    "slug": [
      "The slug has already been taken."
    ]
  }
}