Publishing via API

Plugins

Publishing via API

Publish plugins programmatically from your CI/CD pipeline using a Developer API key. This lets you ship a new version automatically whenever you tag a release, without opening the portal.

Create a Developer API key

Open the /developers/api-keys page and create a new key. The plaintext key is shown only once, at the moment of creation — the server keeps only a SHA-256 hash of it, so it can never be displayed again. Copy it immediately into your secret store (for example, your CI provider's encrypted secrets).

You can revoke a key at any time from the same page. Revoked or otherwise inactive keys stop working immediately.

Authenticate your requests

Send the key with every request using either of these headers:

  • Authorization: Bearer <key>
  • X-Developer-Key: <key>

An invalid or inactive key returns 401. On a successful publish, the key's last_used_at timestamp is updated, so you can see when automation last ran.

Publish a plugin

Send a POST request to /api/developer/plugins. The published plugin is owned by the key's user — exactly as if you had submitted it through the portal.

Request body

Field Required Notes
slug Yes Lowercase letters, numbers, and hyphens
name Yes Display name
type Yes One of snippets, lintRule, theme, dataFormatter, exportFormat, dashboard
version Yes The release version
content Yes The plugin JSON object
uuid No Existing plugin identifier
description No Short summary
tags No Discovery tags
icon_url No Icon image URL
author_url No Author or project link
min_app_version No Minimum app version required
visibility No public, private, or team

Example

curl -X POST https://tablen.app/api/developer/plugins \
  -H "Authorization: Bearer $TABLEN_DEVELOPER_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "slug": "my-json-formatter",
    "name": "My JSON Formatter",
    "type": "dataFormatter",
    "version": "1.2.0",
    "visibility": "public",
    "content": { "rules": [] }
  }'

Tips for automation

  • Store the key as an encrypted secret and reference it as an environment variable — never commit it to your repository.
  • If a key is ever exposed, revoke it on /developers/api-keys and issue a new one.
  • Bump version on each publish so consumers can tell releases apart.
  • Use visibility to keep work-in-progress plugins private or scoped to your team until they are ready to go public.
Was this page helpful?
Report an issue