Open app
Moonborn — API · marketplace

Create + submit a listing for moderation review

Creates a `draft` listing, submits it for moderation, and synchronously returns the verdict. On `approved` the row becomes `published`; on `rejected` the listing is `unpublished` and a 422 is returned with the reason; on `flagged_for_review` the listing remains `in_review` and the caller surfaces a status banner.

POST/v1/marketplace/listingsscope · Bearer (API key or session JWT)
Request body
FieldTypeDescription
personaIdreqstring
titlereqstring
summaryreqstring
descriptionstring
licensereqstring · "cc_by" | "cc_by_sa" | "cc_by_nc" | "cc_by_nd" | "commercial" | "proprietary"
priceUsdMicrosnumber
tagsstring[]

Responses

201Listing accepted (approved or flagged)
Body
FieldTypeDescription
listingreqobject
listing.listingIdreqstring
listing.slugreqstring
listing.orgIdreqstring
listing.personaIdreqstring
listing.titlereqstring
listing.summaryreqstring
listing.licensereqstring · "cc_by" | "cc_by_sa" | "cc_by_nc" | "cc_by_nd" | "commercial" | "proprietary"
listing.priceUsdMicrosreqnumber
listing.statusreqstring · "draft" | "in_review" | "published" | "unpublished" | "removed"
listing.ratingsAvgreqnumber
listing.ratingsCountreqnumber
listing.installsreqnumber
listing.forksreqnumber
listing.tagsreqstring[]
listing.publishedAtreqstring
listing.updatedAtreqstring
listing.descriptionreqstring
listing.moderationFlagsstring[]
verdictreqobject
verdict.kindreqstring · "approved" | "rejected" | "flagged_for_review"
verdict.reasonreqstring
401Unauthenticated
Body
FieldTypeDescription
errorreqobject
error.codereqstring
error.messagereqstring
403Caller is not a member of the persona owner org
Body
FieldTypeDescription
errorreqobject
error.codereqstring
error.messagereqstring
404Persona not found
Body
FieldTypeDescription
errorreqobject
error.codereqstring
error.messagereqstring
422Validation error or moderation rejection
Body
FieldTypeDescription
errorreqobject
error.codereqstring
error.messagereqstring

Examples

cURL
curl -X POST https://api.moonborn.co/v1/marketplace/listings \
  -H "Authorization: Bearer $MOONBORN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
      "personaId": "<string>",
      "title": "<string>",
      "summary": "<string>",
      "license": "cc_by"
    }'
TypeScript
import Moonborn from '@moonborn/sdk';

const client = new Moonborn({ apiKey: process.env.MOONBORN_API_KEY });

const result = await client.marketplace.publishListing({
  personaId: "<string>",
  title: "<string>",
  summary: "<string>",
  license: "cc_by",
});
Python
import os
from moonborn import Moonborn

client = Moonborn(api_key=os.environ["MOONBORN_API_KEY"])

result = client.marketplace.publish_listing(
    persona_id="<string>",
    title="<string>",
    summary="<string>",
    license="cc_by",
)