Skip to content

Recipes ​

Recipes are reusable install scripts. A recipe defines one or more executable commands to run on an instance, along with typed input fields the user fills in before the run. The platform ships a library of public recipes with owner set to null. You can also create your own scoped to a workspace.

To install a recipe onto a running instance, use the instance commands endpoint.

A recipe object has these fields:

FieldTypeDescription
idstringRecipe ID
namestringDisplay name
categorystringOne of DEFAULT, GAMES, SOFTWARE, INFRASTRUCTURE, AI, MEDIA, TOOLS, DATABASES, MONITORING, PRODUCTIVITY, DEVOPS, AUTOMATION, NETWORK
iconstringURL to the recipe icon, or null
descriptionstringMarkdown description of what the recipe does, or null
ownerobjectOwning workspace, or null for platform-wide recipes. Lists include id and name. Full recipe responses include the full workspace object.
commandsobject[]Commands to execute (see below)
fieldsobject[]Input fields the user fills in before running the recipe (see below)

Command object

FieldTypeDescription
pathstringAbsolute path to the executable on the instance
argsstring[]Arguments passed to the executable. $GG_FIELDS_<FIELD_ID> placeholders are replaced with input values before execution.

Field object

FieldTypeDescription
idstringField identifier. Its uppercase form builds the $GG_FIELDS_<ID> placeholder used in command arguments.
labelstringHuman-readable field label
descriptionstringHelp text shown alongside the input
typestringInput type: TEXT, PASSWORD, NUMBER, EMAIL, BOOLEAN
requiredbooleanWhether the field must be filled in before the recipe can run

List endpoints return only the summary fields (id, name, category, icon, description, owner). The full commands and fields arrays appear on the single-recipe fetch.

Search workspace recipes ​

GET/v1/workspaces/{wid}/recipesSearch workspace recipes

Returns recipes available to a workspace. This includes both platform-wide recipes and recipes owned by the workspace.

Path parameters

NameTypeDescription
widstringWorkspace ID

Query parameters

NameTypeDescription
qstringQuick search by name or ID
idstring[]Filter to specific recipe IDs
ownerstring[]Filter by owning workspace ID
namestringFilter by name
descriptionstringSubstring filter on description
categorystringOne of the category values listed above

All filters are optional.

Plus the shared pagination parameters. Returns 200 OK with a KeysetResultRecipeListView containing recipe summary objects and pagination fields: limit, page, total, has_next, has_previous, after, and before.

bash
curl "https://api.galaxygate.net/v1/workspaces/42/recipes?category=INFRASTRUCTURE" \
  -H "Authorization: Bearer $GALAXYGATE_TOKEN" \
  -A 'curl/8.5'

Create a workspace recipe ​

POST/v1/workspaces/{wid}/recipesCreate a workspace recipe

Creates a recipe owned by the given workspace. Responds 201 Created.

Path parameters

NameTypeDescription
widstringWorkspace ID

Request body

FieldTypeRequiredDescription
namestringyesRecipe name (4-32 characters)
categorystringyesOne of the category values listed above
commandsobject[]yesNonempty command list. Each command requires path and args.
fieldsobject[]yesInput field definitions. Use [] when no inputs are needed. Each field has id, label, description, type, and required.
descriptionstringDescription (1-4096 characters), or null
iconstringIcon URL, or null
bash
curl -X POST https://api.galaxygate.net/v1/workspaces/42/recipes \
  -H "Authorization: Bearer $GALAXYGATE_TOKEN" \
  -H "Content-Type: application/json" \
  -A 'curl/8.5' \
  -d '{
    "name": "My deploy script",
    "category": "DEVOPS",
    "description": "Runs the project deploy script.",
    "commands": [
      { "path": "/opt/scripts/deploy.sh", "args": ["$GG_FIELDS_BRANCH"] }
    ],
    "fields": [
      { "id": "BRANCH", "label": "Branch", "description": "Git branch to deploy", "type": "TEXT", "required": true }
    ]
  }'

Returns 201 Created with the full Recipe object.

Fetch a recipe ​

GET/v1/recipes/{rid}Fetch a recipe

Returns the full recipe object including commands and fields.

Path parameters

NameTypeDescription
ridstringRecipe ID

Returns 200 OK with the full Recipe object.

Update a recipe ​

PATCH/v1/recipes/{rid}Update a recipe

Updates a recipe. Every field is optional. Send only what you want to change.

Path parameters

NameTypeDescription
ridstringRecipe ID

Request body

FieldTypeDescription
namestringNew name (4-32 characters)
iconstringNew icon URL
categorystringOne of the category values listed above
descriptionstringNew description (1-4096 characters)
commandsobject[]Replacement nonempty command list. Each command requires path and args.
fieldsobject[]Replacement field list with the same field objects as creation

Returns 200 OK with the updated Recipe object.

Delete a recipe ​

DELETE/v1/recipes/{rid}Delete a recipe

Deletes a recipe synchronously.

Path parameters

NameTypeDescription
ridstringRecipe ID

Returns 204 No Content.