Skip to main content
Function endpoints live under /:project/api/functions and inherit project permissions. Most calls require at least functions.read or functions.write permissions for the slug.

List & create

GET /:project/api/functions

Returns all functions you can see inside the project. Each entry contains { id, name, slug, description, version, created, updated } and, when you have read access to the current version, { metadata, parameters, outputs, outputType, sourcePipelineId, sourcePipelineVersionId }.

PUT /:project/api/functions

  • Body
  • Behavior – validates the slug, compiles the pipeline source (@silyze/browsary-pipeline), stores compiler errors (if any), creates the first function version, and sets it as current_version_id.

Read / update / delete

Import from a pipeline

POST /:project/api/functions/{functionId}/import

Copies the source from an existing pipeline version into a new function version.
  • Body
Any field you omit falls back to the previous function version (if it exists). The response is { version: "<new function version id>", errors: [ ...compiler errors... ] }.

Execute a function

POST /:project/api/functions/slug/{slug}/execute

  • Body{ "args": { "...": "function parameters" } }.
  • Auth – any identity with read access to the function and execute permission for the underlying pipeline version.
  • Response
The codebase also includes a /functions/by-id/execute route, but it currently expects a slug parameter. Prefer the slug-based endpoint above for reliable behavior.