Latitude 10 Registry API

Version 1.0.0 · v1 · Agent readiness 90/100 · Download openapi.yaml

The API a Latitude 10 project's CI calls: push a version of the project's OpenAPI document and read its readiness report and breaking-change diff, get rules-only fixes as JSON Patch, push the project's docs, and generate its TypeScript and Python SDKs. Every request carries a project key, Authorization: Bearer l10p_…, created on the project page under CI keys. The key names the project, so no workspace or project appears in a URL. Quotas are per plan; a request over one answers 429 with resetsAt, and retrying before then won't help.

Servers

  • https://latitude10.tech/api/registry/v1

Authentication

  • projectKey http bearer

    A project key (l10p_…) from the project page's CI keys. It names the project and can push to it, so keep it in your CI's secrets.

Versions

The project's OpenAPI document, one version per push.

#GET /versions

List the project's versions

Lists every version of the project's OpenAPI document that the plan keeps, newest first, each with its readiness score and diff counts. The list isn't paginated; a plan keeps at most a few hundred versions.

Authentication: projectKey

Responses

200 The versions, newest first.

application/json

object

  • versions array of object · Version required
    • seq integer required

      The version's number in the project, from 1.

      example 3

    • label string required

      The label sent on push, or the version number.

    • score integer required

      The readiness score, 0 to 100.

      min 0 · max 100 · example 90

    • rulesVersion string required

      The readiness rules' version that scored it.

    • operations integer required
    • findings integer required

      How many readiness findings the report holds.

    • breaking integer required

      Breaking changes against the version before it.

    • warnings integer required

      Changes worth a look against the version before it.

    • format string required

      one of yaml, json

    • openapi string required

      The document's openapi field.

    • source string required

      ci for this API, upload or url for the workspace.

      one of ci, upload, url

    • gitSha string | null required
    • gitRef string | null required
    • createdAt string required

      format date-time

    • url string required

      The version's page in the workspace.

      format uri

{
  "versions": [
    {
      "seq": 3,
      "label": "4f2c9a1",
      "score": 90,
      "rulesVersion": "1.0.3",
      "operations": 13,
      "findings": 9,
      "breaking": 0,
      "warnings": 1,
      "format": "yaml",
      "openapi": "3.1.0",
      "source": "ci",
      "gitSha": "4f2c9a1d0b7e8f6a5c4d3e2f1a0b9c8d7e6f5a4b",
      "gitRef": "refs/heads/main",
      "createdAt": "2026-10-22T09:30:00.000Z",
      "url": "https://latitude10.tech/workspace/jorge-ortega/registry-api/versions/3"
    }
  ]
}
401 No project key was sent, or it was revoked.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "Send a project key: Authorization: Bearer l10p_…"
}
503 The registry is unavailable right now. Try again later.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

Examples

curl
curl 'https://latitude10.tech/api/registry/v1/versions' \
  -H 'Authorization: Bearer '"$TOKEN"
JavaScript
const response = await fetch("https://latitude10.tech/api/registry/v1/versions", {
  headers: {
    "Authorization": "Bearer " + process.env.TOKEN,
  },
});
const data = await response.json();
Python
import os
import requests

response = requests.get(
    "https://latitude10.tech/api/registry/v1/versions",
    headers={"Authorization": "Bearer " + os.environ["TOKEN"]},
)
print(response.json())
#POST /versions

Push a version of the OpenAPI document

Pushes the project's OpenAPI document (3.0 or 3.1, YAML or JSON, bundled into one file) as the request body. The registry scores it with the readiness rules and diffs it against the latest version. Answers 201 with the new version, or 200 with the latest version when the bytes are the same as the latest's, so pushing the same document twice keeps one version. Every push counts toward the daily push quota, the repeated one too.

Authentication: projectKey

Parameters

NameInTypeDescription
labelquerystring

A label shown beside the version, such as a short commit SHA or a release tag. Longer than 100 characters, it is cut to 100. Without one, the document's info.version is the label.

example 4f2c9a1

git_shaquerystring

The Git commit the document was pushed from.

example 4f2c9a1d0b7e8f6a5c4d3e2f1a0b9c8d7e6f5a4b

git_refquerystring

The Git ref the document was pushed from.

example refs/heads/main

Request body

