Skip to content

Update Pumpkin Market Listing ​v0.0.2

Update an existing Pumpkin Market listing from a JSON metadata file, direct inputs, or both. The action does not read info.ts, build or upload a WASM file, create listings, or upload screenshots.

See the action guide and API reference on the documentation site.

yaml
steps:
  - uses: filiphsps/pumpkin-plugins/actions/update-pumpkin-market-listing@update-pumpkin-market-listing-v0.0.2
    with:
      plugin-id: ${{ vars.PUMPKIN_MARKET_PLUGIN_ID }}
      metadata-file: .github/market-metadata.json
      api-token: ${{ secrets.MARKET_API_TOKEN }}

The version reference above is this action's first Release Please tag. Action releases are independent from plugin releases and other actions.

Metadata sources ​

The metadata file contains a JSON object using Market field names. Direct inputs can be used alone or layered over the file: the file is the base, and each provided direct input overrides its field. The description input sets the en-US entry in translatedDescriptions while preserving other locales. For example, a patch file can contain:

json
{
  "translatedDescriptions": {
    "en-US": "A description shown on the Market listing"
  },
  "commands": [
    {
      "name": "hello",
      "aliases": ["hi"],
      "permission": "Example:command.hello",
      "description": { "en-US": "Say hello" },
      "display_order": 0
    }
  ]
}

Set exactly one of plugin-name and plugin-id. Name selection uses the same bounded exact-name lookup as the publish action; plugin-id accepts a numeric database ID or public ID.

update-mode: patch sends only supplied metadata fields. update-mode: full requires all Store Listing JSON fields: name, category, sourceLink, youtubeVideoUrl, keywords, translatedDescriptions, isEarlyAccess, and commands. Empty direct inputs are omitted; use the metadata file when a field needs an explicit empty value.

Inputs ​

InputRequiredDefaultDescription
plugin-nameNoExact listing name; set this or plugin-id, but not both
plugin-idNoNumeric database ID or public ID; set this or plugin-name, but not both
metadata-fileNoPath to a JSON object containing listing metadata; combine with direct inputs if needed
display-nameNoListing display name (metadata field name)
descriptionNoDefault en-US listing description; overrides that locale in translated-descriptions
categoryNoListing category
source-linkNoListing source URL
youtube-video-urlNoListing YouTube video URL
keywordsNoComma-separated listing search keywords
translated-descriptionsNoJSON object mapping locale codes to listing descriptions
is-early-accessNoWhether the listing is marked as early access (true or false)
commandsNoJSON array of listing commands with names, optional aliases and permissions, localized descriptions, display order, and IDs
update-modeNopatchMetadata validation mode, patch or full; full requires all listing metadata fields
api-tokenYesMarket API token with listing update permission
api-urlNohttps://market.pumpkinmc.orgPumpkin Market base URL

Outputs ​

OutputDescription
listing-idResolved numeric Market database ID
listing-nameCanonical Market listing name
statusOperation result (success after a completed update)

Development ​

Add inputs and outputs in action.yml, implement the behavior in src/index.mjs, and cover it with tests in src/*.test.mjs. Input and output tables are generated from action.yml; run pnpm readme after changing the action metadata. Read inputs with getInput() from ../../common/src/utils.mjs so hyphenated input names keep matching GitHub's runner environment. The action runs on GitHub's Node 24 runtime and needs no separate build step.

Pumpkin Plugins documentation