Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/org-quicko/skillset/llms.txt

Use this file to discover all available pages before exploring further.

The Integrations API manages the Registry’s registrations with Git Providers — the OAuth app credentials that allow the Registry to import Skills from GitHub and GitLab on behalf of writers. All endpoints require Admin role. An Integration stores the OAuth client_id, client_secret, and optional app_slug for one Git Provider app. Writers then create personal Connections against an Integration to grant the Registry access to their repositories.
The client_secret is write-only. It is accepted on create and update but is never returned in any response — not even to the Admin who set it. If you need to rotate a secret, send a new one via PATCH /api/integrations/:id.

Endpoints at a glance

MethodPathAuthDescription
GET/api/integrationsAdmin+List all Integrations
POST/api/integrationsAdmin+Create an Integration
PATCH/api/integrations/:idAdmin+Update an Integration
DELETE/api/integrations/:idAdmin+Delete an Integration

List Integrations

GET /api/integrations
Returns all configured Integrations. client_secret is never included.

Response fields

items
array
All Integration records. Each entry has:
curl https://registry.example.com/api/integrations \
  -H "Authorization: Bearer <token>"

Create an Integration

POST /api/integrations
Registers a new Git Provider app with the Registry. More than one Integration can be created for the same provider — for example, two GitHub Apps for two different organisations.

Request body

provider
string
required
Git Provider name. Must be a recognised provider (github or gitlab).
display_name
string
required
Human-readable label (max 100 characters). Shown to writers in the Connect flow.
client_id
string
required
OAuth app client id from the provider’s console.
client_secret
string
required
OAuth app client secret. Stored encrypted; never returned in responses.
description
string
Optional note (max 180 characters). Useful when multiple Integrations exist for the same provider.
app_slug
string
GitHub App slug (letters, digits, and hyphens only; max 100 characters). Used to build the repository access management URL. Set to null or omit for providers with no installation step.
Returns the created Integration record (without client_secret) with 201 Created.
curl -X POST https://registry.example.com/api/integrations \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "github",
    "display_name": "Acme GitHub App",
    "description": "Imports Skills from the acme-corp GitHub organisation.",
    "client_id": "Iv1.abc1234567890abc",
    "client_secret": "secret_abc123...",
    "app_slug": "acme-skillset"
  }'

Update an Integration

PATCH /api/integrations/:id
Updates one or more fields of an existing Integration. All fields are optional — omit any field to leave it unchanged.
provider cannot be changed after creation. Omitting client_secret leaves the stored secret untouched — you do not need to re-enter the secret to update only the display name. Sending app_slug: null explicitly clears the slug; omitting app_slug leaves whatever is stored.

Path parameters

id
string
required
UUID of the Integration to update.

Request body

display_name
string
New display name (max 100 characters).
description
string | null
New description (max 180 characters), or null to clear it.
client_id
string
Updated OAuth client id.
client_secret
string
Replacement client secret. Omit to keep the stored one.
app_slug
string | null
Updated app slug, or null to clear it. Omit to leave unchanged.

Error codes

CodeStatusWhen
not_found404No Integration with that id.
validation_failed400A field failed validation (e.g. app_slug has invalid characters).
curl -X PATCH https://registry.example.com/api/integrations/018f1234-abcd-7000-8000-000000000001 \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "display_name": "Acme GitHub App (updated)",
    "client_secret": "new_secret_xyz..."
  }'

Delete an Integration

DELETE /api/integrations/:id
Removes an Integration. Returns 204 No Content on success.
Deletion is refused with 409 integration_in_use if any writer still holds a Connection that references this Integration. Disconnect those writers first, or update the Integration to point at a different OAuth app instead.

Path parameters

id
string
required
UUID of the Integration to delete.

Error codes

CodeStatusWhen
not_found404No Integration with that id.
integration_in_use409One or more Connections still reference this Integration.
curl -X DELETE https://registry.example.com/api/integrations/018f1234-abcd-7000-8000-000000000001 \
  -H "Authorization: Bearer <token>"

Build docs developers (and LLMs) love