application/json · required

The OpenAPI document, as YAML or JSON text, up to the plan's document size.

object

An OpenAPI 3.0 or 3.1 document with no external $ref.

  • openapi string required

    example 3.1.0

  • info object required
  • paths object required

Responses

200 The document is the same as the latest version's; that version is answered and no new one is made.

application/json

object · Version

  • seq integer required

    The version's number in the project, from 1.

    example 3

  • label string required

    The label sent on push, or the version number.

  • score integer required

    The readiness score, 0 to 100.

    min 0 · max 100 · example 90

  • rulesVersion string required

    The readiness rules' version that scored it.

  • operations integer required
  • findings integer required

    How many readiness findings the report holds.

  • breaking integer required

    Breaking changes against the version before it.

  • warnings integer required

    Changes worth a look against the version before it.

  • format string required

    one of yaml, json

  • openapi string required

    The document's openapi field.

  • source string required

    ci for this API, upload or url for the workspace.

    one of ci, upload, url

  • gitSha string | null required
  • gitRef string | null required
  • createdAt string required

    format date-time

  • url string required

    The version's page in the workspace.

    format uri

201 The new version.

application/json

object · Version

  • seq integer required

    The version's number in the project, from 1.

    example 3

  • label string required

    The label sent on push, or the version number.

  • score integer required

    The readiness score, 0 to 100.

    min 0 · max 100 · example 90

  • rulesVersion string required

    The readiness rules' version that scored it.

  • operations integer required
  • findings integer required

    How many readiness findings the report holds.

  • breaking integer required

    Breaking changes against the version before it.

  • warnings integer required

    Changes worth a look against the version before it.

  • format string required

    one of yaml, json

  • openapi string required

    The document's openapi field.

  • source string required

    ci for this API, upload or url for the workspace.

    one of ci, upload, url

  • gitSha string | null required
  • gitRef string | null required
  • createdAt string required

    format date-time

  • url string required

    The version's page in the workspace.

    format uri

401 No project key was sent, or it was revoked.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "Send a project key: Authorization: Bearer l10p_…"
}
403 The project is read-only, because the workspace has more projects than its plan includes.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

409 Another version was pushed at the same moment. Push again.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "Another version was pushed at the same moment. Push again."
}
413 The document is larger than the plan keeps.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

422 The body isn't an OpenAPI 3.0 or 3.1 document, or it has an external $ref.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

429 A quota of the plan is reached for this period. Wait until resetsAt; retrying sooner answers the same.

application/json

object · QuotaError

  • error string required
  • resetsAt string required

    When the quota resets.

    format date-time

{
  "error": "Quota reached for this period. It resets at 2026-10-23T00:00:00.000Z.",
  "resetsAt": "2026-10-23T00:00:00.000Z"
}
503 The registry is unavailable right now. Try again later.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

Examples

curl
curl -X POST 'https://latitude10.tech/api/registry/v1/versions?label=4f2c9a1&git_sha=4f2c9a1d0b7e8f6a5c4d3e2f1a0b9c8d7e6f5a4b&git_ref=refs%2Fheads%2Fmain' \
  -H 'Authorization: Bearer '"$TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"openapi":"3.1.0","info":{},"paths":{}}'
