{"openapi":"3.0.1","info":{"title":"Laminar API","description":"Laminar's API - Build API integrations faster","contact":{"name":"Laminar","url":"https://laminar.run","email":"connect@laminar.run"},"version":"v1"},"servers":[{"url":"https://api.laminar.run","description":"Laminar API"}],"tags":[{"name":"Lami Agent","description":"Laminar AI Agent endpoints, for interacting with AI agent."},{"name":"Workspace Invitations","description":"Laminar Workspace Invitation endpoints, for managing workspace invitations and access control."},{"name":"Attachments","description":"Message attachment management endpoints"},{"name":"Configuration Stores","description":"Laminar Configuration Store endpoints, for managing configuration stores and properties within workspaces."},{"name":"Flows","description":"Laminar Flow endpoints, for managing flows and flow runs."},{"name":"RPA Coordinate Recording","description":"RPA coordinate recording endpoints for capturing user interactions"},{"name":"Workflows","description":"Laminar Workflow endpoints, for managing workflows and workflow executions."},{"name":"Users","description":"Laminar User endpoints, for managing users."},{"name":"Authentication","description":"Laminar Authentication endpoints, for managing users and authentication."},{"name":"Service Accounts","description":"Laminar Service Account endpoints, for managing service account credentials."},{"name":"Dev Mode","description":"Redis-backed user workflow branches"},{"name":"Issues","description":"Issue management endpoints for workspaces"},{"name":"API Keys","description":"Laminar API Key endpoints, for managing API keys."},{"name":"Transform","description":"Laminar Transform endpoints, for testing data transformations."},{"name":"Workspaces","description":"Laminar Workspace endpoints, for managing workspaces and workspace memberships."}],"paths":{"/workspaces/{workspaceId}/users/role":{"put":{"tags":["Workspaces"],"summary":"Update user role in workspace","description":"Updates the role of a user in the specified workspace. Users cannot update their own roles.","operationId":"updateUserRole","parameters":[{"name":"userEmail","in":"query","required":true,"schema":{"type":"string"}},{"name":"workspaceId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"role","in":"query","required":true,"schema":{"type":"string","enum":["OWNER","ADMIN","MEMBER","GUEST","AGENT"]}}],"responses":{"404":{"description":"Workspace or user not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/UserWorkspace"}}}},"403":{"description":"User cannot update their own role","content":{"*/*":{"schema":{"$ref":"#/components/schemas/UserWorkspace"}}}},"200":{"description":"User role updated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/UserWorkspace"}}}}},"security":[{"bearer-key":[]}]}},"/workspaces/{workspaceId}/issues/{issueId}":{"get":{"tags":["Issues"],"summary":"Get issue","description":"Retrieves a specific issue from the workspace","operationId":"getIssue","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"issueId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Issue not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/IssueResponse"}}}},"200":{"description":"Issue retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/IssueResponse"}}}}},"security":[{"bearer-key":[]}]},"put":{"tags":["Issues"],"summary":"Update issue","description":"Updates an existing issue in the workspace","operationId":"updateIssue","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"issueId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateIssueRequest"}}},"required":true},"responses":{"404":{"description":"Issue not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/IssueResponse"}}}},"200":{"description":"Issue updated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/IssueResponse"}}}}},"security":[{"bearer-key":[]}]},"delete":{"tags":["Issues"],"summary":"Delete issue","description":"Deletes an issue from the workspace","operationId":"deleteIssue","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"issueId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Issue not found"},"204":{"description":"Issue deleted successfully"}},"security":[{"bearer-key":[]}]}},"/workspaces/{id}":{"get":{"tags":["Workspaces"],"summary":"Get a workspace by ID","description":"Retrieves a specific workspace by its ID","operationId":"getWorkspaceById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Workspace retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"404":{"description":"Workspace not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Workspace"}}}}},"security":[{"bearer-key":[]}]},"put":{"tags":["Workspaces"],"summary":"Update workspace","description":"Updates the name of the specified workspace","operationId":"updateWorkspaceName","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"name","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Workspace updated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"404":{"description":"Workspace not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Workspace"}}}}},"security":[{"bearer-key":[]}]},"delete":{"tags":["Workspaces"],"summary":"Delete workspace","description":"Deletes the specified workspace","operationId":"deleteWorkspace","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Workspace not found"},"204":{"description":"Workspace deleted successfully"}},"security":[{"bearer-key":[]}]}},"/workflow":{"put":{"tags":["Workflows"],"summary":"Update Workflow","description":"Updates an existing workflow with new details","operationId":"updateWorkflow","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWorkflow"}}},"required":true},"responses":{"200":{"description":"Workflow updated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Workflow"}}}}},"security":[{"bearer-key":[]}]},"post":{"tags":["Workflows"],"summary":"Create Workflow","description":"Creates a new workflow with the provided details","operationId":"createWorkflow","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWorkflow"}}},"required":true},"responses":{"200":{"description":"Workflow created successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Workflow"}}}}},"security":[{"bearer-key":[]}]}},"/users/{id}":{"put":{"tags":["Users"],"summary":"Update user","description":"Updates the user details for the specified ID","operationId":"updateUser","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}},"required":true},"responses":{"404":{"description":"User not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/User"}}}},"200":{"description":"User updated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/User"}}}}},"security":[{"bearer-key":[]}]},"delete":{"tags":["Users"],"summary":"Delete user","description":"Deletes the user with the specified ID","operationId":"deleteUser","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"User deleted successfully"}},"security":[{"bearer-key":[]}]}},"/service-accounts/{serviceAccountId}":{"get":{"tags":["Service Accounts"],"summary":"Get Service Account","description":"Retrieves a specific service account by ID","operationId":"getServiceAccount","parameters":[{"name":"serviceAccountId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Service account not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ServiceAccountResponse"}}}},"200":{"description":"Service account retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ServiceAccountResponse"}}}}},"security":[{"bearer-key":[]}]},"put":{"tags":["Service Accounts"],"summary":"Update Service Account","description":"Updates the name of a service account","operationId":"updateServiceAccount","parameters":[{"name":"serviceAccountId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateServiceAccountRequest"}}},"required":true},"responses":{"404":{"description":"Service account not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ServiceAccountResponse"}}}},"200":{"description":"Service account updated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ServiceAccountResponse"}}}}},"security":[{"bearer-key":[]}]},"delete":{"tags":["Service Accounts"],"summary":"Delete Service Account","description":"Deletes a service account and its Azure B2C account","operationId":"deleteServiceAccount","parameters":[{"name":"serviceAccountId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Service account not found"},"200":{"description":"Service account deleted successfully"}},"security":[{"bearer-key":[]}]}},"/flows":{"put":{"tags":["Flows"],"summary":"Update Flow","description":"Updates an existing flow with the provided details","operationId":"updateFlow","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFlow"}}},"required":true},"responses":{"200":{"description":"Flow updated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Flow"}}}}},"security":[{"bearer-key":[]}]},"post":{"tags":["Flows"],"summary":"Create Flow","description":"Creates a new flow with the provided details","operationId":"createFlow","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFlow"}}},"required":true},"responses":{"200":{"description":"Flow created successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Flow"}}}}},"security":[{"bearer-key":[]}]}},"/email-domains/{id}":{"get":{"tags":["email-domain-controller"],"summary":"Get email domain by ID","description":"Retrieves a specific email domain by ID. Only accessible to users with -laminar.run email domains.","operationId":"getEmailDomainById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Email domain retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EmailDomain"}}}},"403":{"description":"Access denied - user email must end with -laminar.run","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EmailDomain"}}}},"404":{"description":"Email domain not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EmailDomain"}}}}},"security":[{"bearer-key":[]}]},"put":{"tags":["email-domain-controller"],"summary":"Update email domain","description":"Updates an existing email domain. Only accessible to users with -laminar.run email domains.","operationId":"updateEmailDomain","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEmailDomainRequest"}}},"required":true},"responses":{"200":{"description":"Email domain updated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EmailDomain"}}}},"403":{"description":"Access denied - user email must end with -laminar.run","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EmailDomain"}}}},"404":{"description":"Email domain not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EmailDomain"}}}},"400":{"description":"Invalid request or domain already exists","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EmailDomain"}}}}},"security":[{"bearer-key":[]}]},"delete":{"tags":["email-domain-controller"],"summary":"Delete email domain","description":"Deletes an email domain. Only accessible to users with -laminar.run email domains.","operationId":"deleteEmailDomain","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Email domain deleted successfully"},"403":{"description":"Access denied - user email must end with -laminar.run"},"404":{"description":"Email domain not found"}},"security":[{"bearer-key":[]}]}},"/dev-mode/branches/{workflowId}/steps/{key}":{"get":{"tags":["Dev Mode"],"summary":"Get a Dev Mode branch step","operationId":"getStep","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"key","in":"path","required":true,"schema":{"type":"string"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DevModeStep"}}}}},"security":[{"bearer-key":[]}]},"put":{"tags":["Dev Mode"],"summary":"Edit a Dev Mode branch step","operationId":"editStep","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"key","in":"path","required":true,"schema":{"type":"string"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditDevModeStepRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DevModeStepMutationResponse"}}}}},"security":[{"bearer-key":[]}]},"delete":{"tags":["Dev Mode"],"summary":"Remove a Dev Mode branch step","operationId":"removeStep","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"key","in":"path","required":true,"schema":{"type":"string"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DevModeWorkspaceSnapshotResponse"}}}}},"security":[{"bearer-key":[]}]}},"/configurations":{"put":{"tags":["Configuration Stores"],"summary":"Update Configuration Store","description":"Updates configuration store metadata","operationId":"updateConfigurationStore","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateConfigurationDTO"}}},"required":true},"responses":{"200":{"description":"Configuration store updated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ConfigurationStore"}}}}},"security":[{"bearer-key":[]}]},"post":{"tags":["Configuration Stores"],"summary":"Create Configuration Store","description":"Creates a new configuration store with initial properties","operationId":"createConfigurationStore","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateConfigurationStoreRequest"}}},"required":true},"responses":{"201":{"description":"Configuration store created successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ConfigurationStore"}}}}},"security":[{"bearer-key":[]}]}},"/configurations/{externalId}/restore":{"put":{"tags":["Configuration Stores"],"summary":"Restore Configuration Store","description":"Restores an archived configuration store to active status","operationId":"restoreConfigurationStore","parameters":[{"name":"externalId","in":"path","required":true,"schema":{"type":"string"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Configuration store restored successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ConfigurationStore"}}}},"404":{"description":"Archived configuration store not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ConfigurationStore"}}}}},"security":[{"bearer-key":[]}]}},"/configurations/{externalId}/restore/external":{"put":{"tags":["external","Configuration Stores"],"summary":"Restore Configuration Store (External)","description":"Restores an archived configuration store via external API key authentication","operationId":"restoreConfigurationStoreExternal","parameters":[{"name":"X-API-KEY","in":"header","required":false,"schema":{"type":"string"}},{"name":"api_key","in":"query","required":false,"schema":{"type":"string"}},{"name":"externalId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Configuration store restored successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ConfigurationStore"}}}},"401":{"description":"Invalid API key","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ConfigurationStore"}}}},"404":{"description":"Archived configuration store not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ConfigurationStore"}}}}},"security":[{"api-key-query":[]},{"api-key":[]}]}},"/configurations/{externalId}/properties":{"get":{"tags":["Configuration Stores"],"summary":"Get All Properties","description":"Retrieves all properties from a configuration store","operationId":"getProperties","parameters":[{"name":"externalId","in":"path","required":true,"schema":{"type":"string"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Properties retrieved successfully","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}}},"security":[{"bearer-key":[]}]},"put":{"tags":["Configuration Stores"],"summary":"Update Property","description":"Updates or creates a property in the configuration store","operationId":"updateProperty","parameters":[{"name":"externalId","in":"path","required":true,"schema":{"type":"string"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PropertyDTO"}}},"required":true},"responses":{"200":{"description":"Property updated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Unit"}}}}},"security":[{"bearer-key":[]}]}},"/configurations/{externalId}/properties/external":{"put":{"tags":["external","Configuration Stores"],"summary":"Bulk Update Properties (External)","description":"Updates multiple properties via external API key authentication","operationId":"bulkUpdatePropertiesExternal","parameters":[{"name":"X-API-KEY","in":"header","required":false,"schema":{"type":"string"}},{"name":"api_key","in":"query","required":false,"schema":{"type":"string"}},{"name":"externalId","in":"path","required":true,"schema":{"type":"string"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdatePropertiesRequest"}}},"required":true},"responses":{"404":{"description":"Configuration store not found"},"200":{"description":"Properties updated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ConfigurationStore"}}}},"401":{"description":"Invalid API key"}},"security":[{"api-key-query":[]},{"api-key":[]}]}},"/workspaces":{"get":{"tags":["Workspaces"],"summary":"Get all workspaces","description":"Retrieves all workspaces for the authenticated user","operationId":"getAllWorkspaces","responses":{"200":{"description":"Successfully retrieved workspaces","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]},"post":{"tags":["Workspaces"],"summary":"Create a new workspace","description":"Creates a new workspace with the given name","operationId":"createWorkspace","parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Workspace created successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Workspace"}}}}},"security":[{"bearer-key":[]}]}},"/workspaces/{workspaceId}/users":{"get":{"tags":["Workspaces"],"summary":"Get all users in a workspace","description":"Retrieves all users in the specified workspace","operationId":"getAllUsersInWorkspace","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Workspace not found","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserWithRole"}}}}},"200":{"description":"Users retrieved successfully","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]},"post":{"tags":["Workspaces"],"summary":"Add user to workspace","description":"Adds a user to the specified workspace with a role","operationId":"addUserToWorkspace","parameters":[{"name":"userEmail","in":"query","required":true,"schema":{"type":"string"}},{"name":"workspaceId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"role","in":"query","required":true,"schema":{"type":"string","enum":["OWNER","ADMIN","MEMBER","GUEST","AGENT"]}}],"responses":{"409":{"description":"User is already in this workspace"},"404":{"description":"Workspace not found"},"201":{"description":"User added to workspace successfully"}},"security":[{"bearer-key":[]}]},"delete":{"tags":["Workspaces"],"summary":"Remove user from workspace","description":"Removes a user from the specified workspace","operationId":"removeUserFromWorkspace","parameters":[{"name":"userEmail","in":"query","required":true,"schema":{"type":"string"}},{"name":"workspaceId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"User removed from workspace successfully"},"404":{"description":"Workspace not found"}},"security":[{"bearer-key":[]}]}},"/workspaces/{workspaceId}/users/remove":{"post":{"tags":["Workspaces"],"summary":"Remove user from workspace (JSON body)","description":"Same as DELETE /{workspaceId}/users?userEmail=… but sends the email in the body. Use this when HTTP intermediaries strip query strings on DELETE.","operationId":"removeUserFromWorkspaceWithBody","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveUserFromWorkspaceRequest"}}},"required":true},"responses":{"404":{"description":"Workspace or user not found"},"204":{"description":"User removed from workspace successfully"}},"security":[{"bearer-key":[]}]}},"/workspaces/{workspaceId}/issues":{"get":{"tags":["Issues"],"summary":"List issues","description":"Lists all issues in the workspace","operationId":"getAllIssues","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Issues retrieved successfully","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]},"post":{"tags":["Issues"],"summary":"Create issue","description":"Creates a new issue in the specified workspace","operationId":"createIssue","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIssueRequest"}}},"required":true},"responses":{"201":{"description":"Issue created successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/IssueResponse"}}}}},"security":[{"bearer-key":[]}]}},"/workspaces/{workspaceId}/issues/external":{"post":{"tags":["external","Issues"],"summary":"Create issue (External)","description":"Creates a new issue in the specified workspace using external API key authentication","operationId":"createIssueExternal","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"X-API-KEY","in":"header","required":false,"schema":{"type":"string"}},{"name":"api_key","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIssueRequest"}}},"required":true},"responses":{"201":{"description":"Issue created successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/IssueResponse"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/IssueResponse"}}}}},"security":[{"bearer-key":[]},{"api-key-query":[]},{"api-key":[]}]}},"/workspaces/invitations":{"post":{"tags":["Workspace Invitations"],"summary":"Invite User","description":"Creates a new workspace invitation for a user","operationId":"inviteUser","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteUserRequest"}}},"required":true},"responses":{"200":{"description":"Invitation created successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvitationResponse"}}}}},"security":[{"bearer-key":[]}]}},"/workspaces/invitations/{token}/decline":{"post":{"tags":["Workspace Invitations"],"summary":"Decline Invitation","description":"Declines a workspace invitation using the invitation token","operationId":"declineInvitation","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"404":{"description":"Invitation not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvitationResponse"}}}},"400":{"description":"Invitation already processed or expired","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvitationResponse"}}}},"200":{"description":"Invitation declined successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvitationResponse"}}}}},"security":[{"bearer-key":[]}]}},"/workspaces/invitations/{token}/accept":{"post":{"tags":["Workspace Invitations"],"summary":"Accept Invitation","description":"Accepts a workspace invitation using the invitation token","operationId":"acceptInvitation","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Invitation accepted successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvitationResponse"}}}},"404":{"description":"Invitation not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvitationResponse"}}}},"400":{"description":"Invitation already processed or expired","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvitationResponse"}}}}},"security":[{"bearer-key":[]}]}},"/workflow/{workflowId}/flows":{"get":{"tags":["Workflows"],"summary":"Get Flows by Workflow ID","description":"Retrieves all flows associated with a specific workflow","operationId":"getFlowsByWorkflowId","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Flows retrieved successfully","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]},"post":{"tags":["Workflows"],"summary":"Create or Update Flows","description":"Creates or updates multiple flows for a workflow","operationId":"createOrUpdateFlows","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CreateFlow"}}}},"required":true},"responses":{"200":{"description":"Flows created/updated successfully","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]}},"/workflow/{workflowId}/conversations":{"get":{"tags":["Workflows"],"summary":"List Conversations","description":"Lists all conversations for a workflow","operationId":"listConversations","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Conversations retrieved successfully","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]},"post":{"tags":["Workflows"],"summary":"Send Workflow Message","description":"Sends a message to a workflow conversation and returns a streaming response","operationId":"sendWorkflowMessage","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DirectMessageRequest"}}},"required":true},"responses":{"200":{"description":"Message sent successfully","content":{"*/*":{"schema":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/StreamContentBlockDelta"},{"$ref":"#/components/schemas/StreamContentBlockStart"},{"$ref":"#/components/schemas/StreamContentBlockStop"},{"$ref":"#/components/schemas/StreamError"},{"$ref":"#/components/schemas/StreamMessageDelta"},{"$ref":"#/components/schemas/StreamMessageStart"},{"$ref":"#/components/schemas/StreamMessageStop"},{"$ref":"#/components/schemas/StreamPing"}]}}}}}},"security":[{"bearer-key":[]}]}},"/workflow/{id}/restore":{"post":{"tags":["Workflows"],"summary":"Restore Workflow","description":"Restores a previously deleted workflow","operationId":"restoreWorkflow","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Workflow restored successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Workflow"}}}}},"security":[{"bearer-key":[]}]}},"/workflow/{id}/clone":{"post":{"tags":["Workflows"],"summary":"Clone Workflow","description":"Creates a copy of an existing workflow","operationId":"cloneWorkflow","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneWorkflow"}}},"required":true},"responses":{"200":{"description":"Workflow cloned successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Workflow"}}}}},"security":[{"bearer-key":[]}]}},"/workflow/execute/{workflowId}":{"post":{"tags":["Workflows"],"summary":"Execute Workflow","description":"Executes a workflow with optional request body and configuration. Supports starting from a specific step or ending at a specific step. If no start or end step is provided, the workflow will run to completion.","operationId":"executeFlow","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"configuration_id","in":"query","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"start_from_step","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"end_at_step","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"response_type","in":"query","required":false,"schema":{"type":"string","default":"json"}}],"responses":{"200":{"description":"Workflow executed successfully","content":{"*/*":{"schema":{"type":"object"}}}},"400":{"description":"Execution failed","content":{"*/*":{"schema":{"type":"object"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}}},"security":[{"bearer-key":[]}]}},"/workflow/execute/{workflowId}/async":{"post":{"tags":["Workflows"],"summary":"Execute Workflow Async","description":"Triggers an asynchronous workflow execution. Returns immediately with an execution ID that can be used to poll for status and retrieve results. Use GET /workflow/{id}/executions/{executionId} to check status.","operationId":"executeFlowAsync","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"configuration_id","in":"query","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"start_from_step","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"end_at_step","in":"query","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"202":{"description":"Workflow execution started","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AsyncExecutionResponse"}}}},"400":{"description":"Invalid parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AsyncExecutionResponse"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AsyncExecutionResponse"}}}}},"security":[{"bearer-key":[]}]}},"/workflow/execute/external/{workflowId}":{"post":{"tags":["external","Workflows"],"summary":"Execute Workflow (External)","description":"Executes a workflow using external API key authentication","operationId":"executeExternalFlow","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-API-KEY","in":"header","required":false,"schema":{"type":"string"}},{"name":"api_key","in":"query","required":false,"schema":{"type":"string"}},{"name":"configuration_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"response_type","in":"query","required":false,"schema":{"type":"string","default":"json"}},{"name":"start_from_step","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"end_at_step","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"callback_url","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"*/*":{"schema":{"type":"string"}}}},"responses":{"200":{"description":"Workflow executed successfully","content":{"*/*":{"schema":{"type":"object"}}}},"400":{"description":"Execution failed","content":{"*/*":{"schema":{"type":"object"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}}},"security":[{"api-key-query":[]},{"api-key":[]}]},"options":{"tags":["external","Workflows"],"summary":"Handle Webhook Options","description":"Handles OPTIONS requests for webhook validation","operationId":"handleWebhookOptions","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"string"}},{"name":"WebHook-Request-Origin","in":"header","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}}},"/workflow/execute/external/{workflowId}/async":{"post":{"tags":["external","Workflows"],"summary":"Execute Workflow Async (External)","description":"Triggers an asynchronous workflow execution using external API key authentication. Returns immediately with an execution ID that can be used to poll for status and retrieve results. Use GET /workflow/external/{id}/executions/{executionId} to check status.","operationId":"executeExternalFlowAsync","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-API-KEY","in":"header","required":false,"schema":{"type":"string"}},{"name":"api_key","in":"query","required":false,"schema":{"type":"string"}},{"name":"configuration_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"start_from_step","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"end_at_step","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"callback_url","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"*/*":{"schema":{"type":"string"}}}},"responses":{"202":{"description":"Workflow execution started","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AsyncExecutionResponse"}}}},"400":{"description":"Invalid parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AsyncExecutionResponse"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AsyncExecutionResponse"}}}}},"security":[{"api-key-query":[]},{"api-key":[]}]}},"/users":{"get":{"tags":["Users"],"summary":"Get current user","description":"Retrieves the current authenticated user's details","operationId":"getCurrentUser","responses":{"200":{"description":"User details retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/User"}}}},"404":{"description":"User not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/User"}}}}},"security":[{"bearer-key":[]}]},"post":{"tags":["Users"],"summary":"Create a new user","description":"Creates a new user with the provided details","operationId":"createUser","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}},"required":true},"responses":{"201":{"description":"User created successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/User"}}}}},"security":[{"bearer-key":[]}]}},"/transform/test":{"post":{"tags":["Transform"],"summary":"Test transform","description":"Test a data transformation with Laminar","operationId":"testTransform","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransformDto"}}},"required":true},"responses":{"400":{"description":"Bad request, invalid input or program","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}},"200":{"description":"Transformation successful","content":{"*/*":{"schema":{"type":"string"}}}}},"deprecated":true}},"/service-accounts":{"post":{"tags":["Service Accounts"],"summary":"Create Service Account","description":"Creates a new service account with auto-generated credentials","operationId":"createServiceAccount","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateServiceAccountRequest"}}},"required":true},"responses":{"201":{"description":"Service account created successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ServiceAccountResponse"}}}}},"security":[{"bearer-key":[]}]}},"/service-accounts/{serviceAccountId}/workspaces/{workspaceId}":{"post":{"tags":["Service Accounts"],"summary":"Add to Workspace","description":"Assigns a service account to a workspace","operationId":"addToWorkspace","parameters":[{"name":"serviceAccountId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"workspaceId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"409":{"description":"Service account is already in this workspace","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ServiceAccountResponse"}}}},"200":{"description":"Service account added to workspace","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ServiceAccountResponse"}}}}},"security":[{"bearer-key":[]}]},"delete":{"tags":["Service Accounts"],"summary":"Remove from Workspace","description":"Removes a service account from a workspace","operationId":"removeFromWorkspace","parameters":[{"name":"serviceAccountId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"workspaceId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Service account removed from workspace","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ServiceAccountResponse"}}}}},"security":[{"bearer-key":[]}]}},"/service-accounts/{serviceAccountId}/regenerate-credentials":{"post":{"tags":["Service Accounts"],"summary":"Regenerate Credentials","description":"Generates a new password for the service account","operationId":"regenerateCredentials","parameters":[{"name":"serviceAccountId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Service account not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ServiceAccountCredentialsResponse"}}}},"200":{"description":"Credentials regenerated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ServiceAccountCredentialsResponse"}}}}},"security":[{"bearer-key":[]}]}},"/rpa-coordinates/start-recording":{"post":{"tags":["RPA Coordinate Recording"],"summary":"Start coordinate recording session","description":"Initiates a coordinate recording session with external RPA service","operationId":"startCoordinateRecording","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartCoordinateRecordingRequest"}}},"required":true},"responses":{"400":{"description":"Invalid request parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/StartCoordinateRecordingResponse"}}}},"500":{"description":"Failed to start recording session","content":{"*/*":{"schema":{"$ref":"#/components/schemas/StartCoordinateRecordingResponse"}}}},"200":{"description":"Recording session started successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/StartCoordinateRecordingResponse"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/StartCoordinateRecordingResponse"}}}}},"security":[{"bearer-key":[]}]}},"/rpa-coordinates/callback/{sessionId}":{"post":{"tags":["RPA Coordinate Recording"],"summary":"Callback endpoint for coordinate recording completion","description":"Webhook endpoint called by external RPA service when recording completes","operationId":"handleCoordinateRecordingCallback","parameters":[{"name":"sessionId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoordinateRecordingCallbackRequest"}}},"required":true},"responses":{"400":{"description":"Invalid callback data","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"200":{"description":"Callback processed successfully","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"404":{"description":"Session not found","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}}}}},"/lami/public":{"post":{"tags":["Lami Agent"],"summary":"Generate AI Response","description":"Generates a response using Lami AI with rate limiting applied","operationId":"generateResponse","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaudePromptRequest"}}},"required":true},"responses":{"429":{"description":"Rate limit exceeded. Please try again later.","content":{"*/*":{"schema":{"type":"object"}}}},"200":{"description":"Response generated successfully","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/lami/direct":{"post":{"tags":["Lami Agent"],"summary":"Send Direct Message","description":"Sends a direct message to Lami AI agent with authentication","operationId":"sendDirectMessage","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DirectMessageRequest"}}},"required":true},"responses":{"200":{"description":"Message sent successfully","content":{"*/*":{"schema":{"type":"object"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}}},"security":[{"bearer-key":[]}]}},"/lami/conversations/workflow/{workflowId}":{"post":{"tags":["Lami Agent"],"summary":"Save multiple messages to a conversation","description":"Saves multiple messages to a conversation. If conversationId is null, a new conversation is created.","operationId":"saveMultipleMessages","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveMultipleMessagesRequest"}}},"required":true},"responses":{"200":{"description":"Messages saved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SaveMultipleMessagesResponse"}}}},"404":{"description":"Conversation or Workflow not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SaveMultipleMessagesResponse"}}}}},"deprecated":true,"security":[{"bearer-key":[]}]}},"/lami/conversation/workflow/{workflowId}":{"post":{"tags":["Lami Agent"],"summary":"Save a message to a conversation","description":"Saves a single message to a conversation.\n        If conversationId is null, a new conversation is created.\n        Returns the message ID for attachment uploads.","operationId":"saveMessage","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveMessageRequest"}}},"required":true},"responses":{"200":{"description":"Message saved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SaveMessageResponse"}}}},"404":{"description":"Conversation or Workflow not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SaveMessageResponse"}}}},"400":{"description":"Invalid message content","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SaveMessageResponse"}}}}},"deprecated":true,"security":[{"bearer-key":[]}]}},"/email-domains":{"get":{"tags":["email-domain-controller"],"summary":"List all email domains","description":"Retrieves all email domains. Only accessible to users with -laminar.run email domains.","operationId":"getAllEmailDomains","responses":{"403":{"description":"Access denied - user email must end with -laminar.run","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EmailDomain"}}}}},"200":{"description":"Email domains retrieved successfully","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]},"post":{"tags":["email-domain-controller"],"summary":"Create email domain","description":"Creates a new email domain entry. Only accessible to users with -laminar.run email domains.","operationId":"createEmailDomain","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEmailDomainRequest"}}},"required":true},"responses":{"403":{"description":"Access denied - user email must end with -laminar.run","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EmailDomain"}}}},"201":{"description":"Email domain created successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EmailDomain"}}}},"400":{"description":"Invalid request or domain already exists","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EmailDomain"}}}}},"security":[{"bearer-key":[]}]}},"/email-domains/import-from-emails":{"post":{"tags":["email-domain-controller"],"summary":"Bulk import email domains from a list of emails","description":"Parses email addresses to extract domains, removes duplicates, upserts missing domains as active. Accessible only to -laminar.run users.","operationId":"importFromEmails","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkImportEmailDomainsRequest"}}},"required":true},"responses":{"400":{"description":"Invalid request payload","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EmailDomain"}}}}},"403":{"description":"Access denied - user email must end with -laminar.run","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EmailDomain"}}}}},"200":{"description":"Domains imported successfully","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]}},"/dev-mode/branches/{workflowId}":{"get":{"tags":["Dev Mode"],"summary":"Get the user's Dev Mode branch","operationId":"branch","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}},"security":[{"bearer-key":[]}]},"post":{"tags":["Dev Mode"],"summary":"Create or return the user's Dev Mode branch for a workflow","description":"Creates a user-scoped branch from the workflow's current production snapshot. Returns the existing branch when the user already has one.","operationId":"createBranch","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DevModeWorkspaceSnapshotResponse"}}}}},"security":[{"bearer-key":[]}]},"delete":{"tags":["Dev Mode"],"summary":"Discard the user's Dev Mode branch","operationId":"deleteBranch","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK"}},"security":[{"bearer-key":[]}]}},"/dev-mode/branches/{workflowId}/steps":{"get":{"tags":["Dev Mode"],"summary":"List a Dev Mode branch's steps","operationId":"listSteps","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DevModeStepSummaryResponse"}}}}}},"security":[{"bearer-key":[]}]},"post":{"tags":["Dev Mode"],"summary":"Add a Dev Mode branch step","operationId":"addStep","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddDevModeStepRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DevModeStepMutationResponse"}}}}},"security":[{"bearer-key":[]}]}},"/dev-mode/branches/{workflowId}/run":{"post":{"tags":["Dev Mode"],"summary":"Run the user's Dev Mode branch","description":"Executes draft steps directly. RPA steps resolve the selected vmId on the server. HTTP requests and RPA actions have real external side effects.","operationId":"run","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunDevModeDraftRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DevModeRunResponse"}}}}},"security":[{"bearer-key":[]}]}},"/dev-mode/branches/{workflowId}/run/stop":{"post":{"tags":["Dev Mode"],"summary":"Stop a workflow's active Dev Mode run after its current step","operationId":"stop","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DevModeStopResponse"}}}}},"security":[{"bearer-key":[]}]}},"/dev-mode/branches/{workflowId}/reorder":{"post":{"tags":["Dev Mode"],"summary":"Reorder Dev Mode branch steps","operationId":"reorder","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReorderDevModeStepsRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DevModeWorkspaceSnapshotResponse"}}}}},"security":[{"bearer-key":[]}]}},"/dev-mode/branches/{workflowId}/publish":{"post":{"tags":["Dev Mode"],"summary":"Publish the user's Dev Mode branch to its workflow","description":"Returns 409 when production changed after the branch was created.","operationId":"publish","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DevModeWorkspaceSnapshotResponse"}}}}},"security":[{"bearer-key":[]}]}},"/configurations/{externalId}/clone":{"post":{"tags":["Configuration Stores"],"summary":"Clone Configuration Store","description":"Creates a copy of an existing configuration store","operationId":"cloneConfigurationStore","parameters":[{"name":"externalId","in":"path","required":true,"schema":{"type":"string"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneConfigurationStoreRequest"}}},"required":true},"responses":{"201":{"description":"Configuration store cloned successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ConfigurationStore"}}}}},"security":[{"bearer-key":[]}]}},"/configurations/external":{"post":{"tags":["external","Configuration Stores"],"summary":"Create Configuration Store (External)","description":"Creates a new configuration store via external API key authentication","operationId":"createConfigurationStoreExternal","parameters":[{"name":"X-API-KEY","in":"header","required":false,"schema":{"type":"string"}},{"name":"api_key","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateConfigurationStoreRequest"}}},"required":true},"responses":{"201":{"description":"Configuration store created successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ConfigurationStore"}}}}},"security":[{"api-key-query":[]},{"api-key":[]}]}},"/auth/signin":{"post":{"tags":["Authentication"],"summary":"Get a token","description":"Get a token from Laminar Auth","operationId":"login","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful token retrieval","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"string"}}}}}}},"/auth/register":{"post":{"tags":["Authentication"],"summary":"Create a new user","description":"Creates a new user in the authentication system","operationId":"createNewUser","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/auth/refresh":{"post":{"tags":["Authentication"],"summary":"Refresh token","description":"Get a new access token using a refresh token","operationId":"refreshToken","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshTokenRequest"}}},"required":true},"responses":{"401":{"description":"Invalid or expired refresh token","content":{"*/*":{"schema":{"type":"string"}}}},"200":{"description":"Successfully refreshed token","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}}}}},"/auth/password-reset/verify":{"post":{"tags":["Authentication"],"summary":"Verify reset code and set new password","description":"Verifies the reset code and updates the password","operationId":"verifyAndResetPassword","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyPasswordResetRequest"}}},"required":true},"responses":{"200":{"description":"Password reset successful","content":{"*/*":{"schema":{"type":"string"}}}},"400":{"description":"Invalid or expired reset code","content":{"*/*":{"schema":{"type":"string"}}}}}}},"/auth/password-reset/initiate":{"post":{"tags":["Authentication"],"summary":"Initiate password reset","description":"Sends a verification code to the user's email","operationId":"initiatePasswordReset","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiatePasswordResetRequest"}}},"required":true},"responses":{"404":{"description":"User not found","content":{"*/*":{"schema":{"type":"string"}}}},"200":{"description":"Reset code sent successfully","content":{"*/*":{"schema":{"type":"string"}}}}}}},"/auth/change-password":{"post":{"tags":["Authentication"],"summary":"Change current user's password","description":"Validates the current password and updates the authenticated user's password","operationId":"changePassword","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordRequest"}}},"required":true},"responses":{"401":{"description":"Not authenticated or current password is invalid","content":{"*/*":{"schema":{"type":"string"}}}},"200":{"description":"Password changed successfully","content":{"*/*":{"schema":{"type":"string"}}}},"500":{"description":"Password change failed","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]}},"/attachments/conversations/{conversationId}/messages/{messageId}/upload":{"post":{"tags":["Attachments"],"summary":"Upload Attachment","description":"Uploads a file attachment to a specific message in a conversation","operationId":"uploadAttachment","parameters":[{"name":"conversationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"messageId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","format":"binary"}}}}}},"responses":{"400":{"description":"Invalid file or request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"File uploaded successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AttachmentUploadResponse"}}}},"404":{"description":"Conversation or message not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"bearer-key":[]}]}},"/attachments/conversations/{conversationId}/messages/{messageId}/batch-upload":{"post":{"tags":["Attachments"],"summary":"Batch Upload Attachments","description":"Uploads multiple file attachments to a specific message in a conversation","operationId":"uploadBatchAttachments","parameters":[{"name":"conversationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"messageId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"files","in":"query","required":true,"schema":{"type":"array","items":{"type":"string","format":"binary"}}}],"responses":{"400":{"description":"Invalid request or no files provided","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Batch upload completed (may include partial failures)","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BatchAttachmentUploadResponse"}}}},"404":{"description":"Conversation or message not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"bearer-key":[]}]}},"/api-keys":{"post":{"tags":["API Keys"],"summary":"Create API Key","description":"Creates a new API key for accessing Laminar services","operationId":"createApiKey","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKey"}}},"required":true},"responses":{"200":{"description":"API key created successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiKey"}}}}},"security":[{"bearer-key":[]}]}},"/workspaces/{workspaceId}/workflows":{"get":{"tags":["Workspaces"],"summary":"Get all workflows in workspace","description":"Retrieves all workflows in the specified workspace","operationId":"getAllWorkflowsInWorkspace","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Workflows retrieved successfully","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]}},"/workspaces/{workspaceId}/workflows/archived":{"get":{"tags":["Workspaces"],"summary":"Get archived workflows in workspace","description":"Retrieves all archived workflows in the specified workspace","operationId":"getAllArchivedWorkflows","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Archived workflows retrieved successfully","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]}},"/workspaces/{workspaceId}/service-accounts":{"get":{"tags":["Workspaces"],"summary":"Get service accounts in workspace","description":"Retrieves all service accounts assigned to the specified workspace","operationId":"getServiceAccountsByWorkspace","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Service accounts retrieved successfully","content":{"*/*":{"schema":{"type":"string"}}}},"404":{"description":"Workspace not found","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ServiceAccountResponse"}}}}}},"security":[{"bearer-key":[]}]}},"/workspaces/{workspaceId}/flows":{"get":{"tags":["Workspaces"],"summary":"Get all flows in workspace","description":"Retrieves all flows in the specified workspace","operationId":"getAllFlowsInWorkspace","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Flows retrieved successfully","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]}},"/workspaces/{workspaceId}/api-keys":{"get":{"tags":["Workspaces"],"summary":"Get API keys in workspace","description":"Retrieves all API keys in the specified workspace","operationId":"getApiKeys","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"API keys retrieved successfully","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]}},"/workspaces/invitations/received":{"get":{"tags":["Workspace Invitations"],"summary":"Get Received Invitations","description":"Retrieves all invitations received by the current user, optionally filtered by status","operationId":"getInvitationsReceivedByUser","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","enum":["PENDING","ACCEPTED","DECLINED","EXPIRED","REVOKED"]}}}],"responses":{"200":{"description":"Invitations retrieved successfully","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]}},"/workspaces/invitations/created":{"get":{"tags":["Workspace Invitations"],"summary":"Get Created Invitations","description":"Retrieves all invitations created by the current user, optionally filtered by workspace","operationId":"getInvitationsCreatedByUser","parameters":[{"name":"workspaceId","in":"query","required":false,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Invitations retrieved successfully","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]}},"/workflow/{workflowId}/conversations/{conversationId}/messages":{"get":{"tags":["Workflows"],"summary":"Get Conversation Messages","description":"Retrieves all messages from a specific conversation","operationId":"getConversationMessages","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"conversationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Messages retrieved successfully","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]}},"/workflow/{id}":{"get":{"tags":["Workflows"],"summary":"Get Workflow","description":"Retrieves a specific workflow by ID","operationId":"getWorkflow","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Workflow not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Workflow"}}}},"200":{"description":"Workflow retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Workflow"}}}}},"security":[{"bearer-key":[]}]},"delete":{"tags":["Workflows"],"summary":"Delete Workflow","description":"Deletes a specific workflow","operationId":"deleteWorkflow","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"Workflow deleted successfully"}},"security":[{"bearer-key":[]}]}},"/workflow/{id}/executions":{"get":{"tags":["Workflows"],"summary":"Get Workflow Executions","description":"Retrieves paginated workflow executions with optional date filtering, status filtering, and sorting","operationId":"getWorkflowExecutions","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":20}},{"name":"startDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"endDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"search","in":"query","required":false,"schema":{"type":"string"}},{"name":"configurationId","in":"query","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"ids","in":"query","required":false,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"sortDirection","in":"query","required":false,"schema":{"type":"string","default":"desc"}}],"responses":{"200":{"description":"Workflow executions retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageWorkflowExecutionResponse"}}}}},"security":[{"bearer-key":[]}]}},"/workflow/{id}/executions/{executionId}":{"get":{"tags":["Workflows"],"summary":"Get Workflow Execution","description":"Retrieves a specific workflow execution by ID","operationId":"getWorkflowExecution","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"executionId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Execution not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/WorkflowExecutionResponse"}}}},"200":{"description":"Workflow execution retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/WorkflowExecutionResponse"}}}}},"security":[{"bearer-key":[]}]}},"/workflow/{id}/executions/{executionId}/status":{"get":{"tags":["Workflows"],"summary":"Get Execution Status","description":"Lightweight endpoint to check execution status for async polling. Returns only status information without full execution details.","operationId":"getExecutionStatus","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"executionId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Execution status retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ExecutionStatusResponse"}}}},"404":{"description":"Execution not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ExecutionStatusResponse"}}}}},"security":[{"bearer-key":[]}]}},"/workflow/{id}/executions/{executionId}/result":{"get":{"tags":["Workflows"],"summary":"Get Execution Result","description":"Returns only the result of the last step, matching the sync execution response format. Returns 202 Accepted if execution is still in progress.","operationId":"getExecutionResult","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"executionId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Execution not found","content":{"*/*":{"schema":{"type":"object"}}}},"202":{"description":"Execution still in progress","content":{"*/*":{"schema":{"type":"object"}}}},"200":{"description":"Execution result retrieved successfully","content":{"*/*":{"schema":{"type":"object"}}}}},"security":[{"bearer-key":[]}]}},"/workflow/{id}/executions/{executionId}/recording":{"get":{"tags":["Workflows"],"summary":"Get Execution Recording URL","description":"Returns a short-lived (24 hour) signed URL for the execution's stitched recording","operationId":"getExecutionRecordingUrl","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"executionId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"403":{"description":"Access denied","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RecordingUrlResponse"}}}},"404":{"description":"Recording not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RecordingUrlResponse"}}}},"200":{"description":"Recording URL retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RecordingUrlResponse"}}}}},"security":[{"bearer-key":[]}]}},"/workflow/{id}/executions/{executionId}/global-workflow-object":{"get":{"tags":["Workflows"],"summary":"Get Full Global Workflow Object","description":"Retrieves the complete global workflow object as a JSON string","operationId":"getFullGlobalWorkflowObject","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"executionId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"403":{"description":"Access denied","content":{"*/*":{"schema":{"type":"string"}}}},"200":{"description":"Global workflow object retrieved successfully","content":{"text/plain":{}}},"404":{"description":"Execution not found","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]}},"/workflow/{id}/executions/{executionId}/full":{"get":{"tags":["Workflows"],"summary":"Get Full Workflow Execution","description":"Retrieves the complete untruncated workflow execution data","operationId":"getFullWorkflowExecution","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"executionId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"403":{"description":"Access denied","content":{"*/*":{"schema":{"$ref":"#/components/schemas/WorkflowExecutionResponse"}}}},"404":{"description":"Execution not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/WorkflowExecutionResponse"}}}},"200":{"description":"Full workflow execution retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/WorkflowExecutionResponse"}}}}},"security":[{"bearer-key":[]}]}},"/workflow/{id}/executions/{executionId}/flows/{flowRunId}/transformation":{"get":{"tags":["Workflows"],"summary":"Get Full FlowRun Transformation","description":"Retrieves the complete untruncated transformation data for a specific flow run as a JSON string","operationId":"getFullFlowRunTransformation","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"executionId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"flowRunId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"403":{"description":"Access denied","content":{"*/*":{"schema":{"type":"string"}}}},"404":{"description":"FlowRun not found","content":{"*/*":{"schema":{"type":"string"}}}},"200":{"description":"FlowRun transformation retrieved successfully","content":{"text/plain":{}}}},"security":[{"bearer-key":[]}]}},"/workflow/{id}/executions/{executionId}/flows/{flowRunId}/response":{"get":{"tags":["Workflows"],"summary":"Get Full FlowRun Response","description":"Retrieves the complete untruncated response data for a specific flow run as a JSON string","operationId":"getFullFlowRunResponse","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"executionId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"flowRunId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"403":{"description":"Access denied","content":{"*/*":{"schema":{"type":"string"}}}},"200":{"description":"FlowRun response retrieved successfully","content":{"text/plain":{}}},"404":{"description":"FlowRun not found","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]}},"/workflow/{id}/executions/{executionId}/flows/{flowRunId}/recording":{"get":{"tags":["Workflows"],"summary":"Get FlowRun Recording URL","description":"Returns a short-lived (24 hour) signed URL for a single flow run's (step) recording","operationId":"getFlowRunRecordingUrl","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"executionId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"flowRunId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"403":{"description":"Access denied","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RecordingUrlResponse"}}}},"404":{"description":"Recording not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RecordingUrlResponse"}}}},"200":{"description":"Recording URL retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RecordingUrlResponse"}}}}},"security":[{"bearer-key":[]}]}},"/workflow/{id}/executions/{executionId}/flows/{flowRunId}/program":{"get":{"tags":["Workflows"],"summary":"Get Full FlowRun Program","description":"Retrieves the complete untruncated program code for a specific flow run","operationId":"getFullFlowRunProgram","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"executionId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"flowRunId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"403":{"description":"Access denied","content":{"*/*":{"schema":{"type":"string"}}}},"404":{"description":"FlowRun not found","content":{"*/*":{"schema":{"type":"string"}}}},"200":{"description":"FlowRun program retrieved successfully","content":{"text/plain":{}}}},"security":[{"bearer-key":[]}]}},"/workflow/external/{id}/executions":{"get":{"tags":["external","Workflows"],"summary":"Get Workflow Executions (External)","description":"Retrieves paginated workflow executions with optional date filtering, status filtering, and sorting using external API key authentication","operationId":"getWorkflowExecutionsExternal","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-API-KEY","in":"header","required":false,"schema":{"type":"string"}},{"name":"api_key","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":20}},{"name":"startDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"endDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"search","in":"query","required":false,"schema":{"type":"string"}},{"name":"configurationId","in":"query","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"ids","in":"query","required":false,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"sortDirection","in":"query","required":false,"schema":{"type":"string","default":"desc"}}],"responses":{"200":{"description":"Workflow executions retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageWorkflowExecutionResponse"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageWorkflowExecutionResponse"}}}}},"security":[{"api-key-query":[]},{"api-key":[]}]}},"/workflow/external/{id}/executions/{executionId}":{"get":{"tags":["external","Workflows"],"summary":"Get Workflow Execution (External)","description":"Retrieves a specific workflow execution by ID using external API key authentication","operationId":"getWorkflowExecutionExternal","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"executionId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-API-KEY","in":"header","required":false,"schema":{"type":"string"}},{"name":"api_key","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"404":{"description":"Execution not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/WorkflowExecutionResponse"}}}},"200":{"description":"Workflow execution retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/WorkflowExecutionResponse"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/WorkflowExecutionResponse"}}}}},"security":[{"api-key-query":[]},{"api-key":[]}]}},"/workflow/external/{id}/executions/{executionId}/status":{"get":{"tags":["external","Workflows"],"summary":"Get Execution Status (External)","description":"Lightweight endpoint to check execution status for async polling using API key authentication.","operationId":"getExecutionStatusExternal","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"executionId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-API-KEY","in":"header","required":false,"schema":{"type":"string"}},{"name":"api_key","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Execution status retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ExecutionStatusResponse"}}}},"404":{"description":"Execution not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ExecutionStatusResponse"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ExecutionStatusResponse"}}}}},"security":[{"api-key-query":[]},{"api-key":[]}]}},"/workflow/external/{id}/executions/{executionId}/result":{"get":{"tags":["external","Workflows"],"summary":"Get Execution Result (External)","description":"Returns only the result of the last step using API key authentication. Returns 202 Accepted if execution is still in progress.","operationId":"getExecutionResultExternal","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"executionId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-API-KEY","in":"header","required":false,"schema":{"type":"string"}},{"name":"api_key","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"404":{"description":"Execution not found","content":{"*/*":{"schema":{"type":"object"}}}},"202":{"description":"Execution still in progress","content":{"*/*":{"schema":{"type":"object"}}}},"200":{"description":"Execution result retrieved successfully","content":{"*/*":{"schema":{"type":"object"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}}},"security":[{"api-key-query":[]},{"api-key":[]}]}},"/workflow/external/{id}/executions/{executionId}/global-workflow-object":{"get":{"tags":["external","Workflows"],"summary":"Get Full Global Workflow Object (External)","description":"Retrieves the complete global workflow object as a JSON string using external API key authentication","operationId":"getFullGlobalWorkflowObjectExternal","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"executionId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-API-KEY","in":"header","required":false,"schema":{"type":"string"}},{"name":"api_key","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Global workflow object retrieved successfully","content":{"text/plain":{}}},"404":{"description":"Execution not found","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"api-key-query":[]},{"api-key":[]}]}},"/workflow/external/{id}/executions/{executionId}/full":{"get":{"tags":["external","Workflows"],"summary":"Get Full Workflow Execution (External)","description":"Retrieves the complete untruncated workflow execution data using external API key authentication","operationId":"getFullWorkflowExecutionExternal","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"executionId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-API-KEY","in":"header","required":false,"schema":{"type":"string"}},{"name":"api_key","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"404":{"description":"Execution not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/WorkflowExecutionResponse"}}}},"200":{"description":"Full workflow execution retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/WorkflowExecutionResponse"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/WorkflowExecutionResponse"}}}}},"security":[{"api-key-query":[]},{"api-key":[]}]}},"/workflow/external/{id}/executions/{executionId}/flows/{flowRunId}/transformation":{"get":{"tags":["external","Workflows"],"summary":"Get Full FlowRun Transformation (External)","description":"Retrieves the complete untruncated transformation data for a specific flow run as a JSON string using external API key authentication","operationId":"getFullFlowRunTransformationExternal","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"executionId","in":"path","required":true,"schema":{"type":"string"}},{"name":"flowRunId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-API-KEY","in":"header","required":false,"schema":{"type":"string"}},{"name":"api_key","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"404":{"description":"FlowRun not found","content":{"*/*":{"schema":{"type":"string"}}}},"200":{"description":"FlowRun transformation retrieved successfully","content":{"text/plain":{}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"api-key-query":[]},{"api-key":[]}]}},"/workflow/external/{id}/executions/{executionId}/flows/{flowRunId}/response":{"get":{"tags":["external","Workflows"],"summary":"Get Full FlowRun Response (External)","description":"Retrieves the complete untruncated response data for a specific flow run as a JSON string using external API key authentication","operationId":"getFullFlowRunResponseExternal","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"executionId","in":"path","required":true,"schema":{"type":"string"}},{"name":"flowRunId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-API-KEY","in":"header","required":false,"schema":{"type":"string"}},{"name":"api_key","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"FlowRun response retrieved successfully","content":{"text/plain":{}}},"404":{"description":"FlowRun not found","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"api-key-query":[]},{"api-key":[]}]}},"/workflow/external/{id}/executions/{executionId}/flows/{flowRunId}/program":{"get":{"tags":["external","Workflows"],"summary":"Get Full FlowRun Program (External)","description":"Retrieves the complete untruncated program code for a specific flow run using external API key authentication","operationId":"getFullFlowRunProgramExternal","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"executionId","in":"path","required":true,"schema":{"type":"string"}},{"name":"flowRunId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-API-KEY","in":"header","required":false,"schema":{"type":"string"}},{"name":"api_key","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"404":{"description":"FlowRun not found","content":{"*/*":{"schema":{"type":"string"}}}},"200":{"description":"FlowRun program retrieved successfully","content":{"text/plain":{}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"api-key-query":[]},{"api-key":[]}]}},"/workflow/execute/external/{workflowId}/download":{"get":{"tags":["external","Workflows"],"summary":"Download from External Workflow","description":"Downloads binary data from external workflow execution","operationId":"downloadFromExternal","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"string"}},{"name":"requestBody","in":"query","required":false,"schema":{"type":"string"}},{"name":"X-API-KEY","in":"header","required":false,"schema":{"type":"string"}},{"name":"api_key","in":"query","required":false,"schema":{"type":"string"}},{"name":"configuration_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"start_from_step","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"end_at_step","in":"query","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"File downloaded successfully","content":{"*/*":{"schema":{"type":"object"}}}},"400":{"description":"No binary data available","content":{"*/*":{"schema":{"type":"object"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}}},"security":[{"api-key-query":[]},{"api-key":[]}]}},"/rpa-coordinates/status/{sessionId}":{"get":{"tags":["RPA Coordinate Recording"],"summary":"Subscribe to coordinate recording status updates","description":"Server-Sent Events stream for real-time coordinate recording status updates","operationId":"subscribeToStatusUpdates","parameters":[{"name":"sessionId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Status stream established","content":{"text/event-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CoordinateRecordingStatusUpdate"}}}}},"404":{"description":"Session not found","content":{"text/event-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CoordinateRecordingStatusUpdate"}}}}}}}},"/rpa-coordinates/channel-locks":{"get":{"tags":["RPA Coordinate Recording"],"operationId":"getChannelLocks","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ChannelLockInfo"}}}}}}},"delete":{"tags":["RPA Coordinate Recording"],"operationId":"releaseAllChannelLocks","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}}}}}}}},"/monitoring/dispatchers":{"get":{"tags":["monitoring-controller"],"operationId":"getDispatcherStats","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ClusterDispatcherStatsResponse"}}}}}}},"/monitoring/dispatchers/summary":{"get":{"tags":["monitoring-controller"],"operationId":"getDispatcherSummary","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ClusterSummaryDto"}}}}}}},"/flows/{id}":{"get":{"tags":["Flows"],"summary":"Get Flow","description":"Retrieves a specific flow's details","operationId":"getFlow","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Flow not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Flow"}}}},"200":{"description":"Flow details retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Flow"}}}}},"security":[{"bearer-key":[]}]},"delete":{"tags":["Flows"],"summary":"Delete Flow","description":"Deletes a specific flow","operationId":"deleteFlow","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Flow deleted successfully"}},"security":[{"bearer-key":[]}]}},"/flows/{id}/runs":{"get":{"tags":["Flows"],"summary":"Get Flow Runs","description":"Retrieves all runs for a specific flow","operationId":"getFlowRuns","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Flow not found","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FlowRun"}}}}},"200":{"description":"Flow runs retrieved successfully","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]}},"/flows/{flowId}/versions":{"get":{"tags":["Flows"],"summary":"Get Flow Versions","description":"Retrieves all versions for a specific flow","operationId":"getFlowVersions","parameters":[{"name":"flowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Flow versions retrieved successfully","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]}},"/flows/{flowId}/versions/{versionId}":{"get":{"tags":["Flows"],"summary":"Read Flow File Version","description":"Reads a specific version of the flow file","operationId":"readFlowFileVersion","parameters":[{"name":"flowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"versionId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Flow or version not found","content":{"*/*":{"schema":{"type":"string"}}}},"200":{"description":"Flow file version read successfully","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]}},"/flows/types":{"get":{"tags":["Flows"],"summary":"Get Flow Types","description":"Retrieves all available flow types (no authentication required)","operationId":"getFlowTypes","responses":{"200":{"description":"Flow types retrieved successfully","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]}},"/flows/stats":{"get":{"tags":["Flows"],"summary":"Get Flow Stats","description":"Retrieves flow statistics for a workspace","operationId":"getFlowStats","parameters":[{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":7}}],"responses":{"200":{"description":"Flow stats retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/FlowStats"}}}}},"security":[{"bearer-key":[]}]}},"/flows/runs":{"get":{"tags":["Flows"],"summary":"Get Paginated Flow Runs","description":"Retrieves paginated flow runs for a workspace","operationId":"getPaginatedFlowRuns","parameters":[{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":20}}],"responses":{"200":{"description":"Paginated flow runs retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageFlowRunDTO"}}}}},"security":[{"bearer-key":[]}]}},"/flows/recent-runs":{"get":{"tags":["Flows"],"summary":"Get Recent Flow Runs","description":"Retrieves recent flow runs for a workspace","operationId":"getRecentFlowRuns","parameters":[{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":10}}],"responses":{"200":{"description":"Recent flow runs retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageFlowRunDTO"}}}}},"security":[{"bearer-key":[]}]}},"/flows/read/{id}":{"get":{"tags":["Flows"],"summary":"Read Flow","description":"Reads the content of a specific flow","operationId":"readFlow","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Flow not found","content":{"*/*":{"schema":{"type":"string"}}}},"200":{"description":"Flow content read successfully","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]}},"/email-domains/domain/{domain}":{"get":{"tags":["email-domain-controller"],"summary":"Get email domain by domain name","description":"Retrieves a specific email domain by domain name. Only accessible to users with -laminar.run email domains.","operationId":"getEmailDomainByDomain","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Email domain retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EmailDomain"}}}},"403":{"description":"Access denied - user email must end with -laminar.run","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EmailDomain"}}}},"404":{"description":"Email domain not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EmailDomain"}}}}},"security":[{"bearer-key":[]}]}},"/email-domains/active":{"get":{"tags":["email-domain-controller"],"summary":"List active email domains","description":"Retrieves all active email domains. Only accessible to users with -laminar.run email domains.","operationId":"getActiveEmailDomains","responses":{"200":{"description":"Active email domains retrieved successfully","content":{"*/*":{"schema":{"type":"string"}}}},"403":{"description":"Access denied - user email must end with -laminar.run","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EmailDomain"}}}}}},"security":[{"bearer-key":[]}]}},"/dev-mode/branches/{workflowId}/run/status":{"get":{"tags":["Dev Mode"],"summary":"Get a workflow's active Dev Mode run progress","operationId":"status","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DevModeRunStatusResponse"}}}}},"security":[{"bearer-key":[]}]}},"/configurations/{externalId}":{"get":{"tags":["Configuration Stores"],"summary":"Get Configuration Store","description":"Retrieves a specific configuration store by ID","operationId":"getConfigurationStore","parameters":[{"name":"externalId","in":"path","required":true,"schema":{"type":"string"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Configuration store retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ConfigurationStore"}}}},"404":{"description":"Configuration store not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ConfigurationStore"}}}}},"security":[{"bearer-key":[]}]},"delete":{"tags":["Configuration Stores"],"summary":"Delete Configuration Store","description":"Deletes a configuration store and all its properties","operationId":"deleteConfigurationStore","parameters":[{"name":"externalId","in":"path","required":true,"schema":{"type":"string"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Configuration store not found"},"204":{"description":"Configuration store deleted successfully"}},"security":[{"bearer-key":[]}]}},"/configurations/{externalId}/properties/{key}":{"get":{"tags":["Configuration Stores"],"summary":"Get Property","description":"Retrieves a specific property value by key","operationId":"getProperty","parameters":[{"name":"externalId","in":"path","required":true,"schema":{"type":"string"}},{"name":"key","in":"path","required":true,"schema":{"type":"string"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Property retrieved successfully","content":{"*/*":{"schema":{"type":"string"}}}},"404":{"description":"Property not found","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]},"delete":{"tags":["Configuration Stores"],"summary":"Remove Property","description":"Removes a property from the configuration store","operationId":"removeProperty","parameters":[{"name":"externalId","in":"path","required":true,"schema":{"type":"string"}},{"name":"key","in":"path","required":true,"schema":{"type":"string"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Property removed successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Unit"}}}}},"security":[{"bearer-key":[]}]}},"/configurations/{externalId}/keys/external":{"get":{"tags":["external","Configuration Stores"],"summary":"Get Configuration Keys (External)","description":"Retrieves list of property keys via external API key authentication","operationId":"getConfigurationKeysExternal","parameters":[{"name":"X-API-KEY","in":"header","required":false,"schema":{"type":"string"}},{"name":"api_key","in":"query","required":false,"schema":{"type":"string"}},{"name":"externalId","in":"path","required":true,"schema":{"type":"string"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Configuration keys retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ConfigurationKeysResponse"}}}},"404":{"description":"Configuration store not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ConfigurationKeysResponse"}}}},"401":{"description":"Invalid API key","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ConfigurationKeysResponse"}}}}},"security":[{"api-key-query":[]},{"api-key":[]}]}},"/configurations/workspace/{workspaceId}":{"get":{"tags":["Configuration Stores"],"summary":"Get Configuration Stores by Workspace","description":"Retrieves all configuration stores for a specific workspace","operationId":"getConfigurationStoresByWorkspace","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Configuration stores retrieved successfully","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]}},"/configurations/workspace/{workspaceId}/archived":{"get":{"tags":["Configuration Stores"],"summary":"Get Archived Configuration Stores by Workspace","description":"Retrieves all archived configuration stores for a specific workspace","operationId":"getArchivedConfigurationStoresByWorkspace","parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Archived configuration stores retrieved successfully","content":{"*/*":{"schema":{"type":"string"}}}}},"security":[{"bearer-key":[]}]}},"/auth/me":{"get":{"tags":["Authentication"],"summary":"Get current user information","description":"Retrieves information about the currently authenticated user including email domain status","operationId":"getCurrentUser_1","responses":{"401":{"description":"Not authenticated","content":{"*/*":{"schema":{"type":"string"}}}},"200":{"description":"Successfully retrieved user information","content":{"*/*":{"schema":{"$ref":"#/components/schemas/UserWithDomainStatusDto"}}}}},"security":[{"bearer-key":[]}]}},"/attachments/{attachmentId}/download":{"get":{"tags":["Attachments"],"summary":"Download Attachment","description":"Downloads a file attachment by its ID","operationId":"downloadAttachment","parameters":[{"name":"attachmentId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Attachment not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"File downloaded successfully","content":{"application/octet-stream":{}}},"403":{"description":"Access denied","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"bearer-key":[]}]}},"/attachments/conversations/{conversationId}/messages/{messageId}":{"get":{"tags":["Attachments"],"summary":"Get Message Attachments","description":"Gets all attachments for a specific message","operationId":"getMessageAttachments","parameters":[{"name":"conversationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"messageId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Attachments retrieved successfully","content":{"*/*":{"schema":{"type":"string"}}}},"404":{"description":"Conversation or message not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"bearer-key":[]}]}},"/api-keys/{id}":{"get":{"tags":["API Keys"],"summary":"Get API Key","description":"Retrieves a specific API key by ID","operationId":"getApiKey","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"API key retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiKey"}}}},"404":{"description":"API key not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiKey"}}}}},"security":[{"bearer-key":[]}]},"delete":{"tags":["API Keys"],"summary":"Delete API Key","description":"Deletes a specific API key","operationId":"deleteApiKey","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"API key not found"},"200":{"description":"API key deleted successfully"}},"security":[{"bearer-key":[]}]}},"/api-keys/resolve":{"get":{"tags":["API Keys"],"summary":"Resolve API Key","description":"Resolves an API key to its associated workspace","operationId":"resolveApiKey","parameters":[{"name":"X-API-KEY","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Workspace resolved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResolveApiKeyResponse"}}}},"401":{"description":"Invalid or missing API key","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResolveApiKeyResponse"}}}}},"security":[{"bearer-key":[]}]}},"/workspaces/invitations/{id}":{"delete":{"tags":["Workspace Invitations"],"summary":"Revoke Invitation","description":"Revokes a workspace invitation before it has been processed","operationId":"revokeInvitation","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"Invitation revoked successfully"},"404":{"description":"Invitation not found"},"403":{"description":"Not authorized to revoke this invitation"}},"security":[{"bearer-key":[]}]}},"/rpa-coordinates/channel-locks/{channelId}":{"delete":{"tags":["RPA Coordinate Recording"],"operationId":"releaseChannelLock","parameters":[{"name":"channelId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/configurations/{externalId}/properties/{key}/external":{"delete":{"tags":["external","Configuration Stores"],"summary":"Remove Property (External)","description":"Removes a property from the configuration store via external API key authentication","operationId":"removePropertyExternal","parameters":[{"name":"X-API-KEY","in":"header","required":false,"schema":{"type":"string"}},{"name":"api_key","in":"query","required":false,"schema":{"type":"string"}},{"name":"externalId","in":"path","required":true,"schema":{"type":"string"}},{"name":"key","in":"path","required":true,"schema":{"type":"string"}},{"name":"workspaceId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"401":{"description":"Invalid API key"},"404":{"description":"Configuration store or property not found"},"200":{"description":"Property removed successfully"}},"security":[{"api-key-query":[]},{"api-key":[]}]}},"/configurations/{externalId}/external":{"delete":{"tags":["external","Configuration Stores"],"summary":"Delete Configuration Store (External)","description":"Archives a configuration store via external API key authentication","operationId":"deleteConfigurationStoreExternal","parameters":[{"name":"X-API-KEY","in":"header","required":false,"schema":{"type":"string"}},{"name":"api_key","in":"query","required":false,"schema":{"type":"string"}},{"name":"externalId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"404":{"description":"Configuration store not found"},"204":{"description":"Configuration store archived successfully"},"401":{"description":"Invalid API key"}},"security":[{"api-key-query":[]},{"api-key":[]}]}},"/attachments/{attachmentId}":{"delete":{"tags":["Attachments"],"summary":"Delete Attachment","description":"Deletes a file attachment by its ID","operationId":"deleteAttachment","parameters":[{"name":"attachmentId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Attachment not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Access denied","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"204":{"description":"Attachment deleted successfully","content":{"*/*":{"schema":{"type":"object"}}}}},"security":[{"bearer-key":[]}]}}},"components":{"schemas":{"User":{"required":["email","firstName","lastName"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string"}}},"UserWorkspace":{"required":["role"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"workspace":{"$ref":"#/components/schemas/Workspace"},"user":{"$ref":"#/components/schemas/User"},"role":{"type":"string","enum":["OWNER","ADMIN","MEMBER","GUEST","AGENT"]}}},"Workspace":{"required":["name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}}},"UpdateIssueRequest":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["OPEN","IN_PROGRESS","BLOCKED","REVIEW","DONE","CLOSED"]},"assignedUserId":{"type":"integer","format":"int64"}}},"IssueResponse":{"required":["createdAt","description","id","status","title","updatedAt"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"title":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["OPEN","IN_PROGRESS","BLOCKED","REVIEW","DONE","CLOSED"]},"assignee":{"$ref":"#/components/schemas/UserDto"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}}},"UserDto":{"required":["email","firstName","id","lastName"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"email":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"}}},"UpdateWorkflow":{"required":["workflowId"],"type":"object","properties":{"workflowId":{"type":"integer","format":"int64"},"name":{"type":"string"},"description":{"type":"string"}}},"Workflow":{"required":["description","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"description":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"archivedAt":{"type":"string","format":"date-time"}}},"UpdateServiceAccountRequest":{"required":["name"],"type":"object","properties":{"name":{"type":"string"}}},"ServiceAccountResponse":{"required":["id","name","username","workspaceIds"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"workspaceIds":{"type":"array","items":{"type":"integer","format":"int64"}},"createdAt":{"type":"string","format":"date-time"}}},"UpdateFlow":{"required":["flowId"],"type":"object","properties":{"flowId":{"type":"integer","format":"int64"},"name":{"type":"string"},"description":{"type":"string"},"program":{"type":"string"},"language":{"type":"string"}}},"Flow":{"required":["description","executionOrder","flowType","language","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"description":{"type":"string"},"language":{"type":"string"},"currentFlowVersion":{"$ref":"#/components/schemas/FlowVersion"},"executionOrder":{"type":"integer","format":"int32"},"createdAt":{"type":"string","format":"date-time"},"flowType":{"type":"string","enum":["HTTP_REQUEST","GENERAL_FUNCTION","MANAGE_CONFIG","MANAGE_CRON","SHELL_SCRIPT","RPA"]}}},"FlowVersion":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"program":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}}},"UpdateEmailDomainRequest":{"type":"object","properties":{"domain":{"type":"string","description":"The email domain name","example":"example.com"},"isActive":{"type":"boolean","description":"Whether the domain is active","example":true}},"description":"Request to update an existing email domain"},"EmailDomain":{"required":["domain","isActive"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"domain":{"type":"string"},"isActive":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"active":{"type":"boolean","writeOnly":true}}},"EditDevModeStepRequest":{"type":"object","properties":{"name":{"maxLength":255,"minLength":0,"type":"string"},"description":{"maxLength":255,"minLength":0,"type":"string"},"program":{"maxLength":8388608,"minLength":0,"type":"string"},"language":{"type":"string"},"flowType":{"type":"string","enum":["HTTP_REQUEST","GENERAL_FUNCTION","MANAGE_CONFIG","MANAGE_CRON","SHELL_SCRIPT","RPA"]}}},"DevModeStep":{"required":["description","executionOrder","flowType","key","language","name","program"],"type":"object","properties":{"key":{"type":"string"},"flowId":{"type":"integer","format":"int64"},"name":{"type":"string"},"description":{"type":"string"},"language":{"type":"string"},"flowType":{"type":"string","enum":["HTTP_REQUEST","GENERAL_FUNCTION","MANAGE_CONFIG","MANAGE_CRON","SHELL_SCRIPT","RPA"]},"executionOrder":{"type":"integer","format":"int32"},"program":{"type":"string"}}},"DevModeStepMutationResponse":{"required":["step","workspace"],"type":"object","properties":{"step":{"$ref":"#/components/schemas/DevModeStep"},"workspace":{"$ref":"#/components/schemas/DevModeWorkspaceSnapshotResponse"}}},"DevModeWorkspaceSnapshotResponse":{"required":["description","id","loadedAt","name","steps","workspaceId"],"type":"object","properties":{"workspaceId":{"type":"integer","format":"int64"},"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"description":{"type":"string"},"loadedAt":{"type":"string","format":"date-time"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/DevModeStep"}}}},"PropertyDTO":{"required":["key","value"],"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}}},"UpdateConfigurationDTO":{"required":["externalId","id","name","properties","workspaceId"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"workspaceId":{"type":"integer","format":"int64"},"name":{"type":"string"},"externalId":{"type":"string"},"properties":{"type":"array","items":{"$ref":"#/components/schemas/PropertyDTO"}}}},"ConfigurationStore":{"required":["properties"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"workspaceId":{"type":"integer","format":"int64"},"name":{"type":"string"},"externalId":{"type":"string"},"archivedAt":{"type":"string","format":"date-time"},"properties":{"uniqueItems":true,"type":"array","items":{"$ref":"#/components/schemas/Property"}}}},"Property":{"required":["key","value"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"key":{"type":"string"},"value":{"type":"string"}}},"Unit":{"type":"object"},"BulkUpdatePropertiesRequest":{"required":["properties"],"type":"object","properties":{"properties":{"type":"array","items":{"$ref":"#/components/schemas/PropertyDTO"}}}},"RemoveUserFromWorkspaceRequest":{"required":["userEmail"],"type":"object","properties":{"userEmail":{"type":"string"}}},"CreateIssueRequest":{"required":["description","title"],"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"assignedUserId":{"type":"integer","format":"int64"}}},"InviteUserRequest":{"required":["role","userEmail","workspaceId"],"type":"object","properties":{"userEmail":{"type":"string"},"workspaceId":{"type":"integer","format":"int64"},"role":{"type":"string","enum":["OWNER","ADMIN","MEMBER","GUEST","AGENT"]}}},"InvitationResponse":{"required":["expiresAt","id","invitedBy","invitedEmail","status","workspaceId","workspaceName"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"workspaceId":{"type":"integer","format":"int64"},"workspaceName":{"type":"string"},"status":{"type":"string","enum":["PENDING","ACCEPTED","DECLINED","EXPIRED","REVOKED"]},"invitedEmail":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"},"invitedBy":{"$ref":"#/components/schemas/UserSummaryDto"}}},"UserSummaryDto":{"required":["email","id","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"email":{"type":"string"}}},"CreateWorkflow":{"required":["description","name","workspaceId"],"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"workspaceId":{"type":"integer","format":"int64"}}},"CreateFlow":{"required":["description","executionOrder","flowType","language","name","program","workflowId"],"type":"object","properties":{"workflowId":{"type":"integer","format":"int64"},"name":{"type":"string"},"description":{"type":"string"},"program":{"type":"string"},"executionOrder":{"type":"integer","format":"int32"},"language":{"type":"string"},"flowType":{"type":"string","enum":["HTTP_REQUEST","GENERAL_FUNCTION","MANAGE_CONFIG","MANAGE_CRON","SHELL_SCRIPT","RPA"]}}},"AttachmentDto":{"required":["contentType","createdAt","fileName","fileSize","id"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"fileName":{"type":"string"},"fileSize":{"type":"integer","format":"int64"},"contentType":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"downloadUrl":{"type":"string"}}},"DirectMessageRequest":{"required":["messages"],"type":"object","properties":{"messages":{"type":"array","items":{"$ref":"#/components/schemas/Message"}},"system":{"type":"string"},"temperature":{"type":"number","format":"double"},"maxTokens":{"type":"integer","format":"int32"},"conversationId":{"type":"integer","format":"int64"},"resumeFromCutoff":{"type":"boolean"}}},"Message":{"required":["attachments","content","role"],"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"attachments":{"type":"array","items":{"$ref":"#/components/schemas/AttachmentDto"}}}},"AnthropicResponse":{"required":["content","id","role","type"],"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"role":{"type":"string"},"content":{"type":"array","items":{"$ref":"#/components/schemas/ContentResponse"}},"stop_reason":{"type":"string"},"usage":{"$ref":"#/components/schemas/UsageResponse"}}},"ApiError":{"required":["message","type"],"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"}}},"ContentBlock":{"required":["type"],"type":"object","properties":{"type":{"type":"string"},"text":{"type":"string"}}},"ContentResponse":{"required":["text","type"],"type":"object","properties":{"type":{"type":"string"},"text":{"type":"string"}}},"Delta":{"required":["type"],"type":"object","properties":{"type":{"type":"string"}},"discriminator":{"propertyName":"type"}},"MessageDelta":{"type":"object","properties":{"stop_reason":{"type":"string"},"stop_sequence":{"type":"string"}}},"MessageUsage":{"required":["output_tokens"],"type":"object","properties":{"output_tokens":{"type":"integer","format":"int32"}}},"StreamContentBlockDelta":{"required":["delta","index"],"type":"object","allOf":[{"$ref":"#/components/schemas/StreamEventData"},{"type":"object","properties":{"index":{"type":"integer","format":"int32"},"delta":{"$ref":"#/components/schemas/Delta"}}}]},"StreamContentBlockStart":{"required":["content_block","index"],"type":"object","allOf":[{"$ref":"#/components/schemas/StreamEventData"},{"type":"object","properties":{"index":{"type":"integer","format":"int32"},"content_block":{"$ref":"#/components/schemas/ContentBlock"}}}]},"StreamContentBlockStop":{"required":["index"],"type":"object","allOf":[{"$ref":"#/components/schemas/StreamEventData"},{"type":"object","properties":{"index":{"type":"integer","format":"int32"}}}]},"StreamError":{"required":["error"],"type":"object","allOf":[{"$ref":"#/components/schemas/StreamEventData"},{"type":"object","properties":{"error":{"$ref":"#/components/schemas/ApiError"}}}]},"StreamEventData":{"required":["type"],"type":"object","properties":{"type":{"type":"string"}},"discriminator":{"propertyName":"type"}},"StreamMessageDelta":{"required":["delta","usage"],"type":"object","allOf":[{"$ref":"#/components/schemas/StreamEventData"},{"type":"object","properties":{"delta":{"$ref":"#/components/schemas/MessageDelta"},"usage":{"$ref":"#/components/schemas/MessageUsage"}}}]},"StreamMessageStart":{"required":["conversationId","message"],"type":"object","allOf":[{"$ref":"#/components/schemas/StreamEventData"},{"type":"object","properties":{"message":{"$ref":"#/components/schemas/AnthropicResponse"},"conversationId":{"type":"integer","format":"int64"}}}]},"StreamMessageStop":{"type":"object","allOf":[{"$ref":"#/components/schemas/StreamEventData"}]},"StreamPing":{"type":"object","allOf":[{"$ref":"#/components/schemas/StreamEventData"}]},"UsageResponse":{"required":["input_tokens","output_tokens"],"type":"object","properties":{"input_tokens":{"type":"integer","format":"int32"},"output_tokens":{"type":"integer","format":"int32"}}},"CloneWorkflow":{"required":["name"],"type":"object","properties":{"name":{"type":"string"},"workspaceId":{"type":"integer","format":"int64"}}},"AsyncExecutionResponse":{"required":["executionId","message","resultUrl","status","statusUrl","workflowId"],"type":"object","properties":{"executionId":{"type":"integer","format":"int64"},"workflowId":{"type":"integer","format":"int64"},"status":{"type":"string","enum":["SUCCESS","FAILED","UNKNOWN","RUNNING","SKIPPED","PENDING"]},"message":{"type":"string"},"statusUrl":{"type":"string"},"resultUrl":{"type":"string"}}},"TransformDto":{"type":"object","properties":{"input":{"type":"string"},"program":{"type":"string"},"language":{"type":"string"}}},"CreateServiceAccountRequest":{"required":["name","workspaceIds"],"type":"object","properties":{"name":{"type":"string"},"workspaceIds":{"type":"array","items":{"type":"integer","format":"int64"}}}},"ServiceAccountCredentialsResponse":{"required":["id","password","username"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"username":{"type":"string"},"password":{"type":"string"}}},"StartCoordinateRecordingRequest":{"required":["rpaUrl","workflowId"],"type":"object","properties":{"rpaUrl":{"type":"string"},"workflowId":{"type":"integer","format":"int64"}}},"StartCoordinateRecordingResponse":{"required":["sessionId","status","subscriptionUrl"],"type":"object","properties":{"sessionId":{"type":"string"},"status":{"type":"string"},"subscriptionUrl":{"type":"string"}}},"CoordinateEvent":{"required":["datetime","timestamp","type"],"type":"object","properties":{"type":{"type":"string"},"timestamp":{"type":"number","format":"double"},"datetime":{"type":"string"},"valid":{"type":"boolean"},"annotation":{"type":"string"},"button":{"type":"string"},"position":{"$ref":"#/components/schemas/Position"},"key":{"type":"string"},"vk_code":{"type":"integer","format":"int32"},"mouse_position":{"$ref":"#/components/schemas/Position"}}},"CoordinateRecordingCallbackRequest":{"type":"object","properties":{"start_time":{"type":"number","format":"double"},"screen_resolution":{"$ref":"#/components/schemas/ScreenResolution"},"events":{"type":"array","items":{"$ref":"#/components/schemas/CoordinateEvent"}},"resultFileFound":{"type":"boolean"},"resultPath":{"type":"string"},"expectedPath":{"type":"string"},"stdout":{"type":"string"},"stderr":{"type":"string"}}},"Position":{"required":["x","y"],"type":"object","properties":{"x":{"type":"integer","format":"int32"},"y":{"type":"integer","format":"int32"}}},"ScreenResolution":{"required":["height","width"],"type":"object","properties":{"width":{"type":"integer","format":"int32"},"height":{"type":"integer","format":"int32"}}},"ApiStatus":{"type":"object","properties":{"error":{"type":"string"}}},"ClaudePromptRequest":{"required":["existingMessages","input","inputJson","language"],"type":"object","properties":{"language":{"type":"string"},"inputJson":{"type":"string"},"input":{"type":"string"},"existingMessages":{"type":"array","items":{"$ref":"#/components/schemas/Message"}},"apiStatus":{"$ref":"#/components/schemas/ApiStatus"},"output":{"$ref":"#/components/schemas/Output"}}},"Output":{"type":"object","properties":{"result":{"type":"string"},"log":{"type":"string"}}},"SaveMultipleMessagesRequest":{"required":["messages"],"type":"object","properties":{"conversationId":{"type":"integer","format":"int64"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/Message"}}}},"SaveMultipleMessagesResponse":{"required":["conversationId","messages","workflowId"],"type":"object","properties":{"conversationId":{"type":"integer","format":"int64"},"workflowId":{"type":"integer","format":"int64"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/Message"}}}},"SaveMessageRequest":{"required":["message"],"type":"object","properties":{"conversationId":{"type":"integer","format":"int64"},"message":{"$ref":"#/components/schemas/Message"}}},"SaveMessageResponse":{"required":["conversationId","message","messageId","workflowId"],"type":"object","properties":{"conversationId":{"type":"integer","format":"int64"},"workflowId":{"type":"integer","format":"int64"},"message":{"$ref":"#/components/schemas/Message"},"messageId":{"type":"integer","format":"int64"}}},"CreateEmailDomainRequest":{"required":["domain","isActive"],"type":"object","properties":{"domain":{"type":"string","description":"The email domain name","example":"example.com"},"isActive":{"type":"boolean","description":"Whether the domain is active","example":true}},"description":"Request to create a new email domain"},"BulkImportEmailDomainsRequest":{"required":["emails"],"type":"object","properties":{"emails":{"type":"array","description":"List of email addresses to parse","example":["user1@example.com","user2@test.com"],"items":{"type":"string","description":"List of email addresses to parse","example":"[\"user1@example.com\",\"user2@test.com\"]"}}},"description":"Request to bulk import email domains from emails"},"AddDevModeStepRequest":{"required":["folder"],"type":"object","properties":{"name":{"maxLength":255,"minLength":0,"type":"string"},"flowType":{"type":"string","enum":["HTTP_REQUEST","GENERAL_FUNCTION","MANAGE_CONFIG","MANAGE_CRON","SHELL_SCRIPT","RPA"]},"language":{"type":"string"},"group":{"type":"integer","format":"int32"},"folder":{"type":"boolean"}}},"RunDevModeDraftRequest":{"required":["input","vmId"],"type":"object","properties":{"startStep":{"type":"integer","format":"int32"},"endStep":{"type":"integer","format":"int32"},"input":{"type":"object","additionalProperties":{"type":"object"}},"configurationExternalId":{"maxLength":100,"minLength":0,"type":"string"},"vmId":{"type":"integer","format":"int64"}}},"DevModeRunResponse":{"required":["data","steps","stopped","success","workflowId","workspaceId"],"type":"object","properties":{"workspaceId":{"type":"integer","format":"int64"},"workflowId":{"type":"integer","format":"int64"},"success":{"type":"boolean"},"stopped":{"type":"boolean"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/DevModeStepRunResult"}},"data":{"type":"object","additionalProperties":{"type":"object"}}}},"DevModeStepRunResult":{"required":["executionOrder","key","log","name","success","type"],"type":"object","properties":{"key":{"type":"string"},"flowId":{"type":"integer","format":"int64"},"name":{"type":"string"},"executionOrder":{"type":"integer","format":"int32"},"type":{"type":"string"},"success":{"type":"boolean"},"data":{"type":"object"},"response":{"type":"object"},"httpStatus":{"type":"integer","format":"int32"},"error":{"type":"string"},"log":{"type":"string"}}},"DevModeStopResponse":{"required":["stopRequested"],"type":"object","properties":{"stopRequested":{"type":"boolean"}}},"ReorderDevModeStepsRequest":{"required":["draggedKey","targetKey"],"type":"object","properties":{"draggedKey":{"type":"string"},"targetKey":{"type":"string"}}},"CreateConfigurationStoreRequest":{"required":["externalId","name","properties","workspaceId"],"type":"object","properties":{"workspaceId":{"type":"integer","format":"int64"},"name":{"type":"string"},"externalId":{"type":"string"},"properties":{"type":"array","items":{"$ref":"#/components/schemas/PropertyDTO"}}}},"CloneConfigurationStoreRequest":{"required":["newExternalId","newName"],"type":"object","properties":{"targetWorkspaceId":{"type":"integer","format":"int64"},"newName":{"type":"string"},"newExternalId":{"type":"string"}}},"LoginRequest":{"required":["password","username"],"type":"object","properties":{"username":{"type":"string"},"password":{"type":"string"}}},"TokenResponse":{"required":["access_token","expires_in","token_type"],"type":"object","properties":{"access_token":{"type":"string"},"token_type":{"type":"string"},"expires_in":{"type":"integer","format":"int32"},"refresh_token":{"type":"string"}}},"CreateUserRequest":{"required":["email","firstName","lastName","password"],"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"}}},"RefreshTokenRequest":{"required":["refreshToken"],"type":"object","properties":{"refreshToken":{"type":"string"}}},"VerifyPasswordResetRequest":{"required":["code","email","newPassword"],"type":"object","properties":{"email":{"type":"string"},"code":{"type":"string"},"newPassword":{"type":"string"}}},"InitiatePasswordResetRequest":{"required":["email"],"type":"object","properties":{"email":{"type":"string"}}},"ChangePasswordRequest":{"required":["currentPassword","newPassword"],"type":"object","properties":{"currentPassword":{"type":"string"},"newPassword":{"type":"string"}}},"ErrorResponse":{"required":["errors","message"],"type":"object","properties":{"message":{"type":"string"},"errors":{"type":"array","items":{"type":"string"}}}},"AttachmentUploadResponse":{"required":["attachmentId","fileName","fileSize","message"],"type":"object","properties":{"attachmentId":{"type":"integer","format":"int64"},"fileName":{"type":"string"},"fileSize":{"type":"integer","format":"int64"},"message":{"type":"string"}}},"AttachmentUploadError":{"required":["error","fileName"],"type":"object","properties":{"fileName":{"type":"string"},"error":{"type":"string"},"fileSize":{"type":"integer","format":"int64"}}},"BatchAttachmentUploadResponse":{"required":["failed","failureCount","successCount","successful","totalFiles"],"type":"object","properties":{"successful":{"type":"array","items":{"$ref":"#/components/schemas/AttachmentUploadResponse"}},"failed":{"type":"array","items":{"$ref":"#/components/schemas/AttachmentUploadError"}},"totalFiles":{"type":"integer","format":"int32"},"successCount":{"type":"integer","format":"int32"},"failureCount":{"type":"integer","format":"int32"}}},"CreateApiKey":{"required":["workspaceId"],"type":"object","properties":{"workspaceId":{"type":"integer","format":"int64"}}},"ApiKey":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"apiKey":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}}},"UserWithRole":{"required":["role","user"],"type":"object","properties":{"user":{"$ref":"#/components/schemas/User"},"role":{"type":"string","enum":["OWNER","ADMIN","MEMBER","GUEST","AGENT"]}}},"ConfigurationStoreVersionResponse":{"required":["name","properties","version"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"configurationStoreId":{"type":"integer","format":"int64"},"externalId":{"type":"string"},"version":{"type":"integer","format":"int32"},"name":{"type":"string"},"properties":{"type":"array","items":{"$ref":"#/components/schemas/PropertyDTO"}},"createdAt":{"type":"string","format":"date-time"}}},"FlowRunResponse":{"required":["executionLog","executionOrder","flowId","flowName","flowVersionId","id","payload","program","response","startedAt","status","transformation"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"flowId":{"type":"integer","format":"int64"},"flowName":{"type":"string"},"flowVersionId":{"type":"integer","format":"int64"},"program":{"type":"string"},"status":{"type":"string","enum":["SUCCESS","FAILED","UNKNOWN","RUNNING","SKIPPED","PENDING"]},"startedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time"},"executionOrder":{"type":"integer","format":"int32"},"payload":{"type":"string"},"transformation":{"type":"string"},"response":{"type":"string"},"executionLog":{"type":"string"}}},"PageWorkflowExecutionResponse":{"type":"object","properties":{"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer","format":"int32"},"content":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowExecutionResponse"}},"number":{"type":"integer","format":"int32"},"sort":{"$ref":"#/components/schemas/SortObject"},"first":{"type":"boolean"},"last":{"type":"boolean"},"numberOfElements":{"type":"integer","format":"int32"},"empty":{"type":"boolean"}}},"PageableObject":{"type":"object","properties":{"pageNumber":{"type":"integer","format":"int32"},"pageSize":{"type":"integer","format":"int32"},"offset":{"type":"integer","format":"int64"},"sort":{"$ref":"#/components/schemas/SortObject"},"paged":{"type":"boolean"},"unpaged":{"type":"boolean"}}},"SortObject":{"type":"object","properties":{"sorted":{"type":"boolean"},"empty":{"type":"boolean"},"unsorted":{"type":"boolean"}}},"WorkflowExecutionResponse":{"required":["flowRuns","id","startedAt","status","truncated"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"status":{"type":"string","enum":["SUCCESS","FAILED","UNKNOWN","RUNNING","SKIPPED","PENDING"]},"startedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time"},"flowRuns":{"type":"array","items":{"$ref":"#/components/schemas/FlowRunResponse"}},"configuration":{"$ref":"#/components/schemas/ConfigurationStoreVersionResponse"},"globalWorkflowObject":{"type":"string"},"truncated":{"type":"boolean"},"recordingBlobRef":{"type":"string"}}},"ExecutionStatusResponse":{"required":["executionId","isComplete","startedAt","status","workflowId"],"type":"object","properties":{"executionId":{"type":"integer","format":"int64"},"workflowId":{"type":"integer","format":"int64"},"status":{"type":"string","enum":["SUCCESS","FAILED","UNKNOWN","RUNNING","SKIPPED","PENDING"]},"startedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time"},"isComplete":{"type":"boolean"}}},"RecordingUrlResponse":{"required":["url"],"type":"object","properties":{"url":{"type":"string"}}},"CoordinateRecordingResult":{"required":["eventCount","events","resultPath","screenResolution","startTime"],"type":"object","properties":{"startTime":{"type":"number","format":"double"},"screenResolution":{"$ref":"#/components/schemas/ScreenResolution"},"events":{"type":"array","items":{"$ref":"#/components/schemas/CoordinateEvent"}},"resultPath":{"type":"string"},"eventCount":{"type":"integer","format":"int32"}}},"CoordinateRecordingStatusUpdate":{"required":["sessionId","status","timestamp"],"type":"object","properties":{"sessionId":{"type":"string"},"status":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"coordinateData":{"$ref":"#/components/schemas/CoordinateRecordingResult"},"error":{"type":"string"},"debugInfo":{"$ref":"#/components/schemas/DebugInfo"}}},"DebugInfo":{"type":"object","properties":{"expectedPath":{"type":"string"},"stdout":{"type":"string"},"stderr":{"type":"string"}}},"ChannelLockInfo":{"required":["channelId","executionId","ttlSeconds"],"type":"object","properties":{"channelId":{"type":"string"},"executionId":{"type":"integer","format":"int64"},"ttlSeconds":{"type":"integer","format":"int64"}}},"AggregatedDispatcherDto":{"required":["avgQueueUtilizationPercent","avgUtilizationPercent","instanceCount","name","totalActiveThreads","totalCompletedTasks","totalPoolSize","totalQueueCapacity","totalQueueSize"],"type":"object","properties":{"name":{"type":"string"},"totalActiveThreads":{"type":"integer","format":"int32"},"totalPoolSize":{"type":"integer","format":"int32"},"totalQueueSize":{"type":"integer","format":"int32"},"totalQueueCapacity":{"type":"integer","format":"int32"},"totalCompletedTasks":{"type":"integer","format":"int64"},"instanceCount":{"type":"integer","format":"int32"},"avgUtilizationPercent":{"type":"number","format":"double"},"avgQueueUtilizationPercent":{"type":"number","format":"double"}}},"ClusterDispatcherStatsResponse":{"required":["cluster","instances"],"type":"object","properties":{"cluster":{"$ref":"#/components/schemas/ClusterSummaryDto"},"instances":{"type":"array","items":{"$ref":"#/components/schemas/InstanceStatsDto"}}}},"ClusterSummaryDto":{"required":["dispatchers","instancesUnderStress","totalInstances"],"type":"object","properties":{"totalInstances":{"type":"integer","format":"int32"},"instancesUnderStress":{"type":"integer","format":"int32"},"dispatchers":{"type":"array","items":{"$ref":"#/components/schemas/AggregatedDispatcherDto"}}}},"DispatcherStatDto":{"required":["activeThreads","completedTasks","name","poolSize","queueCapacity","queueSize","queueUtilizationPercent","totalTasks","utilizationPercent"],"type":"object","properties":{"name":{"type":"string"},"activeThreads":{"type":"integer","format":"int32"},"poolSize":{"type":"integer","format":"int32"},"queueSize":{"type":"integer","format":"int32"},"queueCapacity":{"type":"integer","format":"int32"},"completedTasks":{"type":"integer","format":"int64"},"totalTasks":{"type":"integer","format":"int64"},"utilizationPercent":{"type":"number","format":"double"},"queueUtilizationPercent":{"type":"number","format":"double"}}},"InstanceStatsDto":{"required":["dispatchers","instanceId","timestamp","underStress"],"type":"object","properties":{"instanceId":{"type":"string"},"timestamp":{"type":"integer","format":"int64"},"underStress":{"type":"boolean"},"dispatchers":{"type":"array","items":{"$ref":"#/components/schemas/DispatcherStatDto"}}}},"FlowRun":{"required":["executionLog","executionOrder","flowId","flowName","flowVersionId","payload","response","startedAt","status","transformation","workspaceId"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"workspaceId":{"type":"integer","format":"int64"},"workflowExecutionId":{"type":"integer","format":"int64"},"flowId":{"type":"integer","format":"int64"},"flowName":{"type":"string"},"flowVersionId":{"type":"integer","format":"int64"},"program":{"type":"string"},"status":{"type":"string","enum":["SUCCESS","FAILED","UNKNOWN","RUNNING","SKIPPED","PENDING"]},"startedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time"},"payload":{"type":"string"},"transformation":{"type":"string"},"response":{"type":"string"},"executionLog":{"type":"string"},"programBlobRef":{"type":"string"},"payloadBlobRef":{"type":"string"},"transformationBlobRef":{"type":"string"},"responseBlobRef":{"type":"string"},"executionLogBlobRef":{"type":"string"},"executionOrder":{"type":"integer","format":"int32"},"fullTransformationSnapshot":{"type":"string"},"fullResponseSnapshot":{"type":"string"}}},"DailyRuns":{"required":["date","runCount"],"type":"object","properties":{"date":{"type":"string","format":"date-time"},"runCount":{"type":"integer","format":"int64"}}},"FlowFrequency":{"required":["flowId","flowName","runCount"],"type":"object","properties":{"flowId":{"type":"integer","format":"int64"},"flowName":{"type":"string"},"runCount":{"type":"integer","format":"int64"}}},"FlowStats":{"required":["averageDuration","currentlyRunningJobs","failedRuns","runsByDay","successfulRuns","totalRuns"],"type":"object","properties":{"totalRuns":{"type":"integer","format":"int64"},"successfulRuns":{"type":"integer","format":"int64"},"failedRuns":{"type":"integer","format":"int64"},"averageDuration":{"type":"number","format":"double"},"mostFrequentFlow":{"$ref":"#/components/schemas/FlowFrequency"},"runsByDay":{"type":"array","items":{"$ref":"#/components/schemas/DailyRuns"}},"currentlyRunningJobs":{"type":"integer","format":"int64"}}},"FlowRunDTO":{"required":["flowName","id","startedAt","status"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"flowName":{"type":"string"},"status":{"type":"string","enum":["SUCCESS","FAILED","UNKNOWN","RUNNING","SKIPPED","PENDING"]},"startedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time"},"duration":{"type":"object","properties":{"seconds":{"type":"integer","format":"int64"},"zero":{"type":"boolean"},"nano":{"type":"integer","format":"int32"},"negative":{"type":"boolean"},"units":{"type":"array","items":{"type":"object","properties":{"durationEstimated":{"type":"boolean"},"timeBased":{"type":"boolean"},"dateBased":{"type":"boolean"}}}}}}}},"PageFlowRunDTO":{"type":"object","properties":{"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer","format":"int32"},"content":{"type":"array","items":{"$ref":"#/components/schemas/FlowRunDTO"}},"number":{"type":"integer","format":"int32"},"sort":{"$ref":"#/components/schemas/SortObject"},"first":{"type":"boolean"},"last":{"type":"boolean"},"numberOfElements":{"type":"integer","format":"int32"},"empty":{"type":"boolean"}}},"DevModeStepSummaryResponse":{"required":["executionOrder","flowType","key","name"],"type":"object","properties":{"key":{"type":"string"},"flowId":{"type":"integer","format":"int64"},"name":{"type":"string"},"flowType":{"type":"string","enum":["HTTP_REQUEST","GENERAL_FUNCTION","MANAGE_CONFIG","MANAGE_CRON","SHELL_SCRIPT","RPA"]},"executionOrder":{"type":"integer","format":"int32"}}},"DevModeRunStatusResponse":{"required":["active","stopRequested"],"type":"object","properties":{"active":{"type":"boolean"},"currentStepKey":{"type":"string"},"lastCompletedStepKey":{"type":"string"},"stopRequested":{"type":"boolean"}}},"ConfigurationKeysResponse":{"required":["externalId","keys","name"],"type":"object","properties":{"keys":{"type":"array","items":{"type":"string"}},"externalId":{"type":"string"},"name":{"type":"string"}}},"UserWithDomainStatusDto":{"required":["email","firstName","isEmailDomainActive","lastName"],"type":"object","properties":{"id":{"type":"integer","description":"User ID","format":"int64"},"firstName":{"type":"string","description":"User's first name"},"lastName":{"type":"string","description":"User's last name"},"email":{"type":"string","description":"User's email address"},"isEmailDomainActive":{"type":"boolean","description":"Whether the user's email domain is active"}},"description":"User information with email domain status"},"ResolveApiKeyResponse":{"required":["workspaceId","workspaceName"],"type":"object","properties":{"workspaceId":{"type":"integer","format":"int64"},"workspaceName":{"type":"string"}}}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"},"bearer-key":{"type":"http","description":"Authorization with JWT token","scheme":"bearer","bearerFormat":"JWT"},"api-key":{"type":"apiKey","description":"API key authentication via header","name":"X-API-KEY","in":"header"},"api-key-query":{"type":"apiKey","description":"API key authentication via query parameter","name":"api_key","in":"query"}}}}