Workflows
Workspaces
Lists all Workspaces with Filtering and Sorting Options. Supports VCS Providers Integration.
0
25
List of Workspaces Retrieved Successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
POST /v2/workspaces/search HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 614
{
"projection": [
"text"
],
"searchValue": "text",
"filters": {
"workspaceName": [
"production-infra"
],
"repositories": [
"org/repo-name"
],
"ciTool": [
"github-actions"
],
"labels": [
"text"
],
"status": [
"plan_success"
],
"isManagedWorkflow": true,
"vcsType": [
"github"
],
"$or": {
"workspaceName": [
"production-infra"
],
"repositories": [
"org/repo-name"
],
"ciTool": [
"github-actions"
],
"labels": [
"text"
],
"status": [
"plan_success"
],
"isManagedWorkflow": true,
"vcsType": [
"github"
]
}
},
"sort": {
"lastRunTime": {
"order": -1
},
"workspaceName": {
"order": -1
},
"repository": {
"order": -1
},
"terraformVersion": {
"order": -1
},
"lastRunStatus": {
"order": -1
},
"ciTool": {
"order": -1
}
}
}
[
{
"id": "507f1f77bcf86cd799439011",
"accountId": "507f1f77bcf86cd799439011",
"createdAt": "2025-08-19T22:12:28.332Z",
"updatedAt": "2025-08-19T22:12:28.332Z",
"workspaceId": "507f1f77bcf86cd799439012",
"workspaceName": "production-infra",
"repo": "org/repo-name",
"repoUrl": "https://github.com/org/repo-name",
"vcsType": "github",
"runnerType": "github-actions",
"lastRunStatus": {
"description": "text"
},
"lastApplyTime": "2025-08-19T22:12:28.332Z",
"lastPlanTime": "2025-08-19T22:12:28.332Z",
"lastRunTime": "2025-08-19T22:12:28.332Z",
"iacType": "terraform",
"iacTypeVersion": "1.0.11",
"backendSummary": {
"backendType": "s3",
"backendConfig": {
"bucket": "terraform-state",
"key": "prod/terraform.tfstate"
},
"iacStackId": "stack-123",
"managedResourceCount": 42
},
"labels": [
"prod",
"terraform"
],
"runsCount": 5,
"isWorkflowManaged": true,
"guardrails": [
"cost",
"security"
]
}
]
Deletes a specific workspace and its associated data
Unique identifier of the workspace
0e01b22c-7f4b-5e0f-b1c1-faff031977f8
Pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
Workspace deleted successfully
Bad Request Error
Unauthorized Error
Not Found Error
Internal Server Error
DELETE /v2/workspaces/{workspaceId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Accept: */*
{
"status": 200,
"data": {
"message": "Workspace deleted successfully"
}
}
Updates Labels for a specific Workspace
Unique identifier of the workspace
0e01b22c-7f4b-5e0f-b1c1-faff031977f8
Pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
List of labels to assign to the workspace
Workspace Labels Updated Successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
PUT /v2/workspaces/{workspaceId}/labels HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 19
{
"labels": [
"text"
]
}
{
"id": "507f1f77bcf86cd799439015",
"workspaceName": "production-infra",
"labels": [
"production",
"terraform",
"critical"
],
"updatedAt": "2025-08-19T22:12:28.332Z"
}
Lists all Runs for a specific Workspace
Unique identifier of the workspace
0e01b22c-7f4b-5e0f-b1c1-faff031977f8
Pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
0
25
List of Workspace Runs Retrieved Successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
POST /v2/workspaces/{workspaceId}/runs/search HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 1366
{
"projection": [
"text"
],
"searchValue": "text",
"filters": {
"runId": [
"run-123456"
],
"runName": [
"Deploy to Production"
],
"status": [
"plan_success"
],
"pullRequestUrl": [
"https://github.com/org/repo/pull/123"
],
"branch": [
"main"
],
"commitId": [
"abc123def456"
],
"ciTool": [
"github-actions"
],
"buildId": [
"build-789012"
],
"buildName": [
"CI Build"
],
"buildUrl": [
"https://github.com/org/repo/actions/runs/789012"
],
"vcsType": [
"github"
],
"repository": [
"org/repo"
],
"repositoryUrl": [
"https://github.com/org/repo"
],
"title": [
"Update infrastructure for new feature"
],
"createdAt": "2025-08-19T22:12:28.332Z",
"updatedAt": "2025-08-19T22:12:28.332Z",
"$or": {
"runId": [
"run-123456"
],
"runName": [
"Deploy to Production"
],
"status": [
"plan_success"
],
"pullRequestUrl": [
"https://github.com/org/repo/pull/123"
],
"branch": [
"main"
],
"commitId": [
"abc123def456"
],
"ciTool": [
"github-actions"
],
"buildId": [
"build-789012"
],
"buildName": [
"CI Build"
],
"buildUrl": [
"https://github.com/org/repo/actions/runs/789012"
],
"vcsType": [
"github"
],
"repository": [
"org/repo"
],
"repositoryUrl": [
"https://github.com/org/repo"
],
"title": [
"Update infrastructure for new feature"
],
"createdAt": "2025-08-19T22:12:28.332Z",
"updatedAt": "2025-08-19T22:12:28.332Z"
}
},
"sort": {
"updatedAt": {
"order": -1
},
"title": {
"order": -1
},
"commitId": {
"order": -1
},
"branch": {
"order": -1
},
"status": {
"order": -1
},
"ciTool": {
"order": -1
},
"vcsType": {
"order": -1
},
"repository": {
"order": -1
}
}
}
[
{
"id": "507f1f77bcf86cd799439011",
"accountId": "507f1f77bcf86cd799439011",
"createdAt": "2025-08-19T22:12:28.332Z",
"updatedAt": "2025-08-19T22:12:28.332Z",
"workspaceId": "507f1f77bcf86cd799439012",
"workspaceName": "production-infra",
"runId": "run-123456",
"runName": "Deploy to Production",
"status": "plan_success",
"pullRequestId": "123",
"pullRequestUrl": "https://github.com/org/repo/pull/123",
"branch": "main",
"commitId": "abc123def456",
"commitUrl": "https://github.com/org/repo/commit/abc123def456",
"runnerType": "github-actions",
"buildId": "build-789012",
"buildUrl": "https://github.com/org/repo/actions/runs/789012",
"buildName": "CI Build",
"vcsType": "github",
"repo": "org/repo",
"repoUrl": "https://github.com/org/repo",
"ownerSummary": {
"email": "[email protected]",
"name": "John Doe",
"initials": "JD",
"customColor": "#00000F"
},
"title": "Update infrastructure for new feature",
"terraformVersion": "1.0.11",
"iacType": "terraform",
"backendSummary": {
"backendType": "s3",
"backendConfig": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"iacStackId": "text",
"managedResourceCount": 1
},
"planTaskId": "507f1f77bcf86cd799439013",
"applyTaskId": "507f1f77bcf86cd799439014",
"plan": [
{
"id": "507f1f77bcf86cd799439011",
"accountId": "507f1f77bcf86cd799439011",
"createdAt": "2025-08-19T22:12:28.332Z",
"updatedAt": "2025-08-19T22:12:28.332Z",
"contentKeys": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"status": "completed",
"resultStatus": "success",
"type": {
"description": "text"
},
"guardrailsSummary": {
"total": 10,
"passed": 8,
"failed": 2,
"violations": [
{
"id": "v1",
"severity": "high",
"message": "Resource does not have required tags"
}
],
"description": "text"
},
"backendSummary": {
"type": "s3",
"config": {
"bucket": "terraform-state",
"key": "prod/terraform.tfstate"
},
"resources": 42,
"description": "text"
},
"changedFilesCodeSummary": {
"total": 5,
"added": 2,
"modified": 3,
"deleted": 0,
"files": [
{
"path": "main.tf",
"type": "modified"
}
],
"description": "text"
},
"vcsType": {
"description": "text"
},
"runnerType": {
"description": "text"
}
}
],
"apply": [
{
"id": "507f1f77bcf86cd799439011",
"accountId": "507f1f77bcf86cd799439011",
"createdAt": "2025-08-19T22:12:28.332Z",
"updatedAt": "2025-08-19T22:12:28.332Z",
"contentKeys": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"status": "completed",
"resultStatus": "success",
"type": {
"description": "text"
},
"guardrailsSummary": {
"total": 10,
"passed": 8,
"failed": 2,
"violations": [
{
"id": "v1",
"severity": "high",
"message": "Resource does not have required tags"
}
],
"description": "text"
},
"backendSummary": {
"type": "s3",
"config": {
"bucket": "terraform-state",
"key": "prod/terraform.tfstate"
},
"resources": 42,
"description": "text"
},
"changedFilesCodeSummary": {
"total": 5,
"added": 2,
"modified": 3,
"deleted": 0,
"files": [
{
"path": "main.tf",
"type": "modified"
}
],
"description": "text"
},
"vcsType": {
"description": "text"
},
"runnerType": {
"description": "text"
}
}
]
}
]
Lists Resources Affected by a Run
Unique identifier of the Run
684aac91c3f9b3880d3ece51
Pattern: ^[0-9a-fA-F]{24}$
Unique identifier of the Workspace
0e01b22c-7f4b-5e0f-b1c1-faff031977f8
Pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
0
25
Run resources retrieved successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
POST /v2/workspaces/{workspaceId}/runs/{runId}/resources/search HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 609
{
"projection": [
"text"
],
"searchValue": "text",
"mode": "table",
"filters": {
"action": {
"0": "create"
},
"hasDiagnostics": true,
"taskType": {
"0": "post-plan"
},
"resourceId": {
"0": "aws_s3_bucket.logs"
},
"providerName": [
"aws"
],
"isDrifted": false,
"$or": {
"action": {
"0": "create"
},
"hasDiagnostics": true,
"taskType": {
"0": "post-plan"
},
"resourceId": {
"0": "aws_s3_bucket.logs"
},
"providerName": [
"aws"
],
"isDrifted": false
}
},
"sort": {
"name": {
"order": -1
},
"mode": {
"order": -1
},
"action": {
"order": -1
},
"isDrifted": {
"order": -1
},
"type": {
"order": -1
},
"taskType": {
"order": -1
},
"providerName": {
"order": -1
},
"updatedAt": {
"order": -1
},
"createdAt": {
"order": -1
}
}
}
{
"resources": [
{
"id": "507f1f77bcf86cd799439011",
"accountId": "507f1f77bcf86cd799439011",
"createdAt": "2025-08-19T22:12:28.332Z",
"updatedAt": "2025-08-19T22:12:28.332Z",
"taskId": "507f1f77bcf86cd799439013",
"name": "aws_instance.example",
"type": "aws_instance",
"mode": "managed",
"action": {
"description": "text"
}
},
{
"isDrifted": false,
"taskType": {
"description": "text"
},
"dataType": {
"description": "text"
},
"providerName": "aws",
"providerType": "aws",
"providerVersion": "4.0.0"
}
]
}
Lists code changes grouped by folders with file metadata
Unique identifier of the run
684aac91c3f9b3880d3ece51
Pattern: ^[0-9a-fA-F]{24}$
Unique identifier of the Workspace
0e01b22c-7f4b-5e0f-b1c1-faff031977f8
Pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
0
25
Run changed code retrieved successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
POST /v2/workspaces/{workspaceId}/runs/{runId}/changed-files-code/search HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 410
{
"projection": [
"text"
],
"searchValue": "text",
"filters": {
"taskId": {
"0": "507f1f77bcf86cd799439013"
},
"suffix": {
"0": "tf"
},
"taskType": {
"0": "post-plan"
},
"filePath": {
"0": "infrastructure/main.tf"
},
"$or": {
"taskId": {
"0": "507f1f77bcf86cd799439013"
},
"suffix": {
"0": "tf"
},
"taskType": {
"0": "post-plan"
},
"filePath": {
"0": "infrastructure/main.tf"
}
}
},
"sort": {
"taskType": {
"order": -1
},
"suffix": {
"order": -1
},
"updatedAt": {
"order": -1
}
}
}
{
"infrastructure": [
{
"id": "507f1f77bcf86cd799439014",
"filePath": "infrastructure/main.tf",
"folderPath": "infrastructure",
"fileSuffix": "tf",
"changes": {
"additions": 10,
"deletions": 5
}
}
],
"modules": [
{
"id": "507f1f77bcf86cd799439015",
"filePath": "modules/network/main.tf",
"folderPath": "modules/network",
"fileSuffix": "tf",
"changes": {
"additions": 3,
"deletions": 1
}
}
]
}
Guardrails
Returns a list of guardrails rules based on filter criteria
0
25
List of guardrail rules retrieved successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
POST /v2/guardrails/search HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 496
{
"projection": [
"text"
],
"searchValue": "text",
"filters": {
"createdBy": [
"John Doe"
],
"type": [
"policy",
"cost"
],
"labels": [
"production"
],
"repositories": [
"my-repo"
],
"workspaces": [
"my-workspace"
],
"branches": [
"main"
],
"$or": {
"createdBy": [
"John Doe"
],
"type": [
"policy",
"cost"
],
"labels": [
"production"
],
"repositories": [
"my-repo"
],
"workspaces": [
"my-workspace"
],
"branches": [
"main"
]
}
},
"sort": [
{
"createdAt": {
"order": -1
},
"accountId": {
"order": -1
},
"createdBy": {
"order": -1
},
"name": {
"order": -1
},
"severity": {
"order": -1
}
}
]
}
[
{
"id": "507f1f77bcf86cd799439012",
"accountId": "507f1f77bcf86cd799439012",
"createdBy": "John Doe",
"name": "text",
"type": "policy",
"scope": {
"workspaces": {
"include": null,
"exclude": [
"text"
]
},
"repositories": {
"include": null,
"exclude": [
"text"
]
},
"branches": {
"include": null,
"exclude": [
"text"
]
},
"labels": {
"include": null,
"exclude": [
"text"
]
}
},
"criteria": {
"cost": {
"thresholdAmount": 1,
"thresholdPercentage": 1
},
"policy": {
"severity": "text",
"policies": {
"include": [
"text"
],
"exclude": [
"text"
]
}
},
"resource": {
"actions": [
"create"
],
"regions": {
"include": null,
"exclude": [
"text"
]
},
"assetTypes": {
"include": null,
"exclude": [
"text"
]
},
"specificResources": [
"text"
]
},
"tag": {
"tagEnforcementMode": "anyTags"
}
},
"isEnabled": true,
"createdAt": "2025-08-19T22:12:28.332Z",
"updatedAt": "2025-08-19T22:12:28.332Z",
"notificationId": "507f1f77bcf86cd799439012",
"severity": 0,
"enforceOnNoOp": true
}
]
Creates a new guardrail rule with optional notification setup
Guardrail Rule Created Successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
POST /v2/guardrails HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 811
{
"accountId": "507f1f77bcf86cd799439012",
"createdBy": "John Doe",
"name": "text",
"type": "policy",
"scope": {
"workspaces": {
"include": null,
"exclude": [
"text"
]
},
"repositories": {
"include": null,
"exclude": [
"text"
]
},
"branches": {
"include": null,
"exclude": [
"text"
]
},
"labels": {
"include": null,
"exclude": [
"text"
]
}
},
"criteria": {
"cost": {
"thresholdAmount": 1,
"thresholdPercentage": 1
},
"policy": {
"severity": "text",
"policies": {
"include": [
"text"
],
"exclude": [
"text"
]
}
},
"resource": {
"actions": [
"create"
],
"regions": {
"include": null,
"exclude": [
"text"
]
},
"assetTypes": {
"include": null,
"exclude": [
"text"
]
},
"specificResources": [
"text"
]
},
"tag": {
"tagEnforcementMode": "anyTags"
}
},
"isEnabled": true,
"createdAt": "2025-08-19T22:12:28.332Z",
"updatedAt": "2025-08-19T22:12:28.332Z",
"notificationId": "507f1f77bcf86cd799439012",
"severity": 0,
"enforceOnNoOp": true
}
{
"ruleId": "507f1f77bcf86cd799439011",
"notificationId": "507f1f77bcf86cd799439012"
}
Updates an existing Guardrail Rule and its Notifications
Unique identifier of the Guardrail Rule
684aac91c3f9b3880d3ece51
Pattern: ^[0-9a-fA-F]{24}$
Guardrail Rule Updated Successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
PATCH /v2/guardrails/{ruleId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 811
{
"accountId": "507f1f77bcf86cd799439012",
"createdBy": "John Doe",
"name": "text",
"type": "policy",
"scope": {
"workspaces": {
"include": null,
"exclude": [
"text"
]
},
"repositories": {
"include": null,
"exclude": [
"text"
]
},
"branches": {
"include": null,
"exclude": [
"text"
]
},
"labels": {
"include": null,
"exclude": [
"text"
]
}
},
"criteria": {
"cost": {
"thresholdAmount": 1,
"thresholdPercentage": 1
},
"policy": {
"severity": "text",
"policies": {
"include": [
"text"
],
"exclude": [
"text"
]
}
},
"resource": {
"actions": [
"create"
],
"regions": {
"include": null,
"exclude": [
"text"
]
},
"assetTypes": {
"include": null,
"exclude": [
"text"
]
},
"specificResources": [
"text"
]
},
"tag": {
"tagEnforcementMode": "anyTags"
}
},
"isEnabled": true,
"createdAt": "2025-08-19T22:12:28.332Z",
"updatedAt": "2025-08-19T22:12:28.332Z",
"notificationId": "507f1f77bcf86cd799439012",
"severity": 0,
"enforceOnNoOp": true
}
{
"id": "507f1f77bcf86cd799439011",
"name": "Enforce S3 Encryption",
"enabled": true,
"updatedAt": "2024-11-11T10:00:00Z"
}
Deletes a Guardrail Rule and its Associated Notification
Unique identifier of the Guardrail Rule
684aac91c3f9b3880d3ece51
Pattern: ^[0-9a-fA-F]{24}$
Guardrail Rule Deleted Successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
DELETE /v2/guardrails/{ruleId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Accept: */*
{
"status": 200,
"message": "Guardrail rule and notification deleted successfully"
}
Projects
Creates a new project
Project created successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Internal Server Error
POST /v2/runners/projects HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 189
{
"name": "text",
"description": "text",
"labels": [
"text"
],
"cronExecutionPattern": "text",
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
],
"parentId": "text"
}
{
"name": "text",
"description": "text",
"labels": [
"text"
],
"cronExecutionPattern": "text",
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
],
"id": "text",
"accountId": "text",
"membersCount": 1,
"workspaceCount": 1,
"parentId": "text"
}
Retrieves a single project by ID
Unique identifier of the project to retrieve
Project retrieved successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
GET /v2/runners/projects/{projectId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Accept: */*
{
"name": "text",
"description": "text",
"labels": [
"text"
],
"cronExecutionPattern": "text",
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
],
"id": "text",
"accountId": "text",
"membersCount": 1,
"workspaceCount": 1,
"parentId": "text"
}
Updates an existing project
Unique identifier of the project to update
Project updated successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
PATCH /v2/runners/projects/{projectId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 171
{
"name": "text",
"description": "text",
"labels": [
"text"
],
"cronExecutionPattern": "text",
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
]
}
{
"name": "text",
"description": "text",
"labels": [
"text"
],
"cronExecutionPattern": "text",
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
],
"id": "text",
"accountId": "text",
"membersCount": 1,
"workspaceCount": 1,
"parentId": "text"
}
Deletes a project and all its associated workspaces
Unique identifier of the project to delete
Project successfully deleted
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
DELETE /v2/runners/projects/{projectId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Accept: */*
No content
Retrieves all projects with pagination support
25
The offset of the items to return
0
Maximum depth of the project tree to return
Projects retrieved successfully in flat list format
Bad Request Error
Unauthorized Error
Insufficient permissions
Internal Server Error
GET /v2/runners/projects/list HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Accept: */*
{
"data": [
{
"name": "text",
"description": "text",
"labels": [
"text"
],
"cronExecutionPattern": "text",
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
],
"id": "text",
"accountId": "text",
"membersCount": 1,
"workspaceCount": 1,
"parentId": "text"
}
],
"totalCount": 1
}
Retrieves all projects in a hierarchical tree format
Search query
Filter projects by variable set ID
When used with variableSetId, only return projects that consume the variable set
Projects retrieved successfully in tree format
Bad Request Error
Unauthorized Error
Insufficient permissions
Internal Server Error
GET /v2/runners/projects/tree HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Accept: */*
{
"data": [
{
"data": [
{
"name": "text",
"description": "text",
"labels": [
"text"
],
"cronExecutionPattern": "text",
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
],
"id": "text",
"accountId": "text",
"membersCount": 1,
"workspaceCount": 1,
"parentId": "text"
},
{
"hasChildren": true,
"children": [
{
"name": "text",
"description": "text",
"labels": [
"text"
],
"cronExecutionPattern": "text",
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
],
"id": "text",
"accountId": "text",
"membersCount": 1,
"workspaceCount": 1,
"parentId": "text"
}
],
"ancestors": [
{
"name": "text",
"description": "text",
"labels": [
"text"
],
"cronExecutionPattern": "text",
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
],
"id": "text",
"accountId": "text",
"membersCount": 1,
"workspaceCount": 1,
"parentId": "text"
}
]
}
]
}
]
}
Retrieves all members of a specified project
Unique identifier of the project
Members retrieved successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
GET /v2/runners/projects/{projectId}/members HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Accept: */*
[
{
"userId": "text",
"role": "admin"
}
]
Adds new members to a specified project
Unique identifier of the project
ID of the user
Role of the user in the project
Members added successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
POST /v2/runners/projects/{projectId}/members HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 34
[
{
"userId": "text",
"role": "admin"
}
]
[
{
"userId": "text",
"role": "admin"
}
]
Deletes specified members from a project
Unique identifier of the project
User IDs of the members to remove
Members removed successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
DELETE /v2/runners/projects/{projectId}/members HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 8
[
"text"
]
No content
Retrieves all workspaces of a specified project
Unique identifier of the project
Search query
25
The offset of the items to return
0
Workspaces retrieved successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
GET /v2/runners/projects/{projectId}/workspaces HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Accept: */*
[
{
"id": "text",
"name": "text",
"description": "text",
"accountId": "text",
"repository": "text",
"workingDirectory": "text",
"vcsIntegrationId": "text",
"vcs": "text",
"defaultBranch": "text",
"cronExecutionPattern": "text",
"iacProvisioner": {
"type": "terraform",
"version": "text"
},
"labels": [
"text"
]
}
]
Retrieves all available project labels for the account
Project labels retrieved successfully
List of project labels
Bad Request Error
Unauthorized Error
Insufficient permissions
Internal Server Error
GET /v2/runners/projects/labels HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Accept: */*
[
"text"
]
Variables Management
Project Variables
List of project variables
GET /v2/runners/variables/projects/{projectId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Accept: */*
List of project variables
[
{
"key": "text",
"value": "text",
"description": "text",
"isSecret": true,
"projectId": "text",
"workspaceId": "text",
"variableSetId": "text",
"createdAt": "2025-08-19T22:12:28.332Z",
"updatedAt": "2025-08-19T22:12:28.332Z",
"sensitivity": "string",
"destination": "env",
"origin": "project"
}
]
Variables upserted within project
POST /v2/runners/variables/projects/{projectId}/variables HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 88
{
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
]
}
Variables upserted within project
[
{
"key": "text",
"value": "text",
"description": "text",
"isSecret": true,
"projectId": "text",
"workspaceId": "text",
"variableSetId": "text",
"createdAt": "2025-08-19T22:12:28.332Z",
"updatedAt": "2025-08-19T22:12:28.332Z",
"sensitivity": "string",
"destination": "env",
"origin": "project"
}
]
Array of variable keys to delete
Variables deleted from project
DELETE /v2/runners/variables/projects/{projectId}/variables HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 25
{
"variableKeys": [
"text"
]
}
Variables deleted from project
No content
Workspace Variables
List of workspace variables
GET /v2/runners/variables/workspaces/{workspaceId}/variables HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Accept: */*
List of workspace variables
[
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
]
Variables upserted within workspace
POST /v2/runners/variables/workspaces/{workspaceId}/variables HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 144
{
"variables": [
{
"variableId": "text",
"variableData": {
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env",
"origin": "project"
}
}
]
}
Variables upserted within workspace
[
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
]
Array of variable IDs to delete
Variables deleted from workspace
DELETE /v2/runners/variables/workspaces/{workspaceId}/variables HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 24
{
"variableIds": [
"text"
]
}
Variables deleted from workspace
No content
Variable Sets
List of variable sets
GET /v2/runners/variables/variable-sets HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Accept: */*
List of variable sets
[
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
]
Name of the variable set
Description of the variable set
Labels to assign to the variable set
Parent variable set IDs
Variable set created successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Internal Server Error
POST /v2/runners/variables/variable-sets HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 160
{
"name": "text",
"description": "text",
"labels": [
"text"
],
"parents": [
"text"
],
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
]
}
{
"variableSetId": "text"
}
Variable set
Bad Request Error
Unauthorized Error
Insufficient permissions
Internal Server Error
GET /v2/runners/variables/variable-sets/{variableSetId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Accept: */*
{
"id": "text",
"version": 1,
"name": "text",
"description": "text",
"labels": [
"text"
],
"parents": [
"text"
],
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
],
"descendants": [
{
"id": "text",
"name": "text"
}
],
"consumers": {
"workspaces": [
{
"id": "text",
"name": "text"
}
],
"projects": [
{
"id": "text",
"name": "text"
}
]
}
}
Name of the variable set
Description of the variable set
Labels to assign to the variable set
Parent variable set IDs
Variable set updated successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Internal Server Error
PUT /v2/runners/variables/variable-sets/{variableSetId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 160
{
"name": "text",
"description": "text",
"labels": [
"text"
],
"parents": [
"text"
],
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
]
}
{
"id": "text",
"version": 1,
"name": "text",
"description": "text",
"labels": [
"text"
],
"parents": [
"text"
],
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
],
"descendants": [
{
"id": "text",
"name": "text"
}
],
"consumers": {
"workspaces": [
{
"id": "text",
"name": "text"
}
],
"projects": [
{
"id": "text",
"name": "text"
}
]
}
}
Variable set deleted successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Internal Server Error
DELETE /v2/runners/variables/variable-sets/{variableSetId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Accept: */*
No content
0
25
List of variables in variable set
GET /v2/runners/variables/variable-sets/{variableSetId}/variables HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Accept: */*
List of variables in variable set
[
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
]
Variables upserted within variable set
POST /v2/runners/variables/variable-sets/{variableSetId}/variables HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 88
{
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
]
}
Variables upserted within variable set
[
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
]
Array of variable IDs to delete
Variables deleted from variable set
DELETE /v2/runners/variables/variable-sets/{variableSetId}/variables HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 24
{
"variableIds": [
"text"
]
}
Variables deleted from variable set
No content
Variable Set Operations
Whether to consume the variable set values
true
Variable set attached to project
POST /v2/runners/variables/projects/{projectId}/variable-sets/{variableSetId}/attach HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 16
{
"consume": true
}
Variable set attached to project
No content
Variable set detached from project
POST /v2/runners/variables/projects/{projectId}/variable-sets/{variableSetId}/detach HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Accept: */*
Variable set detached from project
No content
Variable set bound to workspace
POST /v2/runners/variables/workspaces/{workspaceId}/variable-sets/{variableSetId}/bind HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Accept: */*
Variable set bound to workspace
No content
Variable set unbound from workspace
POST /v2/runners/variables/workspaces/{workspaceId}/variable-sets/{variableSetId}/unbind HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Accept: */*
Variable set unbound from workspace
No content
Runners Workspaces
Creates a new workspace with the provided configuration
Type of runner (e.g., firefly_runners)
firefly_runners
Infrastructure as Code type
terraform
Unique workspace name
my-workspace
Workspace description
Production environment workspace
Labels assigned to the workspace
["production","terraform"]
VCS integration ID
5fd126f5744410407fbc552f
Repository name
infralight/appiac
Default branch
main
VCS type (github, gitlab, etc.)
github
Working directory path
terraform/production
Project ID or null for global access
Cleaned by deleteMockArrays
Cleaned by deleteMockArrays
Cleaned by deleteMockArrays
Cleaned by deleteMockArrays
Workspace created successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Internal Server Error
POST /v2/runners/workspaces HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 598
{
"runnerType": "firefly_runners",
"iacType": "terraform",
"workspaceName": "my-workspace",
"description": "Production environment workspace",
"labels": [
"production",
"terraform"
],
"vcsId": "5fd126f5744410407fbc552f",
"repo": "infralight/appiac",
"defaultBranch": "main",
"vcsType": "github",
"workDir": "terraform/production",
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
],
"execution": {
"triggers": [
"merge"
],
"applyRule": "manual",
"terraformVersion": "1.5.7"
},
"project": null,
"terraformVariables": {},
"terraformSensitiveVariables": {},
"providersCredentials": {},
"runnerEnvironment": {}
}
{
"id": "text",
"name": "text",
"description": "text",
"accountId": "text",
"repository": "text",
"workingDirectory": "text",
"vcsIntegrationId": "text",
"vcs": "text",
"defaultBranch": "text",
"cronExecutionPattern": "text",
"iacProvisioner": {
"type": "terraform",
"version": "text"
},
"labels": [
"text"
]
}
Retrieves all available workspace labels for the account
Workspace labels retrieved successfully
List of workspace labels
Bad Request Error
Unauthorized Error
Insufficient permissions
Internal Server Error
GET /v2/runners/workspaces/labels HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Accept: */*
[
"text"
]
Retrieves details for a specific workspace
Unique identifier of the workspace
Workspace details retrieved successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
GET /v2/runners/workspaces/{workspaceId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Accept: */*
{
"id": "text",
"name": "text",
"description": "text",
"accountId": "text",
"repository": "text",
"workingDirectory": "text",
"vcsIntegrationId": "text",
"vcs": "text",
"defaultBranch": "text",
"cronExecutionPattern": "text",
"iacProvisioner": {
"type": "terraform",
"version": "text"
},
"labels": [
"text"
]
}
Deploys a workspace by running plan or apply tasks based on the provided task type
Unique identifier of the workspace
The type of task to run (plan or apply)
Additional command line arguments
Workspace deployed successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
POST /v2/runners/workspaces/{workspaceId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 112
{
"taskType": "plan",
"vcs": {
"reference": "text",
"type": "branch"
},
"trigger": {
"type": "manual"
},
"cmdArguments": "text"
}
{
"status": 200,
"data": {
"message": "Workspace deployed successfully"
}
}
Updates an existing workspace with the provided configuration
Unique identifier of the workspace
Workspace name
my-workspace
Workspace description
Production environment workspace
Labels assigned to the workspace
["production","terraform"]
VCS integration ID
5fd126f5744410407fbc552f
Repository name
infralight/appiac
Default branch
main
VCS type (github, gitlab, etc.)
github
Working directory path
terraform/production
Type of runner (e.g., firefly_runners)
firefly_runners
Cron pattern for scheduled executions
0 2 * * *
Project ID or null for global access
Workspace updated successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
PUT /v2/runners/workspaces/{workspaceId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 482
{
"name": "my-workspace",
"description": "Production environment workspace",
"labels": [
"production",
"terraform"
],
"vcsIntegrationId": "5fd126f5744410407fbc552f",
"repository": "infralight/appiac",
"defaultBranch": "main",
"vcs": "github",
"workingDirectory": "terraform/production",
"iacProvisioner": {
"type": "terraform",
"version": "text"
},
"runnerType": "firefly_runners",
"triggerConfig": {
"runOnPullRequest": true,
"runOnPush": false,
"autoApply": false
},
"cronExecutionPattern": "0 2 * * *",
"parentId": null
}
{
"id": "text",
"name": "text",
"description": "text",
"accountId": "text",
"repository": "text",
"workingDirectory": "text",
"vcsIntegrationId": "text",
"vcs": "text",
"defaultBranch": "text",
"cronExecutionPattern": "text",
"iacProvisioner": {
"type": "terraform",
"version": "text"
},
"labels": [
"text"
]
}
Deletes a specific workspace and optionally destroys its infrastructure resources
Unique identifier of the workspace
Whether to destroy infrastructure resources before deleting the workspace
false
Optional description for the deletion operation
Workspace deleted successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
DELETE /v2/runners/workspaces/{workspaceId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Accept: */*
{
"message": "Workspace deleted successfully",
"workspaceId": "text",
"resourcesDestroyed": true
}
Initiates a destroy task to clean up cloud infrastructure resources managed by this workspace. This does not delete the workspace entity itself.
Unique identifier of the workspace
Request to run a task on workspace infrastructure
Optional description for the task
Running infrastructure task
Optional command line arguments for the task
-auto-approve
Destroy task initiated successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
POST /v2/runners/workspaces/{workspaceId}/tasks/destroy HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 166
{
"description": "Running infrastructure task",
"vcs": {
"reference": "main",
"type": "branch"
},
"trigger": {
"type": "manual",
"source": "Firefly"
},
"cmdArguments": "-auto-approve"
}
{
"accountId": "text",
"id": "text",
"status": "pending",
"error": {
"type": "UNEXPECTED",
"description": "text"
},
"currentStep": "plan",
"workspaceId": "text",
"vcs": {
"reference": "main",
"type": "branch"
},
"trigger": {
"type": "manual"
},
"type": "plan",
"cmdArguments": "text",
"createdAt": "2025-08-19T22:12:28.332Z",
"updatedAt": "2025-08-19T22:12:28.332Z"
}
Last updated
Was this helpful?