JavaScript
const response = await fetch("https://latitude10.tech/api/registry/v1/versions?label=4f2c9a1&git_sha=4f2c9a1d0b7e8f6a5c4d3e2f1a0b9c8d7e6f5a4b&git_ref=refs%2Fheads%2Fmain", {
  method: "POST",
  headers: {
    "Authorization": "Bearer " + process.env.TOKEN,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({"openapi":"3.1.0","info":{},"paths":{}}),
});
const data = await response.json();
Python
import os
import requests

response = requests.post(
    "https://latitude10.tech/api/registry/v1/versions",
    params={"label": "4f2c9a1", "git_sha": "4f2c9a1d0b7e8f6a5c4d3e2f1a0b9c8d7e6f5a4b", "git_ref": "refs/heads/main"},
    headers={"Authorization": "Bearer " + os.environ["TOKEN"]},
    json={"openapi": "3.1.0", "info": {}, "paths": {}},
)
print(response.json())
#GET /versions/latest

Get the latest version

Answers the newest version of the project's document with its readiness score, its finding count and its breaking-change counts against the version before it. Answers 404 when nothing has been pushed yet.

Authentication: projectKey

Responses

200 The latest version.

application/json

object · Version

  • seq integer required

    The version's number in the project, from 1.

    example 3

  • label string required

    The label sent on push, or the version number.

  • score integer required

    The readiness score, 0 to 100.

    min 0 · max 100 · example 90

  • rulesVersion string required

    The readiness rules' version that scored it.

  • operations integer required
  • findings integer required

    How many readiness findings the report holds.

  • breaking integer required

    Breaking changes against the version before it.

  • warnings integer required

    Changes worth a look against the version before it.

  • format string required

    one of yaml, json

  • openapi string required

    The document's openapi field.

  • source string required

    ci for this API, upload or url for the workspace.

    one of ci, upload, url

  • gitSha string | null required
  • gitRef string | null required
  • createdAt string required

    format date-time

  • url string required

    The version's page in the workspace.

    format uri

401 No project key was sent, or it was revoked.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "Send a project key: Authorization: Bearer l10p_…"
}
404 This project has no versions yet.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "This project has no versions yet."
}
503 The registry is unavailable right now. Try again later.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

Examples

curl
curl 'https://latitude10.tech/api/registry/v1/versions/latest' \
  -H 'Authorization: Bearer '"$TOKEN"
JavaScript
const response = await fetch("https://latitude10.tech/api/registry/v1/versions/latest", {
  headers: {
    "Authorization": "Bearer " + process.env.TOKEN,
  },
});
const data = await response.json();
Python
import os
import requests

response = requests.get(
    "https://latitude10.tech/api/registry/v1/versions/latest",
    headers={"Authorization": "Bearer " + os.environ["TOKEN"]},
)
print(response.json())
#GET /versions/{seq}/report

Get a version's readiness report

Answers the readiness report stored when the version was pushed, with the score, the rules version, and every rule with its findings and suggested fix. Use it to show why a version scored what it did.

Authentication: projectKey

Parameters

NameInTypeDescription
seq requiredpathstring

The version's number, as listed by listVersions.

pattern ^\d{1,9}$

example 3

Responses

200 The stored report.

application/json

object · Report

  • rulesVersion string required

    example 1.0.3

  • score integer required

    example 90

  • operations integer required
  • rules array of object · Rule required
    • id string required
    • title string required
    • weight integer required
    • applicable integer required
    • passing integer required
    • share number required

      passing / applicable, 1 when nothing applies.

    • fix string required
    • findings array of object · Finding required
      • rule string required
      • where string required

        METHOD /path, a parameter, or spec.

      • message string required
  • warnings array of string required
400 seq isn't a version number.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "seq must be a version number."
}
401 No project key was sent, or it was revoked.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "Send a project key: Authorization: Bearer l10p_…"
}
404 There is no version with that number.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "There is no version 7."
}
503 The registry is unavailable right now. Try again later.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

Examples

curl
curl -g 'https://latitude10.tech/api/registry/v1/versions/{seq}/report' \
  -H 'Authorization: Bearer '"$TOKEN"
JavaScript
const response = await fetch("https://latitude10.tech/api/registry/v1/versions/{seq}/report", {
  headers: {
    "Authorization": "Bearer " + process.env.TOKEN,
  },
});
const data = await response.json();
Python
import os
import requests

response = requests.get(
    "https://latitude10.tech/api/registry/v1/versions/{seq}/report",
    headers={"Authorization": "Bearer " + os.environ["TOKEN"]},
)
print(response.json())
#GET /versions/{seq}/source

Download a version's document as pushed

Answers the version's OpenAPI document byte for byte as it was pushed, as application/json when it was pushed as JSON and application/yaml otherwise. Use it to restore or compare a version.

Authentication: projectKey

Parameters

NameInTypeDescription
seq requiredpathstring

The version's number, as listed by listVersions.

pattern ^\d{1,9}$

example 3

Responses

200 The document as pushed.

application/json

object

The OpenAPI document, when it was pushed as JSON.

  • openapi string required
400 seq isn't a version number.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "seq must be a version number."
}
401 No project key was sent, or it was revoked.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "Send a project key: Authorization: Bearer l10p_…"
}
404 There is no version with that number.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "There is no version 7."
}
503 The registry is unavailable right now. Try again later.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

