Skip to content
Hoody.com

A recipe is a named, reusable selector template that you can invoke later with optional overrides. The endpoints on this page let you manage the recipe store and run saved recipes without re-sending the full selector. Use them to package a frequently used resolution pattern (for example, “default Firefox on Linux x86_64”) once and reuse it across searches, dry-runs, and curl generation.

All endpoints below run on the per-container run service.

List every saved recipe. Each entry is a run_RecipeConfig describing the recipe’s name, optional description, selector template, and the list of selector fields a caller is allowed to override at run time.

This endpoint takes no parameters.

Terminal window
curl -X GET 'https://{projectId}-{containerId}-run-1.{server}.containers.hoody.com/api/v1/run/recipes' \
-H 'accept: application/json'

Fetch a single saved recipe by name.

NameInTypeRequiredDescription
namepathstringYesRecipe name
Terminal window
curl -X GET 'https://{projectId}-{containerId}-run-1.{server}.containers.hoody.com/api/v1/run/recipes/firefox-default' \
-H 'accept: application/json'

Create a new named recipe. The response is the full updated list of recipes.

This endpoint takes no parameters.

FieldTypeRequiredDescription
namestringYesRecipe name
descriptionstringNoHuman-readable description
selector_templateobjectNoPartial selector template (see run_SelectorTemplate)
allowed_overridesarrayNoSelector fields a caller may override when running this recipe. Default: []
Terminal window
curl -X POST 'https://{projectId}-{containerId}-run-1.{server}.containers.hoody.com/api/v1/run/recipes' \
-H 'content-type: application/json' \
-d '{
"name": "firefox-default",
"description": "Default Firefox launcher for Linux x86_64",
"selector_template": {
"app": "firefox",
"os": "linux",
"kind": "gui",
"arch": "amd64",
"pick": "first"
},
"allowed_overrides": ["version", "channel"]
}'

Partially update an existing recipe. Only the fields present in the body are applied; everything else keeps its stored value. The recipe’s name is taken from the path and cannot be changed here.

NameInTypeRequiredDescription
namepathstringYesRecipe name
FieldTypeRequiredDescription
descriptionstringNoHuman-readable recipe description. Send null to clear it
selector_templateobjectNoPartial selector template (see run_SelectorTemplate)
allowed_overridesarrayNoSelector fields a caller may override. Replaces the stored list as a unit
Terminal window
curl -X PATCH 'https://{projectId}-{containerId}-run-1.{server}.containers.hoody.com/api/v1/run/recipes/firefox-default' \
-H 'content-type: application/json' \
-d '{
"description": "Default Firefox launcher for Linux x86_64 (updated)",
"allowed_overrides": ["version", "channel", "variant"]
}'

Remove a saved recipe by name.

NameInTypeRequiredDescription
namepathstringYesRecipe name
Terminal window
curl -X DELETE 'https://{projectId}-{containerId}-run-1.{server}.containers.hoody.com/api/v1/run/recipes/firefox-default'

These two endpoints apply allowed overrides to a saved recipe and resolve it. Search returns the ranked candidate set so you can pick later; run resolves and selects a single candidate, returning either the exact shell command or a generated curl command.

Resolve a recipe to a ranked candidate set after applying allowed overrides. The returned set_id can later be combined with pick=id on a run request for race-free selection.

NameInTypeRequiredDescription
namepathstringYesRecipe name
FieldTypeRequiredDescription
overridesobjectNoPartial selector template. Only fields listed in the recipe’s allowed_overrides are applied
Terminal window
curl -X POST 'https://{projectId}-{containerId}-run-1.{server}.containers.hoody.com/api/v1/run/recipes/firefox-default/search' \
-H 'content-type: application/json' \
-d '{
"overrides": {
"version": "128.0.3"
}
}'

Resolve and select a candidate from a saved recipe after applying allowed overrides. The status field of the response describes the outcome: resolved (candidates returned without a single selection), dry-run (one candidate selected and its shell command returned; hoody-run never executes), printed-curl (an equivalent curl command is returned instead), or error (resolution failed and a message is included).

NameInTypeRequiredDescription
namepathstringYesRecipe name
FieldTypeRequiredDescription
overridesobjectNoPartial selector template. Only fields listed in the recipe’s allowed_overrides are applied
Terminal window
curl -X POST 'https://{projectId}-{containerId}-run-1.{server}.containers.hoody.com/api/v1/run/recipes/firefox-default/run' \
-H 'content-type: application/json' \
-d '{
"overrides": {
"pick": "first"
}
}'