Pinnate SDK
Version 0.1.10
Getting started
Install
npm install @pinnate-dev/js-sdkInitialize 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
/v1/apis
List APIs
const result = await client.pinnate.apis.list(/* … */);Parameters
page: int
Query parameter page
limit: int
Query parameter limit
/v1/apis
Create an API
const result = await client.pinnate.apis.create(/* … */);Parameters
body: ApiCreateRequest (required)
Request body (ApiCreateRequest)
/v1/apis/{api}
Get an API
const result = await client.pinnate.apis.get(/* … */);Parameters
api: string (required)
Path parameter api
/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)
/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
/v1/schemas
List schemas
const result = await client.pinnate.schemas.list(/* … */);Parameters
page: int
Query parameter page
limit: int
Query parameter limit
/v1/schemas
Create a schema
const result = await client.pinnate.schemas.create(/* … */);Parameters
body: SchemaCreateRequest (required)
Request body (SchemaCreateRequest)
/v1/schemas/{schema}
Get a schema
const result = await client.pinnate.schemas.get(/* … */);Parameters
schema: string (required)
Path parameter schema
/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
/v1/rulesets
List rulesets
const result = await client.pinnate.rulesets.list(/* … */);Parameters
page: int
Query parameter page
limit: int
Query parameter limit
/v1/rulesets
Create a ruleset
const result = await client.pinnate.rulesets.create(/* … */);Parameters
body: RulesetCreateRequest (required)
Request body (RulesetCreateRequest)
/v1/rulesets/{ruleset}
Get a ruleset
const result = await client.pinnate.rulesets.get(/* … */);Parameters
ruleset: string (required)
Path parameter ruleset
/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)
/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
/v1/sites
List sites
const result = await client.pinnate.sites.list(/* … */);Parameters
page: int
Query parameter page
limit: int
Query parameter limit
/v1/sites
Create a site
const result = await client.pinnate.sites.create(/* … */);Parameters
body: SiteCreateRequest (required)
Request body (SiteCreateRequest)
SDKs
/v1/sdks
List SDKs
const result = await client.pinnate.sdks.list(/* … */);Parameters
page: int
Query parameter page
limit: int
Query parameter limit
/v1/sdks
Create an SDK
const result = await client.pinnate.sdks.create(/* … */);Parameters
body: SdkCreateRequest (required)
Request body (SdkCreateRequest)
Builds
/v1/sdks/{sdk}/builds
Queue an SDK build
const result = await client.pinnate.builds.create(/* … */);Parameters
sdk: string (required)
Path parameter sdk
/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."
]
}
}