Examples

curl
curl -g 'https://latitude10.tech/api/registry/v1/versions/{seq}/source' \
  -H 'Authorization: Bearer '"$TOKEN"
JavaScript
const response = await fetch("https://latitude10.tech/api/registry/v1/versions/{seq}/source", {
  headers: {
    "Authorization": "Bearer " + process.env.TOKEN,
  },
});
const data = await response.json();
Python
import os
import requests

response = requests.get(
    "https://latitude10.tech/api/registry/v1/versions/{seq}/source",
    headers={"Authorization": "Bearer " + os.environ["TOKEN"]},
)
print(response.json())
#GET /diff

Compare two versions

Lists what changed between any two versions of the project's document, each change marked breaking, warning or info. The diff stored on push answers when the pair is a version and the one before it; any other pair is computed on request.

Authentication: projectKey

Parameters

NameInTypeDescription
from requiredquerystring

The older version's number.

pattern ^\d{1,9}$

example 2

to requiredquerystring

The newer version's number.

pattern ^\d{1,9}$

example 3

Responses

200 The changes from one version to the other.

application/json

object

  • from integer required
  • to integer required
  • changes array of object · Change required
    • kind string required
    • level string required

      one of breaking, warning, info

    • pointer string required

      A JSON Pointer into the newer document.

    • message string required
{
  "from": 2,
  "to": 3,
  "changes": [
    {
      "kind": "operation-removed",
      "level": "breaking",
      "pointer": "/paths/~1pets~1{id}/delete",
      "message": "DELETE /pets/{id} was removed."
    }
  ]
}
400 from or to is missing or isn't a version number.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "Send from and to, two version numbers."
}
401 No project key was sent, or it was revoked.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "Send a project key: Authorization: Bearer l10p_…"
}
404 There is no version with that number.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "There is no version 7."
}
503 The registry is unavailable right now. Try again later.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

Examples

curl
curl 'https://latitude10.tech/api/registry/v1/diff?from=2&to=3' \
  -H 'Authorization: Bearer '"$TOKEN"
JavaScript
const response = await fetch("https://latitude10.tech/api/registry/v1/diff?from=2&to=3", {
  headers: {
    "Authorization": "Bearer " + process.env.TOKEN,
  },
});
const data = await response.json();
Python
import os
import requests

response = requests.get(
    "https://latitude10.tech/api/registry/v1/diff",
    params={"from": "2", "to": "3"},
    headers={"Authorization": "Bearer " + os.environ["TOKEN"]},
)
print(response.json())

Fixes

Rules-only fixes for a document, as JSON Patch.

#POST /fixes

Get rules-only fixes for a document

Scores the OpenAPI document in the body with the readiness rules and answers the fixes that raise its score, as a JSON Patch to apply to the document, with the score before and after. The fixes come from the rules alone; no model is called, so the same document always gets the same patch. Each call counts toward the workspace's monthly fix runs. Paid plans only.

Authentication: projectKey

Request body

application/json · required

The OpenAPI document, as YAML or JSON text.

object

An OpenAPI 3.0 or 3.1 document with no external $ref.

  • openapi string required
  • info object required
  • paths object required
{
  "openapi": "3.1.0",
  "info": {
    "title": "Pets",
    "version": "1.0.0"
  },
  "paths": {
    "/pets": {
      "get": {
        "responses": {
          "200": {
            "description": "The pets."
          }
        }
      }
    }
  }
}

Responses

200 The fixes, as JSON Patch.

application/json

object · Fixes

  • rulesVersion string required
  • scoreBefore integer required

    example 62

  • scoreAfter integer required

    example 88

  • operations integer required
  • patch array of object required

    RFC 6902 operations to apply to the document, in order.

    • op string required

      one of add, remove, replace

    • path string required
    • value any
401 No project key was sent, or it was revoked.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "Send a project key: Authorization: Bearer l10p_…"
}
403 Suggested fixes are part of the paid plans.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "Suggested fixes are part of the paid plans."
}
413 The document is larger than the plan reads.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

422 The body isn't an OpenAPI 3.0 or 3.1 document, or it has an external $ref.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

