Flows
sfp server API reference for Flows: 41 endpoints.
/sfp/api/flows/approvals/complianceReturns immutable approval events from sfp_approval_audit. Supports JSON (paged) and CSV (full dataset) formats for yearly compliance reports.
Authorization
access-token In: header
Query Parameters
Filter by approval lifecycle status
Value in
- "requested"
- "approved"
- "rejected"
- "expired"
- "stale"
Filter by task type
Filter by environment
Repository identifier used to scope the compliance query. Required — auditors must query one repository at a time to prevent cross-repo data exposure.
Filter by domain
Filter by requester email
Filter by resolver email
ISO 8601 date range start (inclusive)
ISO 8601 date range end (exclusive)
Shortcut for yearly reports — overrides from/to
Max rows per page (JSON only, ignored for CSV)
100Offset into result set
0Response format
"json"Value in
- "json"
- "csv"
Enrich release approvals with pre-computed changelog data
falseResponse Body
curl -X GET "https://example.com/sfp/api/flows/approvals/compliance?repositoryIdentifier=flxbl-io%2Fsf-core"/sfp/api/flows/internal/register-childInternal endpoint for Hatchet subflows to register themselves with the server.
When a parent flow spawns child flows, each child calls this endpoint on startup to create a TaskExecution record linked to its parent.
Note: This endpoint is designed for internal use and requires application token auth.
Authorization
access-token In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/sfp/api/flows/internal/register-child" \ -H "Content-Type: application/json" \ -d '{ "parentTaskExecutionId": "01234567-89ab-cdef-0123-456789abcdef", "taskType": "build-domain", "flowPath": "build-domain", "repositoryIdentifier": "flxbl-io/sf-core" }'{ "executionId": "01234567-89ab-cdef-0123-456789abcdef", "approvalControls": { "skipApproval": false, "approvers": [ "release-manager@example.com" ] }}/sfp/api/flows/internal/register-scheduledInternal endpoint for scheduled flows to register themselves with the server.
When a schedule triggers a flow (cron), the flow calls this endpoint on startup to create a TaskExecution record.
Note: This endpoint is designed for internal use and requires application token auth.
Authorization
access-token In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/sfp/api/flows/internal/register-scheduled" \ -H "Content-Type: application/json" \ -d '{ "hatchetRunId": "0193f8a9-7c53-7c71-8f0d-123456789abc", "taskType": "monitor-pool", "flowPath": "monitor-pool", "repositoryIdentifier": "flxbl-io/sf-core", "schedulePath": "pool-monitor-flxbl-io-sf-core-devpool" }'{ "executionId": "01234567-89ab-cdef-0123-456789abcdef"}/sfp/api/flows/internal/{id}/metadataInternal endpoint for flows to store metadata on their parent task execution.
Merges the provided result object into the existing execution result without replacing it.
Note: This endpoint is designed for internal use and requires application token auth.
Authorization
access-token In: header
Path Parameters
TaskExecution UUID
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
curl -X PATCH "https://example.com/sfp/api/flows/internal/string/metadata" \ -H "Content-Type: application/json" \ -d '{ "result": { "checkRunId": "12345", "repositoryIdentifier": "owner/repo" } }'/sfp/api/flows/internal/{id}/reconcile-checkInternal endpoint a rerun child flow calls when it reaches a terminal state.
Re-running a single failed child domain in isolation does NOT re-run the parent orchestrator's finalize step, so the parent's GitHub check, PR label, and persisted status stay stale. This endpoint re-derives the aggregated outcome from the parent's latest-in-lineage children — the same derivation the UI shows — and writes it back to all three. No-op when the children are not all terminal.
Note: Designed for internal use and requires application token auth.
Authorization
access-token In: header
Path Parameters
Parent (orchestrator) TaskExecution UUID
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
curl -X POST "https://example.com/sfp/api/flows/internal/string/reconcile-check" \ -H "Content-Type: application/json" \ -d '{ "reportingExecutionId": "5925f421-24dd-4337-bc5e-f625f27c7701", "domainName": "orde-origination-lwc", "status": "success" }'/sfp/api/flows/internal/{id}/render-validation-checkInternal endpoint the pr-validate finalize step calls to write the parent "PR Validation" check. The worker passes its authoritative per-domain results (including the review environment each domain validated against) and the server builds the rich check body (review-env rollup + status banner) — the same builder the isolated-rerun reconcile path uses, so the two never drift.
Writes the CHECK only; the worker still owns PR labels, persisted execution status, and the callback.
Note: Designed for internal use and requires application token auth.
Authorization
access-token In: header
Path Parameters
Parent (orchestrator) TaskExecution UUID
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
curl -X POST "https://example.com/sfp/api/flows/internal/string/render-validation-check" \ -H "Content-Type: application/json" \ -d '{ "domainResults": [ { "domainName": "core", "status": "success" } ] }'/sfp/api/flows/internal/{id}/reconcile-build-checkInternal endpoint a rerun build-domain or execute-release child flow calls
when it reaches a terminal state.
Re-running a single child in isolation does NOT re-run the parent build-on-merge orchestrator's summarize step, so the "Build on Merge" commit check and the persisted status stay stale. This endpoint re-derives the outcome from the parent's latest-in-lineage children's stored result payloads (per-domain build results + deployment results) and writes the check + persisted status. No-op when the children are not all terminal. No PR labels — build-on-merge is a commit check.
This is the result-based counterpart to /reconcile-check (pr-validate, #1274).
Note: Designed for internal use and requires application token auth.
Authorization
access-token In: header
Path Parameters
Parent (build-on-merge orchestrator) TaskExecution UUID
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
curl -X POST "https://example.com/sfp/api/flows/internal/string/reconcile-build-check" \ -H "Content-Type: application/json" \ -d '{}'/sfp/api/flows/internal/track-lock-runInternal endpoint for Hatchet workflows to register which mutex lock they hold. Used by the lock-run-cleanup cron to release orphaned locks when a workflow is cancelled.
Note: This endpoint is designed for internal use and requires application token auth.
Authorization
access-token In: header
Response Body
curl -X POST "https://example.com/sfp/api/flows/internal/track-lock-run"/sfp/api/flows/internal/approvals/{id}/expireCalled by Hatchet workers when the approval gate's waitFor times out. Records the expiry in the audit trail immediately rather than waiting for cron cleanup.
Note: This endpoint is designed for internal use and requires application token auth.
Authorization
access-token In: header
Path Parameters
Task ID (Hatchet Run ID)
Response Body
curl -X POST "https://example.com/sfp/api/flows/internal/approvals/string/expire"/sfp/api/flows/runsReturns a unified view of recent task executions across both flow engine and CI/CD pipelines.
Note: Scheduled (cron-triggered) runs are excluded by default. Pass includeScheduled=true to include them.
Internal runs — the ones the server dispatches to serve a UI request, such as build-impact previews —
are likewise excluded; pass includeInternal=true to include them.
Scoping
- repositoryIdentifier is optional. When supplied, the query is scoped to that project; when omitted, it spans every project the caller can access (tenant-wide view, used by the cross-project Ops surface).
Available Filters
| Filter | Required | Description | Example |
|---|---|---|---|
repositoryIdentifier | No | Repository to query (omit for tenant-wide) | acme/salesforce-app |
executionMode | No | Filter by execution source | flow, cicd |
category | No | Filter by task category (comma-separated for multiple) | access, environment,release |
taskType | No | Filter by specific task type (comma-separated for multiple) | request-elevated-privileges |
status | No | Filter by run status (comma-separated for multiple) | Failed,Cancelled |
flowPath | No | Filter by flow path (partial match) | f/sfp/access/ |
triggeredBy | No | Filter by trigger source (comma-separated for multiple) | user@company.com, cron |
includeScheduled | No | Include scheduled (cron) runs (default: false) | true |
includeInternal | No | Include internal, server-dispatched runs (default: false) | true |
since | No | Filter by time (ISO 8601 or relative) | 24h, 7d, 2024-01-15T00:00:00Z |
workItemKey | No | Filter by work item key; accepts comma-separated values | 123,456 (issue/PR numbers), abc123 (commit SHA) |
workItemType | No | Filter by work item type | github-issue, github-pr, github-commit, ado-commit |
All filters are applied at the database level, so totalCount and pagination reflect the filtered result set.
Authorization
access-token In: header
Query Parameters
Repository identifier to scope the query (e.g., "owner/repo" for GitHub, "org/project/repo" for Azure DevOps). Omit to list runs across every project the caller can access — used by cross-project Ops surfaces.
Maximum number of results to return
1 <= value <= 10050Filter by execution mode. Use "flow" for flow engine executions, "cicd" for GitHub Actions/Azure Pipelines executions.
Value in
- "flow"
- "cicd"
Filter by task category. Categories group related task types together. Accepts a comma-separated list for multi-value filtering (e.g., "access,release").
Value in
- "access"
- "environment"
- "release"
- "package"
- "pool"
- "testing"
- "build"
- "repository"
- "scheduled"
- "cascade"
- "other"
Filter by task type identifier (e.g., "request-elevated-privileges", "build-packages"). Accepts a comma-separated list for multi-value filtering.
Filter by run status. Accepts display statuses ("Waiting", "Running", "Completed", "Partial", "Failed", "Cancelled") or raw statuses ("dispatched", "running", ...). Accepts a comma-separated list for multi-value filtering.
Filter by flow path (supports partial matching)
Filter by work item key (issue number, PR number, commit SHA, or ADO work item ID). Accepts a comma-separated list for multi-value filtering.
Filter by work item type to show only executions triggered by specific work item sources
Value in
- "github-issue"
- "github-pr"
- "github-commit"
- "ado-workitem"
- "ado-commit"
- "gitlab-commit"
Filter executions triggered since this time. Accepts ISO 8601 format (e.g., "2024-01-15T00:00:00Z") or relative time (e.g., "24h", "7d").
Filter by who/what triggered the execution (e.g., email, "cron", "api", "app:token-name"). Accepts a comma-separated list for multi-value filtering.
Include scheduled (cron-triggered) runs in the results. By default, scheduled runs are excluded.
falseInclude internal runs the server dispatches to serve a UI request (e.g. build-impact previews). By default, internal runs are excluded.
falsePage number for pagination (1-based)
1 <= value1Filter runs to a specific date (YYYY-MM-DD). Returns only runs created on this date.
Response Body
application/json
curl -X GET "https://example.com/sfp/api/flows/runs"{ "runs": [ { "id": "01234567-89ab-cdef-0123-456789abcdef", "projectIdentifier": "flxbl-io/sf-core", "flowPath": "f/sfp/sandbox-monitoring/monitor-pool", "status": "Running", "success": {}, "createdAt": "string", "startedAt": "string", "durationMs": 0, "triggeredBy": "string", "taskType": "request-elevated-privileges", "category": "access", "executionMode": "flow", "cicdRunUrl": "string", "workItemRef": { "type": "github-issue", "key": "123", "url": "https://github.com/owner/repo/issues/123", "repository": "owner/repo", "organization": "string", "project": "string" }, "rerunOfExecutionId": "string", "rerunType": "rerun" } ], "count": 0, "totalCount": 0, "page": 0}/sfp/api/flows/runRuns a flow by looking up its definition from the registry and dispatching to the flow engine.
The payload must contain an 'id' field that identifies the flow type (e.g., 'request-elevated-privileges').
Important: Unlike CLI, file-based configuration is NOT supported. All configuration (e.g., accessConfig) must be provided inline in the payload.
Authorization
access-token In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/sfp/api/flows/run" \ -H "Content-Type: application/json" \ -d '{ "payload": { "id": "request-elevated-privileges", "username": "user@company.com", "targetOrg": "prod@company.com", "accessLevel": "admin", "durationMinutes": 60, "accessConfig": { "levels": { "admin": { "permissionSets": [ "System_Administrator" ] } } } } }'{ "id": "01234567-89ab-cdef-0123-456789abcdef", "taskType": "request-elevated-privileges", "status": "started", "triggeredAt": "string"}/sfp/api/flows/typesReturns the flow types registered in the flow definition registry. Internal flow types — the ones the server dispatches to serve a UI request rather than on a user action — are excluded unless includeInternal=true is passed.
Authorization
access-token In: header
Query Parameters
Include internal, server-dispatched flow types (default: false)
Response Body
application/json
curl -X GET "https://example.com/sfp/api/flows/types"{ "taskTypes": [ { "id": "request-elevated-privileges", "name": "Request Elevated Privileges", "description": "string", "category": "access", "executionMode": "flow", "internal": false, "parameters": [ { "name": "username", "description": "The username of the user to elevate", "type": "string", "required": true, "default": {}, "enum": [ "string" ], "properties": [ {} ], "items": { "type": "string", "description": "string", "enum": [ "string" ], "properties": [ {} ], "items": {} } } ] } ], "count": 0}/sfp/api/flows/types/statusReturns the registered flow types with their enabled/disabled state for the specified project. Internal flow types are omitted — they are dispatched by the server as part of another feature, so there is nothing for a project to enable or disable.
Authorization
access-token In: header
Query Parameters
Repository identifier (e.g., "owner/repo")
Response Body
application/json
curl -X GET "https://example.com/sfp/api/flows/types/status?repositoryIdentifier=string"{ "flowTypes": [ { "id": "build-on-merge", "name": "Build on Merge", "enabled": true } ], "repositoryIdentifier": "flxbl-io/sf-core"}/sfp/api/flows/types/{taskTypeId}Returns detailed information about a specific flow type including its parameters.
Authorization
access-token In: header
Path Parameters
Flow type identifier (e.g., request-elevated-privileges)
Response Body
application/json
curl -X GET "https://example.com/sfp/api/flows/types/string"{ "id": "request-elevated-privileges", "name": "Request Elevated Privileges", "description": "string", "category": "access", "executionMode": "flow", "internal": false, "parameters": [ { "name": "username", "description": "The username of the user to elevate", "type": "string", "required": true, "default": {}, "enum": [ "string" ], "properties": [ {} ], "items": { "type": "string", "description": "string", "enum": [ "string" ], "properties": [ {} ], "items": {} } } ]}/sfp/api/flows/types/{taskTypeId}/disablePrevents the specified flow type from being triggered by webhooks or API calls for this project.
Authorization
access-token In: header
Path Parameters
Flow type identifier (e.g., build-on-merge)
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
curl -X POST "https://example.com/sfp/api/flows/types/string/disable" \ -H "Content-Type: application/json" \ -d '{ "repositoryIdentifier": "flxbl-io/sf-core" }'/sfp/api/flows/types/{taskTypeId}/enableRe-enables the specified flow type for this project, allowing it to be triggered by webhooks or API calls.
Authorization
access-token In: header
Path Parameters
Flow type identifier (e.g., build-on-merge)
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
curl -X POST "https://example.com/sfp/api/flows/types/string/enable" \ -H "Content-Type: application/json" \ -d '{ "repositoryIdentifier": "flxbl-io/sf-core" }'/sfp/api/flows/types/{taskTypeId}/overrideRoutes the specified flow type to a different flow type for this project. For example, override "build-on-merge" to route to "build-on-merge-custom".
Authorization
access-token In: header
Path Parameters
Original flow type identifier to override (e.g., build-on-merge)
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
curl -X POST "https://example.com/sfp/api/flows/types/string/override" \ -H "Content-Type: application/json" \ -d '{ "repositoryIdentifier": "flxbl-io/sf-core", "overrideFlowTypeId": "build-on-merge-custom" }'/sfp/api/flows/types/{taskTypeId}/overrideRemoves the override for the specified flow type, reverting to the default flow.
Authorization
access-token In: header
Path Parameters
Flow type identifier to remove override for
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
curl -X DELETE "https://example.com/sfp/api/flows/types/string/override" \ -H "Content-Type: application/json" \ -d '{ "repositoryIdentifier": "flxbl-io/sf-core" }'/sfp/api/flows/executions/{id}/statusUpdates the status of a task execution. This endpoint is primarily used by CI/CD pipelines (GitHub Actions, Azure DevOps) to report back the status of tasks that were dispatched to them via POST /flows/run.
Authorization
access-token In: header
Path Parameters
Task execution ID (returned when task was dispatched)
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/sfp/api/flows/executions/string/status" \ -H "Content-Type: application/json" \ -d '{ "status": "running" }'{ "acknowledged": true, "id": "string", "status": "string"}/sfp/api/flows/approvalsAuthorization
access-token In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/sfp/api/flows/approvals" \ -H "Content-Type: application/json" \ -d '{ "taskId": "01234567-89ab-cdef-0123-456789abcdef", "requestedBy": "john.doe@example.com", "context": {} }'{ "id": "string", "requestedBy": "string", "requestedAt": "string", "expiresAt": "string", "timeoutHours": 0, "approvers": [ "string" ], "approverMentions": [ "string" ], "context": {}, "status": "pending", "resolvedBy": "string", "resolvedAt": "string", "parentExecution": { "id": "string", "taskType": "request-a-release-to-release-envs", "status": "string", "triggeredBy": "string", "workItemRef": {} }}/sfp/api/flows/approvals/pendingAuthorization
access-token In: header
Query Parameters
Repository identifier used to scope pending requests
Response Body
curl -X GET "https://example.com/sfp/api/flows/approvals/pending"/sfp/api/flows/approvals/historyReturns repository-scoped approval history from the authoritative operational approval store.
Authorization
access-token In: header
Query Parameters
Repository identifier used to scope approved requests
Maximum number of rows to return
1 <= value <= 10050Number of rows to skip
0 <= value0Response Body
application/json
curl -X GET "https://example.com/sfp/api/flows/approvals/history?repositoryIdentifier=acme%2Fsalesforce-app"{ "approvals": [ { "id": "string", "requestedBy": "string", "requestedAt": "string", "expiresAt": "string", "timeoutHours": 0, "approvers": [ "string" ], "approverMentions": [ "string" ], "context": {}, "status": "pending", "resolvedBy": "string", "resolvedAt": "string", "parentExecution": { "id": "string", "taskType": "request-a-release-to-release-envs", "status": "string", "triggeredBy": "string", "workItemRef": {} } } ], "totalCount": 0, "limit": 0, "offset": 0, "windowDays": 30}/sfp/api/flows/approvals/by-github/{repositoryIdentifier}/{issueNumber}Authorization
access-token In: header
Path Parameters
Repository identifier (e.g., owner/repo)
Issue or PR number
Response Body
application/json
curl -X GET "https://example.com/sfp/api/flows/approvals/by-github/string/string"{ "id": "string", "requestedBy": "string", "requestedAt": "string", "expiresAt": "string", "timeoutHours": 0, "approvers": [ "string" ], "approverMentions": [ "string" ], "context": {}, "status": "pending", "resolvedBy": "string", "resolvedAt": "string", "parentExecution": { "id": "string", "taskType": "request-a-release-to-release-envs", "status": "string", "triggeredBy": "string", "workItemRef": {} }}/sfp/api/flows/approvals/by-slack/{channel}/{threadTs}Authorization
access-token In: header
Path Parameters
Slack channel ID
Thread timestamp
Response Body
application/json
curl -X GET "https://example.com/sfp/api/flows/approvals/by-slack/string/string"{ "id": "string", "requestedBy": "string", "requestedAt": "string", "expiresAt": "string", "timeoutHours": 0, "approvers": [ "string" ], "approverMentions": [ "string" ], "context": {}, "status": "pending", "resolvedBy": "string", "resolvedAt": "string", "parentExecution": { "id": "string", "taskType": "request-a-release-to-release-envs", "status": "string", "triggeredBy": "string", "workItemRef": {} }}/sfp/api/flows/approvals/by-azure-devopsFind a pending approval associated with an Azure DevOps work item callback.
Authorization
access-token In: header
Query Parameters
Repository identifier in format org/project/repo
Work item ID
Response Body
application/json
curl -X GET "https://example.com/sfp/api/flows/approvals/by-azure-devops?repositoryIdentifier=flxbl-io%2Fsf-core%2Fsf-core&workItemId=123"{ "id": "string", "requestedBy": "string", "requestedAt": "string", "expiresAt": "string", "timeoutHours": 0, "approvers": [ "string" ], "approverMentions": [ "string" ], "context": {}, "status": "pending", "resolvedBy": "string", "resolvedAt": "string", "parentExecution": { "id": "string", "taskType": "request-a-release-to-release-envs", "status": "string", "triggeredBy": "string", "workItemRef": {} }}/sfp/api/flows/users/email-by-github/{username}Authorization
access-token In: header
Path Parameters
GitHub username
Response Body
curl -X GET "https://example.com/sfp/api/flows/users/email-by-github/string"/sfp/api/flows/approvals/{id}Accepts TaskExecution UUID or Hatchet Run ID.
For orchestrator flows, returns an enhanced response with approval status for each child flow.
Authorization
access-token In: header
Path Parameters
ID (TaskExecution UUID or Hatchet Run ID)
Response Body
application/json
curl -X GET "https://example.com/sfp/api/flows/approvals/string"{ "id": "string", "requestedBy": "string", "requestedAt": "string", "expiresAt": "string", "timeoutHours": 0, "approvers": [ "string" ], "approverMentions": [ "string" ], "context": {}, "status": "pending", "resolvedBy": "string", "resolvedAt": "string", "parentExecution": { "id": "string", "taskType": "request-a-release-to-release-envs", "status": "string", "triggeredBy": "string", "workItemRef": {} }}/sfp/api/flows/approvals/{id}/approveAccepts TaskExecution UUID or Hatchet Run ID.
Authorization
access-token In: header
Path Parameters
ID (TaskExecution UUID or Hatchet Run ID)
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/sfp/api/flows/approvals/string/approve" \ -H "Content-Type: application/json" \ -d '{ "approver": "John Doe", "approverEmail": "john.doe@example.com" }'{ "id": "string", "requestedBy": "string", "requestedAt": "string", "expiresAt": "string", "timeoutHours": 0, "approvers": [ "string" ], "approverMentions": [ "string" ], "context": {}, "status": "pending", "resolvedBy": "string", "resolvedAt": "string", "parentExecution": { "id": "string", "taskType": "request-a-release-to-release-envs", "status": "string", "triggeredBy": "string", "workItemRef": {} }}/sfp/api/flows/approvals/{id}/rejectAccepts TaskExecution UUID or Hatchet Run ID.
Authorization
access-token In: header
Path Parameters
ID (TaskExecution UUID or Hatchet Run ID)
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/sfp/api/flows/approvals/string/reject" \ -H "Content-Type: application/json" \ -d '{ "rejector": "Jane Smith", "rejectorEmail": "jane.smith@example.com" }'{ "id": "string", "requestedBy": "string", "requestedAt": "string", "expiresAt": "string", "timeoutHours": 0, "approvers": [ "string" ], "approverMentions": [ "string" ], "context": {}, "status": "pending", "resolvedBy": "string", "resolvedAt": "string", "parentExecution": { "id": "string", "taskType": "request-a-release-to-release-envs", "status": "string", "triggeredBy": "string", "workItemRef": {} }}/sfp/api/flows/schedulesReturns Hatchet cron schedules with their current enabled/disabled state. Optionally filter by repositoryIdentifier. System schedules are hidden by default.
Authorization
access-token In: header
Query Parameters
Filter schedules by repository identifier
Include system-level schedules hidden from normal schedule management
Response Body
curl -X GET "https://example.com/sfp/api/flows/schedules"/sfp/api/flows/schedules/{cronName}/pauseDisables a cron schedule without deleting it. The schedule can be resumed later.
Authorization
access-token In: header
Path Parameters
The cron schedule name
Response Body
curl -X POST "https://example.com/sfp/api/flows/schedules/string/pause"/sfp/api/flows/schedules/{cronName}/resumeRe-enables a previously paused cron schedule.
Authorization
access-token In: header
Path Parameters
The cron schedule name
Response Body
curl -X POST "https://example.com/sfp/api/flows/schedules/string/resume"/sfp/api/flows/schedules/{cronName}Updates the cron expression for an existing schedule. The schedule is recreated with the new expression while preserving its input.
Authorization
access-token In: header
Path Parameters
The cron schedule name
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
curl -X PATCH "https://example.com/sfp/api/flows/schedules/string" \ -H "Content-Type: application/json" \ -d '{ "workflowName": "monitor-pool", "expression": "*/15 * * * *" }'/sfp/api/flows/{id}/childrenReturns all child executions for an orchestrator flow with live status enrichment. Children are found via parentExecutionId relationship.
Authorization
access-token In: header
Path Parameters
Parent execution ID
Response Body
curl -X GET "https://example.com/sfp/api/flows/string/children"/sfp/api/flows/{id}/cancel-childrenCancels all running child executions without affecting the parent. Useful for failure handlers that need to clean up children while preserving the parent's error state.
Authorization
access-token In: header
Path Parameters
Parent execution ID
Response Body
curl -X POST "https://example.com/sfp/api/flows/string/cancel-children"/sfp/api/flows/{id}/rerunCreates a new execution using the original payload from the specified execution. Supports both parent and child executions. For child executions, the rerun is linked to the same parent.
Optional payloadOverrides are shallow-merged into the original payload
before dispatching. Task-level generic-dispatch authorization is re-applied to
the authenticated caller before any rerun is dispatched.
Pass debug: true to rerun with debug logging enabled — the dispatched flow
(and, for orchestrators, its child flows) run sfp at TRACE verbosity, mirroring
GitHub Actions' "Re-run with debug logging". Debug is not persisted onto the
execution payload, so a later rerun is normal unless debug is requested again.
Only flow-mode executions in terminal states (completed, failed, cancelled) can be rerun.
Authorization
access-token In: header
Path Parameters
TaskExecution UUID to rerun
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/sfp/api/flows/string/rerun" \ -H "Content-Type: application/json" \ -d '{}'{ "id": "string", "taskType": "string", "status": "string", "triggeredAt": "string", "rerunOfExecutionId": "string", "restartFromStepId": "string"}/sfp/api/flows/{id}Returns execution details for a task. Accepts TaskExecution UUID or Hatchet Run ID.
For flow executions, the response is enriched with live status from the flow engine. For orchestrator flows, the response includes aggregated status from all child flows.
Authorization
access-token In: header
Path Parameters
ID (TaskExecution UUID or Hatchet Run ID)
Response Body
curl -X GET "https://example.com/sfp/api/flows/string"/sfp/api/flows/{id}/logsReturns logs for a flow execution.
For orchestrator flows, returns an enhanced response with logs for each child flow.
Authorization
access-token In: header
Path Parameters
ID (TaskExecution UUID or Hatchet Run ID)
Query Parameters
Include sparse workflow section marker timestamps for log viewers
Response Body
curl -X GET "https://example.com/sfp/api/flows/string/logs"/sfp/api/flows/{id}/logs/streamReturns incremental log updates for a flow execution. Use for live log streaming.
Authorization
access-token In: header
Path Parameters
ID (TaskExecution UUID or Hatchet Run ID)
Query Parameters
Current log offset
Response Body
curl -X GET "https://example.com/sfp/api/flows/string/logs/stream"/sfp/api/flows/{id}/logs/downloadDownloads all logs for a flow execution as a ZIP archive.
The archive contains:
- console.log — Hatchet execution logs
- {source}/{group}.log — VictoriaLogs engine logs grouped by log_source and log_group
- For orchestrator flows: separate directories per child flow
Authorization
access-token In: header
Path Parameters
ID (TaskExecution UUID or Hatchet Run ID)
Response Body
curl -X GET "https://example.com/sfp/api/flows/string/logs/download"/sfp/api/flows/{id}/cancelCancels an execution by ID. Works for both flow and CI/CD executions.
- Flow executions: Cancels the run in Hatchet and rejects any pending approval
- CI/CD executions: Calls the platform's API to cancel the running workflow/pipeline
- Orchestrator flows: Cancels all child flows as well
Authorization
access-token In: header
Path Parameters
ID (TaskExecution UUID or Hatchet Run ID)
Response Body
curl -X POST "https://example.com/sfp/api/flows/string/cancel"