Skip to content
Select themeSelect language

`POST /api/marketplace/scripts/publish` -- publish a workspace Script as a `kind='script'` marketplace item. Workspace-admin only. Returns the created item.

POST
/api/marketplace/scripts/publish
curl --request POST \
--url https://example.com/api/marketplace/scripts/publish \
--header 'Content-Type: application/json' \
--data '{ "categories": [ "example" ], "description": "example", "name": "example", "pricing": { "amount_minor": 1, "currency": "example", "model": "example" }, "script_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "slug": "example", "summary": "example", "tags": [ "example" ], "version": "example" }'
Media typeapplication/json

Body for POST /api/marketplace/scripts/publish (Issue #279 / ADR 0034 P2). version defaults to “1.0.0”; categories / tags default to empty.

object
categories
Array<string> | null
description
string | null
name
required
string
pricing
One of:
null
script_id
required
string format: uuid
slug
required
string
summary
string | null
tags
Array<string> | null
version
string | null
Examplegenerated
{
"categories": [
"example"
],
"description": "example",
"name": "example",
"pricing": {
"amount_minor": 1,
"currency": "example",
"model": "example"
},
"script_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"slug": "example",
"summary": "example",
"tags": [
"example"
],
"version": "example"
}
Media typeapplication/json

A catalog item — an app, script, bundle, or runner offer listing. Scoped to a source via source_id. The (source_id, slug) pair is unique.

object
categories
required
Array<string>
created_at
required
string format: date-time
deprecated
required
boolean
description
string | null
framework

ADR 0030 W6 — build framework of the item’s latest non-withdrawn version (plain | react | svelte). Populated by list_items / get_item via a correlated subquery; absent in queries that do not project it (e.g. upsert_item RETURNING), where #[sqlx(default)] supplies "plain". Surfaces a framework badge on browse cards. Runtime String; the spec narrows it to the closed [MarketplaceFramework].

string
Allowed values: plain react svelte
id
required
string format: uuid
install_count

#358 — public install popularity: the number of DISTINCT workspaces that have installed this item (marketplace_installs). Populated by list_items / get_item via a correlated subquery mirroring rating; absent (None) in projections that do not select it, where #[sqlx(default)] supplies None.

integer | null format: int64
kind
required
string
name
required
string
price
One of:
null
publisher
One of:
null
rating
One of:
null
seller_profile_id
string | null format: uuid
slug
required
string
source_id
required
string format: uuid
summary
string | null
tags
required
Array<string>
updated_at
required
string format: date-time
verified
required
boolean
Example
{
"framework": "plain"
}