429 A quota of the plan is reached for this period. Wait until resetsAt; retrying sooner answers the same.

application/json

object · QuotaError

  • error string required
  • resetsAt string required

    When the quota resets.

    format date-time

{
  "error": "Quota reached for this period. It resets at 2026-10-23T00:00:00.000Z.",
  "resetsAt": "2026-10-23T00:00:00.000Z"
}
503 The registry is unavailable right now. Try again later.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

Examples

curl
curl -X POST 'https://latitude10.tech/api/registry/v1/fixes' \
  -H 'Authorization: Bearer '"$TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"openapi":"3.1.0","info":{"title":"Pets","version":"1.0.0"},"paths":{"/pets":{"get":{"responses":{"200":{"description":"The pets."}}}}}}'
JavaScript
const response = await fetch("https://latitude10.tech/api/registry/v1/fixes", {
  method: "POST",
  headers: {
    "Authorization": "Bearer " + process.env.TOKEN,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({"openapi":"3.1.0","info":{"title":"Pets","version":"1.0.0"},"paths":{"/pets":{"get":{"responses":{"200":{"description":"The pets."}}}}}}),
});
const data = await response.json();
Python
import os
import requests

response = requests.post(
    "https://latitude10.tech/api/registry/v1/fixes",
    headers={"Authorization": "Bearer " + os.environ["TOKEN"]},
    json={"openapi": "3.1.0", "info": {"title": "Pets", "version": "1.0.0"}, "paths": {"/pets": {"get": {"responses": {"200": {"description": "The pets."}}}}}},
)
print(response.json())

Docs

The project's hosted docs, pushed as a folder.

#POST /docs

Push the docs folder

Pushes the project's docs folder as a .tar.gz and builds the hosted docs from it. Without version or preview, the push replaces the production site, and only from the project's docs branch (the first branch pushed, until changed in the workspace). With version=<label> it becomes a versioned copy; with preview=1, a private preview of the branch that expires after 14 days. Counts toward the daily docs pushes.

Authentication: projectKey

Parameters

NameInTypeDescription
branch requiredquerystring

The Git branch the docs were built from (letters, digits, ., _, / and -).

pattern ^(?!.*\.\.)[A-Za-z0-9._/-]{1,100}$

example main

commitquerystring

The Git commit SHA, 7 to 40 hex characters.

pattern ^[0-9a-fA-F]{7,40}$

example 4f2c9a1

versionquerystring

Push as a versioned copy under this label (up to 20 lowercase letters, digits, dots and dashes). Not with preview.

pattern ^[a-z0-9][a-z0-9.-]{0,19}$

example v1

previewquerystring

Send 1 to push a private preview of the branch. Not with version. Any other value is ignored, and the push goes to production.

example 1

Request body

application/gzip · required

The docs folder as a .tar.gz, with its latitude10.docs.json and Markdown pages.

string

Responses

201 The docs were built.

application/json

object · DocsBuild

  • build string required
  • kind string required

    one of production, version, preview

  • label string required

    The version label, or the branch.

  • pages integer required
  • warnings array of string required
  • url string required

    format uri

  • previewUrl string

    The private preview's address, for preview=1.

    format uri

{
  "build": "9f8e7d6c5b4a39281706f5e4d3c2b1a0",
  "kind": "production",
  "label": "main",
  "pages": 2,
  "warnings": [],
  "url": "https://latitude10.tech/docs/jorge-ortega/registry-api"
}
400 A query parameter is missing or malformed, or the body is empty.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "Send ?branch= with the Git branch (letters, digits, ., _, / and -)."
}
401 No project key was sent, or it was revoked.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "Send a project key: Authorization: Bearer l10p_…"
}
403 The project is read-only, or the plan has no room for another docs version or preview.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

409 The branch isn't the project's docs branch. Push it with preview=1, or change the docs branch in the workspace.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

413 The folder is larger, or has more pages, than the plan builds.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

415 The body isn't a .tar.gz. Send Content-Type application/gzip.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

422 The archive can't be read, or its latitude10.docs.json is invalid.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

429 A quota of the plan is reached for this period. Wait until resetsAt; retrying sooner answers the same.

application/json

object · QuotaError

  • error string required
  • resetsAt string required

    When the quota resets.

    format date-time

{
  "error": "Quota reached for this period. It resets at 2026-10-23T00:00:00.000Z.",
  "resetsAt": "2026-10-23T00:00:00.000Z"
}
503 The registry is unavailable, or docs pushes on the Free plan are paused for now.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

Examples

curl
curl -X POST 'https://latitude10.tech/api/registry/v1/docs?branch=main&commit=4f2c9a1&version=v1&preview=1' \
  -H 'Authorization: Bearer '"$TOKEN" \
  -H 'Content-Type: application/gzip' \
  -d '{body}'
JavaScript
const response = await fetch("https://latitude10.tech/api/registry/v1/docs?branch=main&commit=4f2c9a1&version=v1&preview=1", {
  method: "POST",
  headers: {
    "Authorization": "Bearer " + process.env.TOKEN,
    "Content-Type": "application/gzip",
  },
  body: "{body}",
});
const data = await response.json();
Python
import os
import requests

response = requests.post(
    "https://latitude10.tech/api/registry/v1/docs",
    params={"branch": "main", "commit": "4f2c9a1", "version": "v1", "preview": "1"},
    headers={"Authorization": "Bearer " + os.environ["TOKEN"], "Content-Type": "application/gzip"},
    data="{body}",
)
print(response.json())
#DELETE /docs/previews/{branch}

Delete a branch's docs preview

Deletes the docs preview of a branch, for when its pull request closes. Answers 204 whether or not the branch had a preview, so it's safe to call on every closed pull request.

Authentication: projectKey

Parameters

NameInTypeDescription
branch requiredpathstring

The branch, URL-encoded (feature%2Fsearch for feature/search).

example feature%2Fsearch

Responses

204 The branch has no preview now.
401 No project key was sent, or it was revoked.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "Send a project key: Authorization: Bearer l10p_…"
}
503 The registry is unavailable right now. Try again later.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

Examples

curl
curl -g -X DELETE 'https://latitude10.tech/api/registry/v1/docs/previews/{branch}' \
  -H 'Authorization: Bearer '"$TOKEN"
JavaScript
const response = await fetch("https://latitude10.tech/api/registry/v1/docs/previews/{branch}", {
  method: "DELETE",
  headers: {
    "Authorization": "Bearer " + process.env.TOKEN,
  },
});
const data = await response.json();
Python
import os
import requests

response = requests.delete(
    "https://latitude10.tech/api/registry/v1/docs/previews/{branch}",
    headers={"Authorization": "Bearer " + os.environ["TOKEN"]},
)
print(response.json())

SDK

TypeScript and Python SDKs generated from a version.

#POST /sdks/typescript

Generate the TypeScript SDK

Generates the project's TypeScript SDK from a registry version and the project's latitude10.sdk.json, sent as the body, and answers the npm package as a .tgz. The package version follows the registry diff (breaking changes bump the major). The same config and version answer the same build again. Counts toward the daily SDK generations. Pro and Business.

Authentication: projectKey

Parameters

NameInTypeDescription
versionquerystring

The registry version to generate from, latest (the default) or a version number.

pattern ^(latest|\d{1,9})$ · default latest

example latest

Request body

application/json · required

The project's latitude10.sdk.json, up to 16 KB.

object · SdkConfig

latitude10.sdk.json. The SDK generator's runbook lists every field.

  • generator integer required

    one of 1

  • package string required

    The npm package name.

  • clientName string
  • firstVersion string
  • python object

    The Python package's settings.

{
  "generator": 1,
  "package": "@latitude10/registry",
  "clientName": "Latitude10Registry",
  "firstVersion": "0.1.0",
  "python": {
    "package": "latitude10-registry",
    "module": "latitude10_registry"
  }
}

Responses

200 The generated package as a .tgz, with its GENERATION.md listing anything left out.

application/gzip

string

400 version isn't latest or a version number.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

401 No project key was sent, or it was revoked.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "Send a project key: Authorization: Bearer l10p_…"
}
402 SDKs come with Pro.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

403 The document has more operations than the plan generates SDKs for. Use include or exclude in latitude10.sdk.json.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

404 The project has no registry versions yet, or not the one asked for.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

409 The registry version is older than the package's last build. Generate from that version or later.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

413 latitude10.sdk.json is over 16 KB.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

422 latitude10.sdk.json is invalid or has no section for this language, or the version can't be read or modelled.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

429 A quota of the plan is reached for this period. Wait until resetsAt; retrying sooner answers the same.

application/json

object · QuotaError

  • error string required
  • resetsAt string required

    When the quota resets.

    format date-time

{
  "error": "Quota reached for this period. It resets at 2026-10-23T00:00:00.000Z.",
  "resetsAt": "2026-10-23T00:00:00.000Z"
}
503 The registry is unavailable right now. Try again later.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

Examples

curl
curl -X POST 'https://latitude10.tech/api/registry/v1/sdks/typescript?version=latest' \
  -H 'Authorization: Bearer '"$TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"generator":1,"package":"@latitude10/registry","clientName":"Latitude10Registry","firstVersion":"0.1.0","python":{"package":"latitude10-registry","module":"latitude10_registry"}}'
JavaScript
const response = await fetch("https://latitude10.tech/api/registry/v1/sdks/typescript?version=latest", {
  method: "POST",
  headers: {
    "Authorization": "Bearer " + process.env.TOKEN,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({"generator":1,"package":"@latitude10/registry","clientName":"Latitude10Registry","firstVersion":"0.1.0","python":{"package":"latitude10-registry","module":"latitude10_registry"}}),
});
const data = await response.json();
Python
import os
import requests

response = requests.post(
    "https://latitude10.tech/api/registry/v1/sdks/typescript",
    params={"version": "latest"},
    headers={"Authorization": "Bearer " + os.environ["TOKEN"]},
    json={"generator": 1, "package": "@latitude10/registry", "clientName": "Latitude10Registry", "firstVersion": "0.1.0", "python": {"package": "latitude10-registry", "module": "latitude10_registry"}},
)
print(response.json())
#GET /sdks/typescript/builds

List the TypeScript SDK builds

Lists the project's TypeScript SDK builds, newest first, with each one's package version, the registry version it was built from, and the changes that set its version bump.

Authentication: projectKey

Responses

200 The builds, newest first.

application/json

object

  • builds array of object · SdkBuild required
    • version string required
    • seq integer required

      The registry version it was built from.

    • bump string required

      one of initial, major, minor, patch

    • package string required
    • operations integer required
    • changes array of object required
      • level string required

        one of breaking, warning, info

      • message string required
    • createdAt string required

      format date-time

{
  "builds": [
    {
      "version": "0.1.0",
      "seq": 3,
      "bump": "initial",
      "package": "@latitude10/registry",
      "operations": 13,
      "changes": [],
      "createdAt": "2026-10-22T09:31:00.000Z"
    }
  ]
}
401 No project key was sent, or it was revoked.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "Send a project key: Authorization: Bearer l10p_…"
}
503 The registry is unavailable right now. Try again later.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

Examples

curl
curl 'https://latitude10.tech/api/registry/v1/sdks/typescript/builds' \
  -H 'Authorization: Bearer '"$TOKEN"
JavaScript
const response = await fetch("https://latitude10.tech/api/registry/v1/sdks/typescript/builds", {
  headers: {
    "Authorization": "Bearer " + process.env.TOKEN,
  },
});
const data = await response.json();
Python
import os
import requests

response = requests.get(
    "https://latitude10.tech/api/registry/v1/sdks/typescript/builds",
    headers={"Authorization": "Bearer " + os.environ["TOKEN"]},
)
print(response.json())
#POST /sdks/python

Generate the Python SDK

Generates the project's Python SDK from a registry version and the python section of the project's latitude10.sdk.json, sent as the body, and answers the package's source as a .tgz to build and upload to PyPI. The same config and version answer the same build again. Counts toward the daily SDK generations. Pro and Business.

Authentication: projectKey

Parameters

NameInTypeDescription
versionquerystring

The registry version to generate from, latest (the default) or a version number.

pattern ^(latest|\d{1,9})$ · default latest

example latest

Request body

application/json · required

The project's latitude10.sdk.json, up to 16 KB.

object · SdkConfig

latitude10.sdk.json. The SDK generator's runbook lists every field.

  • generator integer required

    one of 1

  • package string required

    The npm package name.

  • clientName string
  • firstVersion string
  • python object

    The Python package's settings.

{
  "generator": 1,
  "package": "@latitude10/registry",
  "clientName": "Latitude10Registry",
  "firstVersion": "0.1.0",
  "python": {
    "package": "latitude10-registry",
    "module": "latitude10_registry"
  }
}

Responses

200 The generated package as a .tgz, with its GENERATION.md listing anything left out.

application/gzip

string

400 version isn't latest or a version number.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

401 No project key was sent, or it was revoked.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "Send a project key: Authorization: Bearer l10p_…"
}
402 SDKs come with Pro.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

403 The document has more operations than the plan generates SDKs for. Use include or exclude in latitude10.sdk.json.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

404 The project has no registry versions yet, or not the one asked for.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

409 The registry version is older than the package's last build. Generate from that version or later.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

413 latitude10.sdk.json is over 16 KB.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

422 latitude10.sdk.json is invalid or has no section for this language, or the version can't be read or modelled.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

429 A quota of the plan is reached for this period. Wait until resetsAt; retrying sooner answers the same.

application/json

object · QuotaError

  • error string required
  • resetsAt string required

    When the quota resets.

    format date-time

{
  "error": "Quota reached for this period. It resets at 2026-10-23T00:00:00.000Z.",
  "resetsAt": "2026-10-23T00:00:00.000Z"
}
503 The registry is unavailable right now. Try again later.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

Examples

curl
curl -X POST 'https://latitude10.tech/api/registry/v1/sdks/python?version=latest' \
  -H 'Authorization: Bearer '"$TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"generator":1,"package":"@latitude10/registry","clientName":"Latitude10Registry","firstVersion":"0.1.0","python":{"package":"latitude10-registry","module":"latitude10_registry"}}'
JavaScript
const response = await fetch("https://latitude10.tech/api/registry/v1/sdks/python?version=latest", {
  method: "POST",
  headers: {
    "Authorization": "Bearer " + process.env.TOKEN,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({"generator":1,"package":"@latitude10/registry","clientName":"Latitude10Registry","firstVersion":"0.1.0","python":{"package":"latitude10-registry","module":"latitude10_registry"}}),
});
const data = await response.json();
Python
import os
import requests

response = requests.post(
    "https://latitude10.tech/api/registry/v1/sdks/python",
    params={"version": "latest"},
    headers={"Authorization": "Bearer " + os.environ["TOKEN"]},
    json={"generator": 1, "package": "@latitude10/registry", "clientName": "Latitude10Registry", "firstVersion": "0.1.0", "python": {"package": "latitude10-registry", "module": "latitude10_registry"}},
)
print(response.json())
#GET /sdks/python/builds

List the Python SDK builds

Lists the project's Python SDK builds, newest first, with each one's package version, the registry version it was built from, and the changes behind each bump.

Authentication: projectKey

Responses

200 The builds, newest first.

application/json

object

  • builds array of object · SdkBuild required
    • version string required
    • seq integer required

      The registry version it was built from.

    • bump string required

      one of initial, major, minor, patch

    • package string required
    • operations integer required
    • changes array of object required
      • level string required

        one of breaking, warning, info

      • message string required
    • createdAt string required

      format date-time

{
  "builds": [
    {
      "version": "0.1.0",
      "seq": 3,
      "bump": "initial",
      "package": "@latitude10/registry",
      "operations": 13,
      "changes": [],
      "createdAt": "2026-10-22T09:31:00.000Z"
    }
  ]
}
401 No project key was sent, or it was revoked.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

{
  "error": "Send a project key: Authorization: Bearer l10p_…"
}
503 The registry is unavailable right now. Try again later.

application/json

object · Error

  • error string required

    What went wrong and what to do about it.

Examples

curl
curl 'https://latitude10.tech/api/registry/v1/sdks/python/builds' \
  -H 'Authorization: Bearer '"$TOKEN"
JavaScript
const response = await fetch("https://latitude10.tech/api/registry/v1/sdks/python/builds", {
  headers: {
    "Authorization": "Bearer " + process.env.TOKEN,
  },
});
const data = await response.json();
Python
import os
import requests

response = requests.get(
    "https://latitude10.tech/api/registry/v1/sdks/python/builds",
    headers={"Authorization": "Bearer " + os.environ["TOKEN"]},
)
print(response.json())