donobu 2.37.4 → 2.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/apis/AskAiApi.d.ts +3 -1
- package/dist/apis/AskAiApi.d.ts.map +1 -1
- package/dist/apis/AskAiApi.js +3 -3
- package/dist/apis/AskAiApi.js.map +1 -1
- package/dist/apis/GptConfigsApi.d.ts +5 -0
- package/dist/apis/GptConfigsApi.d.ts.map +1 -1
- package/dist/apis/GptConfigsApi.js +13 -7
- package/dist/apis/GptConfigsApi.js.map +1 -1
- package/dist/apis/SchemaApi.d.ts +17 -0
- package/dist/apis/SchemaApi.d.ts.map +1 -0
- package/dist/apis/SchemaApi.js +33 -0
- package/dist/apis/SchemaApi.js.map +1 -0
- package/dist/assets/generated/version +1 -1
- package/dist/assets/icon.png +0 -0
- package/dist/assets/openapi-schema.html +18603 -0
- package/dist/assets/openapi-schema.yaml +1483 -0
- package/dist/clients/GptClientFactory.d.ts +19 -2
- package/dist/clients/GptClientFactory.d.ts.map +1 -1
- package/dist/clients/GptClientFactory.js +8 -4
- package/dist/clients/GptClientFactory.js.map +1 -1
- package/dist/envVars.d.ts +29 -1
- package/dist/envVars.d.ts.map +1 -1
- package/dist/envVars.js +78 -2
- package/dist/envVars.js.map +1 -1
- package/dist/esm/apis/AskAiApi.d.ts +3 -1
- package/dist/esm/apis/AskAiApi.d.ts.map +1 -1
- package/dist/esm/apis/AskAiApi.js +3 -3
- package/dist/esm/apis/AskAiApi.js.map +1 -1
- package/dist/esm/apis/GptConfigsApi.d.ts +5 -0
- package/dist/esm/apis/GptConfigsApi.d.ts.map +1 -1
- package/dist/esm/apis/GptConfigsApi.js +13 -7
- package/dist/esm/apis/GptConfigsApi.js.map +1 -1
- package/dist/esm/apis/SchemaApi.d.ts +17 -0
- package/dist/esm/apis/SchemaApi.d.ts.map +1 -0
- package/dist/esm/apis/SchemaApi.js +33 -0
- package/dist/esm/apis/SchemaApi.js.map +1 -0
- package/dist/esm/assets/generated/version +1 -1
- package/dist/esm/assets/icon.png +0 -0
- package/dist/esm/assets/openapi-schema.html +18603 -0
- package/dist/esm/assets/openapi-schema.yaml +1483 -0
- package/dist/esm/clients/GptClientFactory.d.ts +19 -2
- package/dist/esm/clients/GptClientFactory.d.ts.map +1 -1
- package/dist/esm/clients/GptClientFactory.js +8 -4
- package/dist/esm/clients/GptClientFactory.js.map +1 -1
- package/dist/esm/envVars.d.ts +29 -1
- package/dist/esm/envVars.d.ts.map +1 -1
- package/dist/esm/envVars.js +78 -2
- package/dist/esm/envVars.js.map +1 -1
- package/dist/esm/exceptions/DonobuException.d.ts.map +1 -1
- package/dist/esm/exceptions/DonobuException.js +1 -3
- package/dist/esm/exceptions/DonobuException.js.map +1 -1
- package/dist/esm/lib/DonobuExtendedPage.d.ts +1 -1
- package/dist/esm/lib/DonobuExtendedPage.d.ts.map +1 -1
- package/dist/esm/lib/fixtures/gptClients.d.ts.map +1 -1
- package/dist/esm/lib/fixtures/gptClients.js +24 -26
- package/dist/esm/lib/fixtures/gptClients.js.map +1 -1
- package/dist/esm/lib/testExtension.d.ts.map +1 -1
- package/dist/esm/lib/testExtension.js +3 -2
- package/dist/esm/lib/testExtension.js.map +1 -1
- package/dist/esm/main.d.ts.map +1 -1
- package/dist/esm/main.js +1 -1
- package/dist/esm/main.js.map +1 -1
- package/dist/esm/managers/AdminApiController.d.ts +6 -0
- package/dist/esm/managers/AdminApiController.d.ts.map +1 -1
- package/dist/esm/managers/AdminApiController.js +27 -1
- package/dist/esm/managers/AdminApiController.js.map +1 -1
- package/dist/esm/managers/AgentsManager.js +1 -1
- package/dist/esm/managers/AgentsManager.js.map +1 -1
- package/dist/esm/managers/DonobuFlow.d.ts.map +1 -1
- package/dist/esm/managers/DonobuFlow.js +16 -9
- package/dist/esm/managers/DonobuFlow.js.map +1 -1
- package/dist/esm/managers/DonobuFlowsManager.d.ts +3 -7
- package/dist/esm/managers/DonobuFlowsManager.d.ts.map +1 -1
- package/dist/esm/managers/DonobuFlowsManager.js +59 -67
- package/dist/esm/managers/DonobuFlowsManager.js.map +1 -1
- package/dist/esm/managers/DonobuStack.d.ts +2 -0
- package/dist/esm/managers/DonobuStack.d.ts.map +1 -1
- package/dist/esm/managers/DonobuStack.js +5 -2
- package/dist/esm/managers/DonobuStack.js.map +1 -1
- package/dist/esm/managers/EnvDataManager.d.ts +5 -5
- package/dist/esm/managers/EnvDataManager.d.ts.map +1 -1
- package/dist/esm/managers/EnvDataManager.js +19 -26
- package/dist/esm/managers/EnvDataManager.js.map +1 -1
- package/dist/esm/managers/FlowDependencyAnalyzer.d.ts.map +1 -1
- package/dist/esm/managers/FlowDependencyAnalyzer.js +0 -1
- package/dist/esm/managers/FlowDependencyAnalyzer.js.map +1 -1
- package/dist/esm/managers/GptConfigsManager.d.ts +3 -1
- package/dist/esm/managers/GptConfigsManager.d.ts.map +1 -1
- package/dist/esm/managers/GptConfigsManager.js +10 -12
- package/dist/esm/managers/GptConfigsManager.js.map +1 -1
- package/dist/esm/managers/InteractionVisualizer.d.ts +25 -0
- package/dist/esm/managers/InteractionVisualizer.d.ts.map +1 -1
- package/dist/esm/managers/InteractionVisualizer.js +108 -50
- package/dist/esm/managers/InteractionVisualizer.js.map +1 -1
- package/dist/esm/managers/PluginLoader.d.ts +24 -1
- package/dist/esm/managers/PluginLoader.d.ts.map +1 -1
- package/dist/esm/managers/PluginLoader.js +62 -38
- package/dist/esm/managers/PluginLoader.js.map +1 -1
- package/dist/esm/managers/ToolManager.d.ts +1 -0
- package/dist/esm/managers/ToolManager.d.ts.map +1 -1
- package/dist/esm/managers/ToolManager.js +4 -1
- package/dist/esm/managers/ToolManager.js.map +1 -1
- package/dist/esm/models/CreateDonobuFlow.d.ts +1 -0
- package/dist/esm/models/CreateDonobuFlow.d.ts.map +1 -1
- package/dist/esm/models/CreateDonobuFlow.js +1 -0
- package/dist/esm/models/CreateDonobuFlow.js.map +1 -1
- package/dist/esm/models/FlowMetadata.d.ts +1 -0
- package/dist/esm/models/FlowMetadata.d.ts.map +1 -1
- package/dist/esm/models/FlowMetadata.js +5 -0
- package/dist/esm/models/FlowMetadata.js.map +1 -1
- package/dist/esm/persistence/env/EnvPersistenceFactoryImpl.d.ts +2 -1
- package/dist/esm/persistence/env/EnvPersistenceFactoryImpl.d.ts.map +1 -1
- package/dist/esm/persistence/env/EnvPersistenceFactoryImpl.js +6 -5
- package/dist/esm/persistence/env/EnvPersistenceFactoryImpl.js.map +1 -1
- package/dist/esm/persistence/flows/FlowsPersistenceFactoryImpl.d.ts.map +1 -1
- package/dist/esm/persistence/flows/FlowsPersistenceFactoryImpl.js +4 -4
- package/dist/esm/persistence/flows/FlowsPersistenceFactoryImpl.js.map +1 -1
- package/dist/esm/tools/DetectBrokenLinksTool.js +1 -1
- package/dist/esm/tools/DetectBrokenLinksTool.js.map +1 -1
- package/dist/esm/tools/TriggerDonobuFlowTool.d.ts +2 -0
- package/dist/esm/tools/TriggerDonobuFlowTool.d.ts.map +1 -1
- package/dist/esm/utils/BrowserUtils.d.ts +17 -18
- package/dist/esm/utils/BrowserUtils.d.ts.map +1 -1
- package/dist/esm/utils/BrowserUtils.js +43 -40
- package/dist/esm/utils/BrowserUtils.js.map +1 -1
- package/dist/esm/utils/MiscUtils.js +1 -1
- package/dist/esm/utils/MiscUtils.js.map +1 -1
- package/dist/exceptions/DonobuException.d.ts.map +1 -1
- package/dist/exceptions/DonobuException.js +1 -3
- package/dist/exceptions/DonobuException.js.map +1 -1
- package/dist/lib/DonobuExtendedPage.d.ts +1 -1
- package/dist/lib/DonobuExtendedPage.d.ts.map +1 -1
- package/dist/lib/fixtures/gptClients.d.ts.map +1 -1
- package/dist/lib/fixtures/gptClients.js +24 -26
- package/dist/lib/fixtures/gptClients.js.map +1 -1
- package/dist/lib/testExtension.d.ts.map +1 -1
- package/dist/lib/testExtension.js +3 -2
- package/dist/lib/testExtension.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/managers/AdminApiController.d.ts +6 -0
- package/dist/managers/AdminApiController.d.ts.map +1 -1
- package/dist/managers/AdminApiController.js +27 -1
- package/dist/managers/AdminApiController.js.map +1 -1
- package/dist/managers/AgentsManager.js +1 -1
- package/dist/managers/AgentsManager.js.map +1 -1
- package/dist/managers/DonobuFlow.d.ts.map +1 -1
- package/dist/managers/DonobuFlow.js +16 -9
- package/dist/managers/DonobuFlow.js.map +1 -1
- package/dist/managers/DonobuFlowsManager.d.ts +3 -7
- package/dist/managers/DonobuFlowsManager.d.ts.map +1 -1
- package/dist/managers/DonobuFlowsManager.js +59 -67
- package/dist/managers/DonobuFlowsManager.js.map +1 -1
- package/dist/managers/DonobuStack.d.ts +2 -0
- package/dist/managers/DonobuStack.d.ts.map +1 -1
- package/dist/managers/DonobuStack.js +5 -2
- package/dist/managers/DonobuStack.js.map +1 -1
- package/dist/managers/EnvDataManager.d.ts +5 -5
- package/dist/managers/EnvDataManager.d.ts.map +1 -1
- package/dist/managers/EnvDataManager.js +19 -26
- package/dist/managers/EnvDataManager.js.map +1 -1
- package/dist/managers/FlowDependencyAnalyzer.d.ts.map +1 -1
- package/dist/managers/FlowDependencyAnalyzer.js +0 -1
- package/dist/managers/FlowDependencyAnalyzer.js.map +1 -1
- package/dist/managers/GptConfigsManager.d.ts +3 -1
- package/dist/managers/GptConfigsManager.d.ts.map +1 -1
- package/dist/managers/GptConfigsManager.js +10 -12
- package/dist/managers/GptConfigsManager.js.map +1 -1
- package/dist/managers/InteractionVisualizer.d.ts +25 -0
- package/dist/managers/InteractionVisualizer.d.ts.map +1 -1
- package/dist/managers/InteractionVisualizer.js +108 -50
- package/dist/managers/InteractionVisualizer.js.map +1 -1
- package/dist/managers/PluginLoader.d.ts +24 -1
- package/dist/managers/PluginLoader.d.ts.map +1 -1
- package/dist/managers/PluginLoader.js +62 -38
- package/dist/managers/PluginLoader.js.map +1 -1
- package/dist/managers/ToolManager.d.ts +1 -0
- package/dist/managers/ToolManager.d.ts.map +1 -1
- package/dist/managers/ToolManager.js +4 -1
- package/dist/managers/ToolManager.js.map +1 -1
- package/dist/models/CreateDonobuFlow.d.ts +1 -0
- package/dist/models/CreateDonobuFlow.d.ts.map +1 -1
- package/dist/models/CreateDonobuFlow.js +1 -0
- package/dist/models/CreateDonobuFlow.js.map +1 -1
- package/dist/models/FlowMetadata.d.ts +1 -0
- package/dist/models/FlowMetadata.d.ts.map +1 -1
- package/dist/models/FlowMetadata.js +5 -0
- package/dist/models/FlowMetadata.js.map +1 -1
- package/dist/persistence/env/EnvPersistenceFactoryImpl.d.ts +2 -1
- package/dist/persistence/env/EnvPersistenceFactoryImpl.d.ts.map +1 -1
- package/dist/persistence/env/EnvPersistenceFactoryImpl.js +6 -5
- package/dist/persistence/env/EnvPersistenceFactoryImpl.js.map +1 -1
- package/dist/persistence/flows/FlowsPersistenceFactoryImpl.d.ts.map +1 -1
- package/dist/persistence/flows/FlowsPersistenceFactoryImpl.js +4 -4
- package/dist/persistence/flows/FlowsPersistenceFactoryImpl.js.map +1 -1
- package/dist/tools/DetectBrokenLinksTool.js +1 -1
- package/dist/tools/DetectBrokenLinksTool.js.map +1 -1
- package/dist/tools/TriggerDonobuFlowTool.d.ts +2 -0
- package/dist/tools/TriggerDonobuFlowTool.d.ts.map +1 -1
- package/dist/utils/BrowserUtils.d.ts +17 -18
- package/dist/utils/BrowserUtils.d.ts.map +1 -1
- package/dist/utils/BrowserUtils.js +43 -40
- package/dist/utils/BrowserUtils.js.map +1 -1
- package/dist/utils/MiscUtils.js +1 -1
- package/dist/utils/MiscUtils.js.map +1 -1
- package/package.json +16 -16
|
@@ -0,0 +1,1483 @@
|
|
|
1
|
+
openapi: '3.0.0'
|
|
2
|
+
info:
|
|
3
|
+
title: 'Donobu API'
|
|
4
|
+
version: '1.0.0'
|
|
5
|
+
description: "The Donobu API provides a comprehensive suite of tools for automating web browser interactions. It allows you to create, manage, and execute 'flows,' which are sequences of actions performed in a browser, driven either by an AI agent or by a predefined script. This API is designed for a wide range of use cases, from simple website navigation and data extraction to complex, multi-step process automation and testing.\n\nKey features include:\n- **Flow Management**: Create, run, monitor, and delete automation flows.\n- **AI-Powered Automation**: Leverage powerful GPT models to drive flows autonomously based on a high-level objective.\n- **Deterministic Replay**: Rerun past flows exactly as they occurred or generate Playwright scripts for integration into testing pipelines.\n- **Configuration Management**: Manage GPT configurations, agent assignments, and environment variables used by your flows.\n- **Rich Data Access**: Retrieve detailed information about flow execution, including tool calls, screenshots, and video recordings."
|
|
6
|
+
servers:
|
|
7
|
+
- url: 'http://localhost:31000'
|
|
8
|
+
description: 'Local Donobu app server'
|
|
9
|
+
tags:
|
|
10
|
+
- name: 'flows'
|
|
11
|
+
description: 'Endpoints for creating, managing, and inspecting automation flows. Flows are the core resource in Donobu, representing a sequence of browser interactions to achieve a specific objective.'
|
|
12
|
+
- name: 'configs'
|
|
13
|
+
description: 'Endpoints for managing configurations used by flows, including GPT model settings and environment variables.'
|
|
14
|
+
- name: 'agents'
|
|
15
|
+
description: 'Endpoints for managing AI agents and assigning them specific GPT configurations to use for decision-making in autonomous flows.'
|
|
16
|
+
- name: 'tools'
|
|
17
|
+
description: 'Endpoints for discovering the browser automation tools available for use within flows.'
|
|
18
|
+
- name: 'system'
|
|
19
|
+
description: 'Endpoints for system-level operations, such as health checks and version information.'
|
|
20
|
+
paths:
|
|
21
|
+
/api/flows:
|
|
22
|
+
get:
|
|
23
|
+
tags:
|
|
24
|
+
- 'flows'
|
|
25
|
+
summary: 'List all flows'
|
|
26
|
+
description: 'Retrieves a paginated list of flows, with options for filtering by name, date, run mode, and state. Results are ordered by creation date, with the newest flows appearing first.'
|
|
27
|
+
operationId: 'getFlows'
|
|
28
|
+
parameters:
|
|
29
|
+
- name: 'name'
|
|
30
|
+
in: 'query'
|
|
31
|
+
description: 'Filter flows by exact name match.'
|
|
32
|
+
required: false
|
|
33
|
+
schema:
|
|
34
|
+
type: 'string'
|
|
35
|
+
- name: 'startedAfter'
|
|
36
|
+
in: 'query'
|
|
37
|
+
description: 'Filter for flows that started at or after this Unix epoch timestamp (in milliseconds).'
|
|
38
|
+
required: false
|
|
39
|
+
schema:
|
|
40
|
+
type: 'integer'
|
|
41
|
+
format: 'int64'
|
|
42
|
+
- name: 'startedBefore'
|
|
43
|
+
in: 'query'
|
|
44
|
+
description: 'Filter for flows that started at or before this Unix epoch timestamp (in milliseconds).'
|
|
45
|
+
required: false
|
|
46
|
+
schema:
|
|
47
|
+
type: 'integer'
|
|
48
|
+
format: 'int64'
|
|
49
|
+
- name: 'runMode'
|
|
50
|
+
in: 'query'
|
|
51
|
+
description: 'Filter flows by their run mode.'
|
|
52
|
+
required: false
|
|
53
|
+
schema:
|
|
54
|
+
$ref: '#/components/schemas/RunMode'
|
|
55
|
+
- name: 'state'
|
|
56
|
+
in: 'query'
|
|
57
|
+
description: 'Filter flows by their current state.'
|
|
58
|
+
required: false
|
|
59
|
+
schema:
|
|
60
|
+
$ref: '#/components/schemas/State'
|
|
61
|
+
- name: 'limit'
|
|
62
|
+
in: 'query'
|
|
63
|
+
description: 'The maximum number of flows to return. Must be between 1 and 100. Defaults to 100.'
|
|
64
|
+
required: false
|
|
65
|
+
schema:
|
|
66
|
+
type: 'integer'
|
|
67
|
+
minimum: 1
|
|
68
|
+
maximum: 100
|
|
69
|
+
default: 100
|
|
70
|
+
- name: 'pageToken'
|
|
71
|
+
in: 'query'
|
|
72
|
+
description: 'A token for fetching the next page of results.'
|
|
73
|
+
required: false
|
|
74
|
+
schema:
|
|
75
|
+
type: 'string'
|
|
76
|
+
responses:
|
|
77
|
+
'200':
|
|
78
|
+
description: 'A paginated list of flow metadata.'
|
|
79
|
+
content:
|
|
80
|
+
application/json:
|
|
81
|
+
schema:
|
|
82
|
+
$ref: '#/components/schemas/PaginatedFlowMetadata'
|
|
83
|
+
'400':
|
|
84
|
+
description: 'The request contains invalid query parameters.'
|
|
85
|
+
content:
|
|
86
|
+
application/json:
|
|
87
|
+
schema:
|
|
88
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
89
|
+
post:
|
|
90
|
+
tags:
|
|
91
|
+
- 'flows'
|
|
92
|
+
summary: 'Create a new flow'
|
|
93
|
+
description: 'Creates and initiates a new automation flow based on the provided configuration. The flow will start executing immediately.'
|
|
94
|
+
operationId: 'createFlow'
|
|
95
|
+
requestBody:
|
|
96
|
+
description: 'Configuration for the new flow.'
|
|
97
|
+
required: true
|
|
98
|
+
content:
|
|
99
|
+
application/json:
|
|
100
|
+
schema:
|
|
101
|
+
$ref: '#/components/schemas/CreateDonobuFlow'
|
|
102
|
+
responses:
|
|
103
|
+
'201':
|
|
104
|
+
description: 'The flow was created successfully. The response body contains the initial metadata of the newly created flow.'
|
|
105
|
+
content:
|
|
106
|
+
application/json:
|
|
107
|
+
schema:
|
|
108
|
+
$ref: '#/components/schemas/FlowMetadata'
|
|
109
|
+
'400':
|
|
110
|
+
description: 'The request body is invalid or contains conflicting parameters.'
|
|
111
|
+
content:
|
|
112
|
+
application/json:
|
|
113
|
+
schema:
|
|
114
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
115
|
+
/api/flows/{flowId}:
|
|
116
|
+
get:
|
|
117
|
+
tags:
|
|
118
|
+
- 'flows'
|
|
119
|
+
summary: 'Get flow metadata'
|
|
120
|
+
description: 'Retrieves the complete metadata for a specific flow by its unique ID. This includes its current state, configuration, and results if completed.'
|
|
121
|
+
operationId: 'getFlowMetadata'
|
|
122
|
+
parameters:
|
|
123
|
+
- name: 'flowId'
|
|
124
|
+
in: 'path'
|
|
125
|
+
description: 'The unique identifier of the flow.'
|
|
126
|
+
required: true
|
|
127
|
+
schema:
|
|
128
|
+
type: 'string'
|
|
129
|
+
format: 'uuid'
|
|
130
|
+
responses:
|
|
131
|
+
'200':
|
|
132
|
+
description: 'Successfully retrieved the flow metadata.'
|
|
133
|
+
content:
|
|
134
|
+
application/json:
|
|
135
|
+
schema:
|
|
136
|
+
$ref: '#/components/schemas/FlowMetadata'
|
|
137
|
+
'404':
|
|
138
|
+
description: 'A flow with the specified ID was not found.'
|
|
139
|
+
content:
|
|
140
|
+
application/json:
|
|
141
|
+
schema:
|
|
142
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
143
|
+
delete:
|
|
144
|
+
tags:
|
|
145
|
+
- 'flows'
|
|
146
|
+
summary: 'Delete a flow'
|
|
147
|
+
description: 'Deletes a completed flow and all its associated data, including screenshots, videos, and tool call history. A flow cannot be deleted while it is still running.'
|
|
148
|
+
operationId: 'deleteFlow'
|
|
149
|
+
parameters:
|
|
150
|
+
- name: 'flowId'
|
|
151
|
+
in: 'path'
|
|
152
|
+
description: 'The unique identifier of the flow to delete.'
|
|
153
|
+
required: true
|
|
154
|
+
schema:
|
|
155
|
+
type: 'string'
|
|
156
|
+
format: 'uuid'
|
|
157
|
+
responses:
|
|
158
|
+
'204':
|
|
159
|
+
description: 'The flow was successfully deleted.'
|
|
160
|
+
'404':
|
|
161
|
+
description: 'A flow with the specified ID was not found.'
|
|
162
|
+
content:
|
|
163
|
+
application/json:
|
|
164
|
+
schema:
|
|
165
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
166
|
+
'405':
|
|
167
|
+
description: 'The flow is currently running and cannot be deleted.'
|
|
168
|
+
content:
|
|
169
|
+
application/json:
|
|
170
|
+
schema:
|
|
171
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
172
|
+
/api/flows/{flowId}/rename:
|
|
173
|
+
post:
|
|
174
|
+
tags:
|
|
175
|
+
- 'flows'
|
|
176
|
+
summary: 'Rename a flow'
|
|
177
|
+
description: 'Updates the name of a specific flow. The name is used for display and can be used to look up flows.'
|
|
178
|
+
operationId: 'renameFlow'
|
|
179
|
+
parameters:
|
|
180
|
+
- name: 'flowId'
|
|
181
|
+
in: 'path'
|
|
182
|
+
description: 'The unique identifier of the flow to rename.'
|
|
183
|
+
required: true
|
|
184
|
+
schema:
|
|
185
|
+
type: 'string'
|
|
186
|
+
format: 'uuid'
|
|
187
|
+
requestBody:
|
|
188
|
+
required: true
|
|
189
|
+
content:
|
|
190
|
+
application/json:
|
|
191
|
+
schema:
|
|
192
|
+
type: 'object'
|
|
193
|
+
properties:
|
|
194
|
+
name:
|
|
195
|
+
type: 'string'
|
|
196
|
+
description: 'The new name for the flow. Can be set to null to remove the name.'
|
|
197
|
+
nullable: true
|
|
198
|
+
required:
|
|
199
|
+
- 'name'
|
|
200
|
+
responses:
|
|
201
|
+
'200':
|
|
202
|
+
description: 'The flow was successfully renamed. The response body contains the updated flow metadata.'
|
|
203
|
+
content:
|
|
204
|
+
application/json:
|
|
205
|
+
schema:
|
|
206
|
+
$ref: '#/components/schemas/FlowMetadata'
|
|
207
|
+
'400':
|
|
208
|
+
description: 'The provided name is invalid (e.g., too long).'
|
|
209
|
+
content:
|
|
210
|
+
application/json:
|
|
211
|
+
schema:
|
|
212
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
213
|
+
'404':
|
|
214
|
+
description: 'A flow with the specified ID was not found.'
|
|
215
|
+
content:
|
|
216
|
+
application/json:
|
|
217
|
+
schema:
|
|
218
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
219
|
+
/api/flows/{flowId}/rerun:
|
|
220
|
+
get:
|
|
221
|
+
tags:
|
|
222
|
+
- 'flows'
|
|
223
|
+
summary: 'Get flow as a rerun configuration'
|
|
224
|
+
description: 'Generates a `CreateDonobuFlow` configuration object based on a previously executed flow. This configuration can be used to rerun the flow in `DETERMINISTIC` mode, replaying its exact sequence of successful actions.'
|
|
225
|
+
operationId: 'getFlowAsRerun'
|
|
226
|
+
parameters:
|
|
227
|
+
- name: 'flowId'
|
|
228
|
+
in: 'path'
|
|
229
|
+
description: 'The unique identifier of the flow to use as a template.'
|
|
230
|
+
required: true
|
|
231
|
+
schema:
|
|
232
|
+
type: 'string'
|
|
233
|
+
format: 'uuid'
|
|
234
|
+
- $ref: '#/components/parameters/areElementIdsVolatile'
|
|
235
|
+
- $ref: '#/components/parameters/disableSelectorFailover'
|
|
236
|
+
responses:
|
|
237
|
+
'200':
|
|
238
|
+
description: 'A configuration object for rerunning the flow.'
|
|
239
|
+
content:
|
|
240
|
+
application/json:
|
|
241
|
+
schema:
|
|
242
|
+
$ref: '#/components/schemas/CreateDonobuFlow'
|
|
243
|
+
'404':
|
|
244
|
+
description: 'A flow with the specified ID was not found.'
|
|
245
|
+
content:
|
|
246
|
+
application/json:
|
|
247
|
+
schema:
|
|
248
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
249
|
+
/api/flows/{flowId}/code:
|
|
250
|
+
get:
|
|
251
|
+
tags:
|
|
252
|
+
- 'flows'
|
|
253
|
+
summary: 'Get flow as Playwright script'
|
|
254
|
+
description: 'Generates a Node.js Playwright script that replays the successful actions of a specified flow. This is useful for exporting automations into a standard testing framework.'
|
|
255
|
+
operationId: 'getFlowAsCode'
|
|
256
|
+
parameters:
|
|
257
|
+
- name: 'flowId'
|
|
258
|
+
in: 'path'
|
|
259
|
+
description: 'The unique identifier of the flow to convert to code.'
|
|
260
|
+
required: true
|
|
261
|
+
schema:
|
|
262
|
+
type: 'string'
|
|
263
|
+
format: 'uuid'
|
|
264
|
+
- $ref: '#/components/parameters/areElementIdsVolatile'
|
|
265
|
+
- $ref: '#/components/parameters/disableSelectorFailover'
|
|
266
|
+
- $ref: '#/components/parameters/disableSelfHealingTests'
|
|
267
|
+
- $ref: '#/components/parameters/disablePullRequestCreation'
|
|
268
|
+
- $ref: '#/components/parameters/runInHeadedMode'
|
|
269
|
+
- $ref: '#/components/parameters/slowMotionDelay'
|
|
270
|
+
responses:
|
|
271
|
+
'200':
|
|
272
|
+
description: 'The generated Playwright script.'
|
|
273
|
+
content:
|
|
274
|
+
text/plain:
|
|
275
|
+
schema:
|
|
276
|
+
type: 'string'
|
|
277
|
+
example: "const { chromium } = require('playwright');\n\n(async () => {\n const browser = await chromium.launch();\n const page = await browser.newPage();\n await page.goto('https://example.com');\n // ... more actions\n await browser.close();\n})();"
|
|
278
|
+
'404':
|
|
279
|
+
description: 'A flow with the specified ID was not found.'
|
|
280
|
+
content:
|
|
281
|
+
application/json:
|
|
282
|
+
schema:
|
|
283
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
284
|
+
/api/flows/project:
|
|
285
|
+
post:
|
|
286
|
+
tags:
|
|
287
|
+
- 'flows'
|
|
288
|
+
summary: 'Get flows as Playwright project'
|
|
289
|
+
description: 'Generates a complete, runnable Playwright project from a list of flow IDs. The project includes all necessary test files, configurations, and resolved dependencies, making it easy to export and run a suite of automations.'
|
|
290
|
+
operationId: 'getFlowsAsProject'
|
|
291
|
+
requestBody:
|
|
292
|
+
description: 'A list of flow IDs to include in the project and code generation options.'
|
|
293
|
+
required: true
|
|
294
|
+
content:
|
|
295
|
+
application/json:
|
|
296
|
+
schema:
|
|
297
|
+
type: 'object'
|
|
298
|
+
properties:
|
|
299
|
+
flowIds:
|
|
300
|
+
type: 'array'
|
|
301
|
+
items:
|
|
302
|
+
type: 'string'
|
|
303
|
+
format: 'uuid'
|
|
304
|
+
description: 'An array of flow IDs to include in the generated project.'
|
|
305
|
+
options:
|
|
306
|
+
$ref: '#/components/schemas/CodeGenerationOptions'
|
|
307
|
+
required:
|
|
308
|
+
- 'flowIds'
|
|
309
|
+
responses:
|
|
310
|
+
'200':
|
|
311
|
+
description: 'A zip archive containing the generated Playwright project.'
|
|
312
|
+
content:
|
|
313
|
+
application/zip:
|
|
314
|
+
schema:
|
|
315
|
+
type: 'string'
|
|
316
|
+
format: 'binary'
|
|
317
|
+
'400':
|
|
318
|
+
description: 'The request body is invalid.'
|
|
319
|
+
content:
|
|
320
|
+
application/json:
|
|
321
|
+
schema:
|
|
322
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
323
|
+
'404':
|
|
324
|
+
description: 'One or more of the specified flow IDs were not found.'
|
|
325
|
+
content:
|
|
326
|
+
application/json:
|
|
327
|
+
schema:
|
|
328
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
329
|
+
/api/flows/{flowId}/images/{imageId}:
|
|
330
|
+
get:
|
|
331
|
+
tags:
|
|
332
|
+
- 'flows'
|
|
333
|
+
summary: 'Get a flow screenshot'
|
|
334
|
+
description: 'Retrieves a specific screenshot image (in PNG format) associated with a flow, identified by its image ID. Screenshots are typically captured after each tool call.'
|
|
335
|
+
operationId: 'getFlowImage'
|
|
336
|
+
parameters:
|
|
337
|
+
- name: 'flowId'
|
|
338
|
+
in: 'path'
|
|
339
|
+
description: 'The unique identifier of the flow.'
|
|
340
|
+
required: true
|
|
341
|
+
schema:
|
|
342
|
+
type: 'string'
|
|
343
|
+
format: 'uuid'
|
|
344
|
+
- name: 'imageId'
|
|
345
|
+
in: 'path'
|
|
346
|
+
description: 'The unique identifier of the image.'
|
|
347
|
+
required: true
|
|
348
|
+
schema:
|
|
349
|
+
type: 'string'
|
|
350
|
+
responses:
|
|
351
|
+
'200':
|
|
352
|
+
description: 'The screenshot image file.'
|
|
353
|
+
content:
|
|
354
|
+
image/png:
|
|
355
|
+
schema:
|
|
356
|
+
type: 'string'
|
|
357
|
+
format: 'binary'
|
|
358
|
+
'404':
|
|
359
|
+
description: 'The specified flow or image was not found.'
|
|
360
|
+
content:
|
|
361
|
+
application/json:
|
|
362
|
+
schema:
|
|
363
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
364
|
+
/api/flows/{flowId}/video:
|
|
365
|
+
get:
|
|
366
|
+
tags:
|
|
367
|
+
- 'flows'
|
|
368
|
+
summary: 'Get flow video recording'
|
|
369
|
+
description: 'Retrieves the video recording (in WebM format) of a flow run. Videos are available for flows that were run with a visible browser window.'
|
|
370
|
+
operationId: 'getFlowVideo'
|
|
371
|
+
parameters:
|
|
372
|
+
- name: 'flowId'
|
|
373
|
+
in: 'path'
|
|
374
|
+
description: 'The unique identifier of the flow.'
|
|
375
|
+
required: true
|
|
376
|
+
schema:
|
|
377
|
+
type: 'string'
|
|
378
|
+
format: 'uuid'
|
|
379
|
+
responses:
|
|
380
|
+
'200':
|
|
381
|
+
description: 'The video recording file.'
|
|
382
|
+
content:
|
|
383
|
+
video/webm:
|
|
384
|
+
schema:
|
|
385
|
+
type: 'string'
|
|
386
|
+
format: 'binary'
|
|
387
|
+
'404':
|
|
388
|
+
description: 'The specified flow or its video was not found.'
|
|
389
|
+
content:
|
|
390
|
+
application/json:
|
|
391
|
+
schema:
|
|
392
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
393
|
+
/api/flows/{flowId}/tool-calls:
|
|
394
|
+
get:
|
|
395
|
+
tags:
|
|
396
|
+
- 'flows'
|
|
397
|
+
summary: 'List tool calls for a flow'
|
|
398
|
+
description: 'Retrieves a list of all tool calls that were executed during a specific flow run, in the order they were performed.'
|
|
399
|
+
operationId: 'getFlowToolCalls'
|
|
400
|
+
parameters:
|
|
401
|
+
- name: 'flowId'
|
|
402
|
+
in: 'path'
|
|
403
|
+
description: 'The unique identifier of the flow.'
|
|
404
|
+
required: true
|
|
405
|
+
schema:
|
|
406
|
+
type: 'string'
|
|
407
|
+
format: 'uuid'
|
|
408
|
+
responses:
|
|
409
|
+
'200':
|
|
410
|
+
description: 'An array of tool call objects.'
|
|
411
|
+
content:
|
|
412
|
+
application/json:
|
|
413
|
+
schema:
|
|
414
|
+
type: 'array'
|
|
415
|
+
items:
|
|
416
|
+
$ref: '#/components/schemas/ToolCall'
|
|
417
|
+
'404':
|
|
418
|
+
description: 'A flow with the specified ID was not found.'
|
|
419
|
+
content:
|
|
420
|
+
application/json:
|
|
421
|
+
schema:
|
|
422
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
423
|
+
/api/flows/{flowId}/tool-calls/{toolCallId}:
|
|
424
|
+
get:
|
|
425
|
+
tags:
|
|
426
|
+
- 'flows'
|
|
427
|
+
summary: 'Get a specific tool call'
|
|
428
|
+
description: 'Retrieves the details of a single tool call from a flow run, identified by its unique tool call ID.'
|
|
429
|
+
operationId: 'getFlowToolCall'
|
|
430
|
+
parameters:
|
|
431
|
+
- name: 'flowId'
|
|
432
|
+
in: 'path'
|
|
433
|
+
description: 'The unique identifier of the flow.'
|
|
434
|
+
required: true
|
|
435
|
+
schema:
|
|
436
|
+
type: 'string'
|
|
437
|
+
format: 'uuid'
|
|
438
|
+
- name: 'toolCallId'
|
|
439
|
+
in: 'path'
|
|
440
|
+
description: 'The unique identifier of the tool call.'
|
|
441
|
+
required: true
|
|
442
|
+
schema:
|
|
443
|
+
type: 'string'
|
|
444
|
+
responses:
|
|
445
|
+
'200':
|
|
446
|
+
description: 'The tool call object.'
|
|
447
|
+
content:
|
|
448
|
+
application/json:
|
|
449
|
+
schema:
|
|
450
|
+
$ref: '#/components/schemas/ToolCall'
|
|
451
|
+
'404':
|
|
452
|
+
description: 'The specified flow or tool call was not found.'
|
|
453
|
+
content:
|
|
454
|
+
application/json:
|
|
455
|
+
schema:
|
|
456
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
457
|
+
/api/gpt-configs:
|
|
458
|
+
get:
|
|
459
|
+
tags:
|
|
460
|
+
- 'configs'
|
|
461
|
+
summary: 'List all GPT configurations'
|
|
462
|
+
description: 'Retrieves a list of all saved GPT configurations. API keys and other secrets are redacted from the response.'
|
|
463
|
+
operationId: 'listGptConfigs'
|
|
464
|
+
responses:
|
|
465
|
+
'200':
|
|
466
|
+
description: 'A list of GPT configurations.'
|
|
467
|
+
content:
|
|
468
|
+
application/json:
|
|
469
|
+
schema:
|
|
470
|
+
type: 'array'
|
|
471
|
+
items:
|
|
472
|
+
$ref: '#/components/schemas/GptConfig'
|
|
473
|
+
/api/gpt-configs/{name}:
|
|
474
|
+
get:
|
|
475
|
+
tags:
|
|
476
|
+
- 'configs'
|
|
477
|
+
summary: 'Get a GPT configuration'
|
|
478
|
+
description: 'Retrieves a specific GPT configuration by its name. API keys and other secrets are redacted from the response.'
|
|
479
|
+
operationId: 'getGptConfig'
|
|
480
|
+
parameters:
|
|
481
|
+
- name: 'name'
|
|
482
|
+
in: 'path'
|
|
483
|
+
description: 'The unique name of the GPT configuration.'
|
|
484
|
+
required: true
|
|
485
|
+
schema:
|
|
486
|
+
type: 'string'
|
|
487
|
+
responses:
|
|
488
|
+
'200':
|
|
489
|
+
description: 'The requested GPT configuration.'
|
|
490
|
+
content:
|
|
491
|
+
application/json:
|
|
492
|
+
schema:
|
|
493
|
+
$ref: '#/components/schemas/GptConfig'
|
|
494
|
+
'404':
|
|
495
|
+
description: 'A GPT configuration with the specified name was not found.'
|
|
496
|
+
content:
|
|
497
|
+
application/json:
|
|
498
|
+
schema:
|
|
499
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
500
|
+
post:
|
|
501
|
+
tags:
|
|
502
|
+
- 'configs'
|
|
503
|
+
summary: 'Create or update a GPT configuration'
|
|
504
|
+
description: 'Creates a new GPT configuration or updates an existing one with the same name. This is used to define connection details for different AI models and platforms.'
|
|
505
|
+
operationId: 'setGptConfig'
|
|
506
|
+
parameters:
|
|
507
|
+
- name: 'name'
|
|
508
|
+
in: 'path'
|
|
509
|
+
description: 'The unique name for the GPT configuration.'
|
|
510
|
+
required: true
|
|
511
|
+
schema:
|
|
512
|
+
type: 'string'
|
|
513
|
+
requestBody:
|
|
514
|
+
description: 'The GPT configuration object.'
|
|
515
|
+
required: true
|
|
516
|
+
content:
|
|
517
|
+
application/json:
|
|
518
|
+
schema:
|
|
519
|
+
$ref: '#/components/schemas/GptConfig'
|
|
520
|
+
responses:
|
|
521
|
+
'200':
|
|
522
|
+
description: 'The GPT configuration was successfully created or updated. The response body contains the saved configuration with secrets redacted.'
|
|
523
|
+
content:
|
|
524
|
+
application/json:
|
|
525
|
+
schema:
|
|
526
|
+
$ref: '#/components/schemas/GptConfig'
|
|
527
|
+
'400':
|
|
528
|
+
description: 'The request body is invalid.'
|
|
529
|
+
content:
|
|
530
|
+
application/json:
|
|
531
|
+
schema:
|
|
532
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
533
|
+
delete:
|
|
534
|
+
tags:
|
|
535
|
+
- 'configs'
|
|
536
|
+
summary: 'Delete a GPT configuration'
|
|
537
|
+
description: 'Deletes a GPT configuration by its name. This action cannot be undone.'
|
|
538
|
+
operationId: 'deleteGptConfig'
|
|
539
|
+
parameters:
|
|
540
|
+
- name: 'name'
|
|
541
|
+
in: 'path'
|
|
542
|
+
description: 'The name of the GPT configuration to delete.'
|
|
543
|
+
required: true
|
|
544
|
+
schema:
|
|
545
|
+
type: 'string'
|
|
546
|
+
responses:
|
|
547
|
+
'204':
|
|
548
|
+
description: 'The GPT configuration was successfully deleted.'
|
|
549
|
+
'404':
|
|
550
|
+
description: 'A GPT configuration with the specified name was not found.'
|
|
551
|
+
content:
|
|
552
|
+
application/json:
|
|
553
|
+
schema:
|
|
554
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
555
|
+
/api/env:
|
|
556
|
+
get:
|
|
557
|
+
tags:
|
|
558
|
+
- 'configs'
|
|
559
|
+
summary: 'List all environment data'
|
|
560
|
+
description: 'Retrieves all stored environment variables as a key-value map. These variables can be referenced within flows.'
|
|
561
|
+
operationId: 'getEnvironmentData'
|
|
562
|
+
responses:
|
|
563
|
+
'200':
|
|
564
|
+
description: 'A map of all environment variables.'
|
|
565
|
+
content:
|
|
566
|
+
application/json:
|
|
567
|
+
schema:
|
|
568
|
+
type: 'object'
|
|
569
|
+
additionalProperties:
|
|
570
|
+
type: 'string'
|
|
571
|
+
/api/env/{key}:
|
|
572
|
+
get:
|
|
573
|
+
tags:
|
|
574
|
+
- 'configs'
|
|
575
|
+
summary: 'Get an environment datum'
|
|
576
|
+
description: 'Retrieves the value of a specific environment variable by its key.'
|
|
577
|
+
operationId: 'getEnvironmentDatum'
|
|
578
|
+
parameters:
|
|
579
|
+
- name: 'key'
|
|
580
|
+
in: 'path'
|
|
581
|
+
description: 'The key of the environment variable.'
|
|
582
|
+
required: true
|
|
583
|
+
schema:
|
|
584
|
+
type: 'string'
|
|
585
|
+
responses:
|
|
586
|
+
'200':
|
|
587
|
+
description: 'The value of the environment variable.'
|
|
588
|
+
content:
|
|
589
|
+
application/json:
|
|
590
|
+
schema:
|
|
591
|
+
type: 'object'
|
|
592
|
+
properties:
|
|
593
|
+
value:
|
|
594
|
+
type: 'string'
|
|
595
|
+
'404':
|
|
596
|
+
description: 'An environment variable with the specified key was not found.'
|
|
597
|
+
content:
|
|
598
|
+
application/json:
|
|
599
|
+
schema:
|
|
600
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
601
|
+
post:
|
|
602
|
+
tags:
|
|
603
|
+
- 'configs'
|
|
604
|
+
summary: 'Set an environment datum'
|
|
605
|
+
description: 'Creates or updates an environment variable with a specified key and value.'
|
|
606
|
+
operationId: 'setEnvironmentDatum'
|
|
607
|
+
parameters:
|
|
608
|
+
- name: 'key'
|
|
609
|
+
in: 'path'
|
|
610
|
+
description: 'The key of the environment variable to set.'
|
|
611
|
+
required: true
|
|
612
|
+
schema:
|
|
613
|
+
type: 'string'
|
|
614
|
+
requestBody:
|
|
615
|
+
required: true
|
|
616
|
+
content:
|
|
617
|
+
application/json:
|
|
618
|
+
schema:
|
|
619
|
+
type: 'object'
|
|
620
|
+
properties:
|
|
621
|
+
value:
|
|
622
|
+
type: 'string'
|
|
623
|
+
description: 'The value to assign to the environment variable.'
|
|
624
|
+
required:
|
|
625
|
+
- 'value'
|
|
626
|
+
responses:
|
|
627
|
+
'204':
|
|
628
|
+
description: 'The environment variable was successfully set.'
|
|
629
|
+
delete:
|
|
630
|
+
tags:
|
|
631
|
+
- 'configs'
|
|
632
|
+
summary: 'Delete an environment datum'
|
|
633
|
+
description: 'Deletes an environment variable by its key.'
|
|
634
|
+
operationId: 'deleteEnvironmentDatum'
|
|
635
|
+
parameters:
|
|
636
|
+
- name: 'key'
|
|
637
|
+
in: 'path'
|
|
638
|
+
description: 'The key of the environment variable to delete.'
|
|
639
|
+
required: true
|
|
640
|
+
schema:
|
|
641
|
+
type: 'string'
|
|
642
|
+
responses:
|
|
643
|
+
'204':
|
|
644
|
+
description: 'The environment variable was successfully deleted.'
|
|
645
|
+
/api/agents:
|
|
646
|
+
get:
|
|
647
|
+
tags:
|
|
648
|
+
- 'agents'
|
|
649
|
+
summary: 'List all agent assignments'
|
|
650
|
+
description: 'Retrieves a map of all agents and their assigned GPT configurations.'
|
|
651
|
+
operationId: 'listAgents'
|
|
652
|
+
responses:
|
|
653
|
+
'200':
|
|
654
|
+
description: 'A map of agent names to their assigned GPT configuration names.'
|
|
655
|
+
content:
|
|
656
|
+
application/json:
|
|
657
|
+
schema:
|
|
658
|
+
type: 'object'
|
|
659
|
+
additionalProperties:
|
|
660
|
+
type: 'string'
|
|
661
|
+
/api/agents/{name}:
|
|
662
|
+
get:
|
|
663
|
+
tags:
|
|
664
|
+
- 'agents'
|
|
665
|
+
summary: "Get an agent's assigned GPT configuration"
|
|
666
|
+
description: 'Retrieves the name of the GPT configuration assigned to a specific agent.'
|
|
667
|
+
operationId: 'getAgent'
|
|
668
|
+
parameters:
|
|
669
|
+
- name: 'name'
|
|
670
|
+
in: 'path'
|
|
671
|
+
description: 'The name of the agent.'
|
|
672
|
+
required: true
|
|
673
|
+
schema:
|
|
674
|
+
$ref: '#/components/schemas/DonobuAgent'
|
|
675
|
+
responses:
|
|
676
|
+
'200':
|
|
677
|
+
description: "The agent's assigned GPT configuration name."
|
|
678
|
+
content:
|
|
679
|
+
application/json:
|
|
680
|
+
schema:
|
|
681
|
+
type: 'object'
|
|
682
|
+
properties:
|
|
683
|
+
gptConfigName:
|
|
684
|
+
type: 'string'
|
|
685
|
+
'404':
|
|
686
|
+
description: 'The specified agent or its assignment was not found.'
|
|
687
|
+
content:
|
|
688
|
+
application/json:
|
|
689
|
+
schema:
|
|
690
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
691
|
+
post:
|
|
692
|
+
tags:
|
|
693
|
+
- 'agents'
|
|
694
|
+
summary: 'Assign a GPT configuration to an agent'
|
|
695
|
+
description: 'Assigns a specific GPT configuration to an agent, determining which AI model the agent will use for its tasks.'
|
|
696
|
+
operationId: 'setAgent'
|
|
697
|
+
parameters:
|
|
698
|
+
- name: 'name'
|
|
699
|
+
in: 'path'
|
|
700
|
+
description: 'The name of the agent to configure.'
|
|
701
|
+
required: true
|
|
702
|
+
schema:
|
|
703
|
+
$ref: '#/components/schemas/DonobuAgent'
|
|
704
|
+
requestBody:
|
|
705
|
+
required: true
|
|
706
|
+
content:
|
|
707
|
+
application/json:
|
|
708
|
+
schema:
|
|
709
|
+
type: 'object'
|
|
710
|
+
properties:
|
|
711
|
+
gptConfigName:
|
|
712
|
+
type: 'string'
|
|
713
|
+
description: 'The name of the GPT configuration to assign to the agent.'
|
|
714
|
+
required:
|
|
715
|
+
- 'gptConfigName'
|
|
716
|
+
responses:
|
|
717
|
+
'200':
|
|
718
|
+
description: 'The assignment was successful.'
|
|
719
|
+
content:
|
|
720
|
+
application/json:
|
|
721
|
+
schema:
|
|
722
|
+
type: 'object'
|
|
723
|
+
properties:
|
|
724
|
+
name:
|
|
725
|
+
$ref: '#/components/schemas/DonobuAgent'
|
|
726
|
+
gptConfigName:
|
|
727
|
+
type: 'string'
|
|
728
|
+
'404':
|
|
729
|
+
description: 'The specified GPT configuration was not found.'
|
|
730
|
+
content:
|
|
731
|
+
application/json:
|
|
732
|
+
schema:
|
|
733
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
734
|
+
/api/tools:
|
|
735
|
+
get:
|
|
736
|
+
tags:
|
|
737
|
+
- 'tools'
|
|
738
|
+
summary: 'List available tools'
|
|
739
|
+
description: 'Retrieves a list of all built-in tools that can be used within a flow to interact with web pages and control the automation process.'
|
|
740
|
+
operationId: 'listTools'
|
|
741
|
+
responses:
|
|
742
|
+
'200':
|
|
743
|
+
description: 'A list of available tools.'
|
|
744
|
+
content:
|
|
745
|
+
application/json:
|
|
746
|
+
schema:
|
|
747
|
+
type: 'array'
|
|
748
|
+
items:
|
|
749
|
+
$ref: '#/components/schemas/ToolDefinition'
|
|
750
|
+
/api/version:
|
|
751
|
+
get:
|
|
752
|
+
tags:
|
|
753
|
+
- 'system'
|
|
754
|
+
summary: 'Get API version'
|
|
755
|
+
description: 'Retrieves the current version of the Donobu application.'
|
|
756
|
+
operationId: 'getVersion'
|
|
757
|
+
responses:
|
|
758
|
+
'200':
|
|
759
|
+
description: 'The application version.'
|
|
760
|
+
content:
|
|
761
|
+
application/json:
|
|
762
|
+
schema:
|
|
763
|
+
type: 'object'
|
|
764
|
+
properties:
|
|
765
|
+
version:
|
|
766
|
+
type: 'string'
|
|
767
|
+
description: 'The semantic version of the application.'
|
|
768
|
+
example: '1.0.0'
|
|
769
|
+
/api/ping:
|
|
770
|
+
get:
|
|
771
|
+
tags:
|
|
772
|
+
- 'system'
|
|
773
|
+
summary: 'Ping the API'
|
|
774
|
+
description: 'A simple health check endpoint to verify that the API server is running and responsive.'
|
|
775
|
+
operationId: 'ping'
|
|
776
|
+
responses:
|
|
777
|
+
'200':
|
|
778
|
+
description: 'The server is alive.'
|
|
779
|
+
content:
|
|
780
|
+
application/json:
|
|
781
|
+
schema:
|
|
782
|
+
type: 'object'
|
|
783
|
+
properties:
|
|
784
|
+
status:
|
|
785
|
+
type: 'string'
|
|
786
|
+
example: 'pong'
|
|
787
|
+
components:
|
|
788
|
+
parameters:
|
|
789
|
+
areElementIdsVolatile:
|
|
790
|
+
name: 'areElementIdsVolatile'
|
|
791
|
+
in: 'query'
|
|
792
|
+
description: "If true, ID-only selectors (e.g. '#submit-btn') are dropped because the element's 'id' attribute is considered volatile. When every candidate is ID-based the list is left unchanged."
|
|
793
|
+
schema:
|
|
794
|
+
type: 'boolean'
|
|
795
|
+
disableSelectorFailover:
|
|
796
|
+
name: 'disableSelectorFailover'
|
|
797
|
+
in: 'query'
|
|
798
|
+
description: 'If false, only the most specific selector is used, disabling automatic fail-over to broader selectors.'
|
|
799
|
+
schema:
|
|
800
|
+
type: 'boolean'
|
|
801
|
+
disableSelfHealingTests:
|
|
802
|
+
name: 'disableSelfHealingTests'
|
|
803
|
+
in: 'query'
|
|
804
|
+
description: 'Disable self-healing tests.'
|
|
805
|
+
schema:
|
|
806
|
+
type: 'boolean'
|
|
807
|
+
disablePullRequestCreation:
|
|
808
|
+
name: 'disablePullRequestCreation'
|
|
809
|
+
in: 'query'
|
|
810
|
+
description: 'Disable the automatic creation of pull requests for tests that have self healed.'
|
|
811
|
+
schema:
|
|
812
|
+
type: 'boolean'
|
|
813
|
+
runInHeadedMode:
|
|
814
|
+
name: 'runInHeadedMode'
|
|
815
|
+
in: 'query'
|
|
816
|
+
description: 'Run tests with visible browser windows instead of headless mode.'
|
|
817
|
+
schema:
|
|
818
|
+
type: 'boolean'
|
|
819
|
+
slowMotionDelay:
|
|
820
|
+
name: 'slowMotionDelay'
|
|
821
|
+
in: 'query'
|
|
822
|
+
description: 'Delay in milliseconds between actions. Set to 0 to disable slow motion.'
|
|
823
|
+
schema:
|
|
824
|
+
type: 'number'
|
|
825
|
+
minimum: 0
|
|
826
|
+
schemas:
|
|
827
|
+
CreateDonobuFlow:
|
|
828
|
+
type: 'object'
|
|
829
|
+
description: 'This is the expected payload for a request to create a new Donobu flow.'
|
|
830
|
+
properties:
|
|
831
|
+
name:
|
|
832
|
+
type: 'string'
|
|
833
|
+
description: 'The name for this Donobu flow; if present, must be fewer than 256 characters.'
|
|
834
|
+
maxLength: 255
|
|
835
|
+
nullable: true
|
|
836
|
+
browser:
|
|
837
|
+
$ref: '#/components/schemas/BrowserConfig'
|
|
838
|
+
nullable: true
|
|
839
|
+
envVars:
|
|
840
|
+
type: 'array'
|
|
841
|
+
items:
|
|
842
|
+
type: 'string'
|
|
843
|
+
description: 'The names of environment variables made available for use by the flow.'
|
|
844
|
+
nullable: true
|
|
845
|
+
customTools:
|
|
846
|
+
type: 'array'
|
|
847
|
+
items:
|
|
848
|
+
$ref: '#/components/schemas/CustomTool'
|
|
849
|
+
description: 'Custom tools available for the flow.'
|
|
850
|
+
nullable: true
|
|
851
|
+
defaultMessageDuration:
|
|
852
|
+
type: 'number'
|
|
853
|
+
description: "The default amount of time the Donobu flow agent's messaging for the user should show (in milliseconds)."
|
|
854
|
+
nullable: true
|
|
855
|
+
callbackUrl:
|
|
856
|
+
type: 'string'
|
|
857
|
+
description: 'The URL to HTTP POST to when the flow completes. The body will contain a JSON object with single field, "id", of which is the ID of the flow that completed.'
|
|
858
|
+
nullable: true
|
|
859
|
+
targetWebsite:
|
|
860
|
+
type: 'string'
|
|
861
|
+
description: 'The website URL to start the flow at.'
|
|
862
|
+
overallObjective:
|
|
863
|
+
type: 'string'
|
|
864
|
+
description: "The overall objective to pursue; can only be omitted if initialRunMode has an effective value of 'INSTRUCT' or 'DETERMINISTIC'."
|
|
865
|
+
nullable: true
|
|
866
|
+
allowedTools:
|
|
867
|
+
type: 'array'
|
|
868
|
+
items:
|
|
869
|
+
type: 'string'
|
|
870
|
+
description: 'The complete set of tools (by name) that this flow is permitted to use. This list is automatically populated by combining any explicitly specified allowedTools with tools from customTools and any tools referenced in toolCallsOnStart. Tools not in this list cannot be invoked during flow execution.'
|
|
871
|
+
nullable: true
|
|
872
|
+
resultJsonSchema:
|
|
873
|
+
type: 'object'
|
|
874
|
+
description: 'If non-null, the JSON schema that the result field will conform to.'
|
|
875
|
+
additionalProperties: true
|
|
876
|
+
nullable: true
|
|
877
|
+
maxToolCalls:
|
|
878
|
+
type: 'number'
|
|
879
|
+
description: "Set the maximum number of actions that can be taken in a flow. This setting is only used if the initialRunMode has an effective value of 'AUTONOMOUS'."
|
|
880
|
+
nullable: true
|
|
881
|
+
gptConfigNameOverride:
|
|
882
|
+
type: 'string'
|
|
883
|
+
description: 'The name of a specific GPT configuration to use. If the corresponding GPT configuration is not defined or unresolvable, the default flow agent configuration will be used.'
|
|
884
|
+
nullable: true
|
|
885
|
+
initialRunMode:
|
|
886
|
+
$ref: '#/components/schemas/RunMode'
|
|
887
|
+
nullable: true
|
|
888
|
+
isControlPanelEnabled:
|
|
889
|
+
type: 'boolean'
|
|
890
|
+
description: 'Set to true if the in-browser control panel should be enabled. If the headless parameter is true, then this parameter is ignored.'
|
|
891
|
+
nullable: true
|
|
892
|
+
toolCallsOnStart:
|
|
893
|
+
type: 'array'
|
|
894
|
+
items:
|
|
895
|
+
$ref: '#/components/schemas/ProposedToolCall'
|
|
896
|
+
description: 'An ordered series of tool calls to invoke when starting the flow.'
|
|
897
|
+
nullable: true
|
|
898
|
+
FlowMetadata:
|
|
899
|
+
type: 'object'
|
|
900
|
+
properties:
|
|
901
|
+
id:
|
|
902
|
+
type: 'string'
|
|
903
|
+
description: 'The unique ID of this flow.'
|
|
904
|
+
name:
|
|
905
|
+
type: 'string'
|
|
906
|
+
description: 'The name of this flow.'
|
|
907
|
+
nullable: true
|
|
908
|
+
createdWithDonobuVersion:
|
|
909
|
+
type: 'string'
|
|
910
|
+
description: 'The version of Donobu that created the flow.'
|
|
911
|
+
browser:
|
|
912
|
+
$ref: '#/components/schemas/BrowserConfig'
|
|
913
|
+
envVars:
|
|
914
|
+
type: 'array'
|
|
915
|
+
items:
|
|
916
|
+
type: 'string'
|
|
917
|
+
description: 'The names of environment variables made available for use by the flow.'
|
|
918
|
+
nullable: true
|
|
919
|
+
gptConfigName:
|
|
920
|
+
type: 'string'
|
|
921
|
+
description: 'The name of the specific GPT configuration used for the flow.'
|
|
922
|
+
nullable: true
|
|
923
|
+
hasGptConfigNameOverride:
|
|
924
|
+
type: 'boolean'
|
|
925
|
+
description: 'If true, means that the `gptConfigName` was explicitly overwritten when the flow was created.'
|
|
926
|
+
customTools:
|
|
927
|
+
type: 'array'
|
|
928
|
+
items:
|
|
929
|
+
$ref: '#/components/schemas/CustomTool'
|
|
930
|
+
description: 'Custom tools available for the flow.'
|
|
931
|
+
nullable: true
|
|
932
|
+
defaultMessageDuration:
|
|
933
|
+
type: 'number'
|
|
934
|
+
description: "The default amount of time the Donobu flow agent's messaging for the user should show (in milliseconds)."
|
|
935
|
+
nullable: true
|
|
936
|
+
runMode:
|
|
937
|
+
$ref: '#/components/schemas/RunMode'
|
|
938
|
+
isControlPanelEnabled:
|
|
939
|
+
type: 'boolean'
|
|
940
|
+
description: 'Set to true if the in-browser control panel should be enabled.'
|
|
941
|
+
callbackUrl:
|
|
942
|
+
type: 'string'
|
|
943
|
+
description: 'The URL to HTTP POST to when the flow completes. The body will contain a JSON object with single field, "id", of which is the ID of the flow that completed.'
|
|
944
|
+
nullable: true
|
|
945
|
+
targetWebsite:
|
|
946
|
+
type: 'string'
|
|
947
|
+
description: 'The website URL to start the flow at.'
|
|
948
|
+
overallObjective:
|
|
949
|
+
type: 'string'
|
|
950
|
+
description: 'The overall objective to pursue.'
|
|
951
|
+
nullable: true
|
|
952
|
+
allowedTools:
|
|
953
|
+
type: 'array'
|
|
954
|
+
items:
|
|
955
|
+
type: 'string'
|
|
956
|
+
description: 'The complete set of tools (by name) that this flow is permitted to use. This list is automatically populated by combining any explicitly specified allowedTools with tools from customTools and any tools referenced in toolCallsOnStart. Tools not in this list cannot be invoked during flow execution.'
|
|
957
|
+
resultJsonSchema:
|
|
958
|
+
type: 'object'
|
|
959
|
+
description: 'If non-null, the JSON schema that the result field will conform to.'
|
|
960
|
+
additionalProperties: true
|
|
961
|
+
nullable: true
|
|
962
|
+
result:
|
|
963
|
+
type: 'object'
|
|
964
|
+
description: "The final output of the flow, populated when the flow reaches a terminal state. The content depends on how the flow completes:\n(1) If the flow succeeds and resultJsonSchema is specified, contains an object conforming to that schema extracted from the flow context;\n(2) If resultJsonSchema extraction fails, contains error details about the extraction failure;\n(3) Otherwise, contains the metadata from the final tool call, or null if no tools were executed."
|
|
965
|
+
additionalProperties: true
|
|
966
|
+
nullable: true
|
|
967
|
+
inputTokensUsed:
|
|
968
|
+
type: 'number'
|
|
969
|
+
description: 'The number of LLM input tokens used during this flow.'
|
|
970
|
+
completionTokensUsed:
|
|
971
|
+
type: 'number'
|
|
972
|
+
description: 'The number of LLM completion tokens used during this flow.'
|
|
973
|
+
maxToolCalls:
|
|
974
|
+
type: 'number'
|
|
975
|
+
description: 'If non-null, the maximum number of tool calls allowed for this flow.'
|
|
976
|
+
nullable: true
|
|
977
|
+
startedAt:
|
|
978
|
+
type: 'number'
|
|
979
|
+
description: 'The Unix epoch millisecond timestamp of when the flow started.'
|
|
980
|
+
nullable: true
|
|
981
|
+
completedAt:
|
|
982
|
+
type: 'number'
|
|
983
|
+
description: 'The Unix epoch millisecond timestamp of when the flow completed.'
|
|
984
|
+
nullable: true
|
|
985
|
+
state:
|
|
986
|
+
$ref: '#/components/schemas/State'
|
|
987
|
+
nextState:
|
|
988
|
+
$ref: '#/components/schemas/State'
|
|
989
|
+
nullable: true
|
|
990
|
+
PaginatedFlowMetadata:
|
|
991
|
+
type: 'object'
|
|
992
|
+
description: 'A paginated list of flow metadata objects.'
|
|
993
|
+
properties:
|
|
994
|
+
items:
|
|
995
|
+
type: 'array'
|
|
996
|
+
items:
|
|
997
|
+
$ref: '#/components/schemas/FlowMetadata'
|
|
998
|
+
nextPageToken:
|
|
999
|
+
type: 'string'
|
|
1000
|
+
description: 'A token that can be used to retrieve the next page of results. If absent, there are no more results.'
|
|
1001
|
+
State:
|
|
1002
|
+
type: 'string'
|
|
1003
|
+
description: "Represents the possible states of a flow:\n - UNSTARTED: Flow created but not yet initialized.\n - INITIALIZING: Setting up browser context and initial state.\n - RUNNING_ACTION: Executing a tool call.\n - QUERYING_LLM_FOR_NEXT_ACTION: AI determining next action (AUTONOMOUS mode).\n - WAITING_ON_USER_FOR_NEXT_ACTION: Waiting for user input (INSTRUCT mode).\n - PAUSED: Flow execution temporarily suspended.\n - RESUMING: Transitioning from paused to active state.\n - FAILED: Flow terminated unsuccessfully.\n - SUCCESS: Flow completed successfully."
|
|
1004
|
+
enum:
|
|
1005
|
+
- 'UNSTARTED'
|
|
1006
|
+
- 'INITIALIZING'
|
|
1007
|
+
- 'QUERYING_LLM_FOR_NEXT_ACTION'
|
|
1008
|
+
- 'WAITING_ON_USER_FOR_NEXT_ACTION'
|
|
1009
|
+
- 'PAUSED'
|
|
1010
|
+
- 'RESUMING'
|
|
1011
|
+
- 'RUNNING_ACTION'
|
|
1012
|
+
- 'FAILED'
|
|
1013
|
+
- 'SUCCESS'
|
|
1014
|
+
RunMode:
|
|
1015
|
+
type: 'string'
|
|
1016
|
+
description: "The execution mode that determines how a flow operates and makes decisions:\n\n- AUTONOMOUS: The flow is driven by an AI agent (GPT) that autonomously decides what actions to\n take based on the overall objective. The AI analyzes the current page state,\n determines the next appropriate action, and executes it without human intervention.\n This mode requires a valid GPT client configuration.\n\n- INSTRUCT: The flow waits for explicit user instructions for each action. The user manually\n directs what tools to call and when, making this mode suitable for guided walkthroughs\n or when human oversight is required for each step. No GPT client is required.\n\n- DETERMINISTIC: The flow executes a predetermined sequence of actions without any decision-making.\n It runs through a fixed list of tool calls (typically from toolCallsOnStart) and\n completes when all actions are finished. This mode is commonly used for replaying\n previously recorded flows or executing scripted sequences."
|
|
1017
|
+
enum:
|
|
1018
|
+
- 'AUTONOMOUS'
|
|
1019
|
+
- 'INSTRUCT'
|
|
1020
|
+
- 'DETERMINISTIC'
|
|
1021
|
+
BrowserConfig:
|
|
1022
|
+
type: 'object'
|
|
1023
|
+
properties:
|
|
1024
|
+
initialState:
|
|
1025
|
+
$ref: '#/components/schemas/BrowserStateReference'
|
|
1026
|
+
description: 'When starting the flow, initialize the browser state from here.'
|
|
1027
|
+
persistState:
|
|
1028
|
+
type: 'boolean'
|
|
1029
|
+
description: 'If set to true, saves the browser state at the end of the flow.'
|
|
1030
|
+
using:
|
|
1031
|
+
description: 'Browser configuration type and settings.'
|
|
1032
|
+
oneOf:
|
|
1033
|
+
- $ref: '#/components/schemas/DeviceBrowser'
|
|
1034
|
+
- $ref: '#/components/schemas/RemoteInstanceBrowser'
|
|
1035
|
+
- $ref: '#/components/schemas/BrowserBaseBrowser'
|
|
1036
|
+
discriminator:
|
|
1037
|
+
propertyName: 'type'
|
|
1038
|
+
DeviceBrowser:
|
|
1039
|
+
type: 'object'
|
|
1040
|
+
description: 'Configuration for using a local device browser.'
|
|
1041
|
+
properties:
|
|
1042
|
+
type:
|
|
1043
|
+
type: 'string'
|
|
1044
|
+
description: 'Use a local device browser.'
|
|
1045
|
+
enum: ['device']
|
|
1046
|
+
deviceName:
|
|
1047
|
+
type: 'string'
|
|
1048
|
+
description: "The name of the device to run the flow with. See devices.json for details. If not specified, defaults to 'Desktop Chromium'."
|
|
1049
|
+
headless:
|
|
1050
|
+
type: 'boolean'
|
|
1051
|
+
description: 'If true, will not open a real browser window to perform the flow.'
|
|
1052
|
+
proxy:
|
|
1053
|
+
type: 'object'
|
|
1054
|
+
description: 'Optional network proxy configuration.'
|
|
1055
|
+
properties:
|
|
1056
|
+
server:
|
|
1057
|
+
type: 'string'
|
|
1058
|
+
bypass:
|
|
1059
|
+
type: 'string'
|
|
1060
|
+
username:
|
|
1061
|
+
type: 'string'
|
|
1062
|
+
description: 'Will default to process.env.PROXY_USERNAME.'
|
|
1063
|
+
password:
|
|
1064
|
+
type: 'string'
|
|
1065
|
+
description: 'Will default to process.env.PROXY_PASSWORD.'
|
|
1066
|
+
required:
|
|
1067
|
+
- 'type'
|
|
1068
|
+
RemoteInstanceBrowser:
|
|
1069
|
+
type: 'object'
|
|
1070
|
+
description: 'Configuration for connecting to a remote browser instance.'
|
|
1071
|
+
properties:
|
|
1072
|
+
type:
|
|
1073
|
+
type: 'string'
|
|
1074
|
+
description: 'Connect to a remote browser instance.'
|
|
1075
|
+
enum: ['remoteInstance']
|
|
1076
|
+
url:
|
|
1077
|
+
type: 'string'
|
|
1078
|
+
description: 'The URL of a remote browser instance to connect to using the Chrome DevTools Protocol (CDP).'
|
|
1079
|
+
required:
|
|
1080
|
+
- 'type'
|
|
1081
|
+
- 'url'
|
|
1082
|
+
BrowserBaseBrowser:
|
|
1083
|
+
type: 'object'
|
|
1084
|
+
description: 'Configuration for using the BrowserBase cloud browser service.'
|
|
1085
|
+
properties:
|
|
1086
|
+
type:
|
|
1087
|
+
type: 'string'
|
|
1088
|
+
description: 'Use BrowserBase cloud browser service.'
|
|
1089
|
+
enum: ['browserBase']
|
|
1090
|
+
sessionArgs:
|
|
1091
|
+
$ref: '#/components/schemas/BrowserBaseSessionArgs'
|
|
1092
|
+
required:
|
|
1093
|
+
- 'type'
|
|
1094
|
+
- 'sessionArgs'
|
|
1095
|
+
BrowserBaseSessionArgs:
|
|
1096
|
+
type: 'object'
|
|
1097
|
+
description: 'Configuration arguments for the BrowserBase session.'
|
|
1098
|
+
properties:
|
|
1099
|
+
projectId:
|
|
1100
|
+
type: 'string'
|
|
1101
|
+
description: 'The project ID for the BrowserBase session.'
|
|
1102
|
+
extensionId:
|
|
1103
|
+
type: 'string'
|
|
1104
|
+
description: 'Optional extension ID.'
|
|
1105
|
+
browserSettings:
|
|
1106
|
+
type: 'object'
|
|
1107
|
+
description: 'Browser-specific settings.'
|
|
1108
|
+
properties:
|
|
1109
|
+
context:
|
|
1110
|
+
type: 'object'
|
|
1111
|
+
description: 'Browser context settings.'
|
|
1112
|
+
properties:
|
|
1113
|
+
id:
|
|
1114
|
+
type: 'string'
|
|
1115
|
+
description: 'Context ID.'
|
|
1116
|
+
extensionId:
|
|
1117
|
+
type: 'string'
|
|
1118
|
+
description: 'Extension ID in browser settings.'
|
|
1119
|
+
viewport:
|
|
1120
|
+
type: 'object'
|
|
1121
|
+
description: 'Viewport dimensions.'
|
|
1122
|
+
properties:
|
|
1123
|
+
width:
|
|
1124
|
+
type: 'number'
|
|
1125
|
+
description: 'Viewport width in pixels.'
|
|
1126
|
+
height:
|
|
1127
|
+
type: 'number'
|
|
1128
|
+
description: 'Viewport height in pixels.'
|
|
1129
|
+
blockAds:
|
|
1130
|
+
type: 'boolean'
|
|
1131
|
+
description: 'Whether to block advertisements.'
|
|
1132
|
+
solveCaptchas:
|
|
1133
|
+
type: 'boolean'
|
|
1134
|
+
description: 'Whether to automatically solve captchas.'
|
|
1135
|
+
advancedStealth:
|
|
1136
|
+
type: 'boolean'
|
|
1137
|
+
description: 'Whether to enable advanced stealth mode.'
|
|
1138
|
+
timeout:
|
|
1139
|
+
type: 'number'
|
|
1140
|
+
description: 'Duration in seconds after which the session will automatically end.'
|
|
1141
|
+
keepAlive:
|
|
1142
|
+
type: 'boolean'
|
|
1143
|
+
description: 'Set to true to keep the session alive even after disconnections. Available on the Hobby Plan and above.'
|
|
1144
|
+
proxies:
|
|
1145
|
+
type: 'boolean'
|
|
1146
|
+
description: 'Whether to use proxies.'
|
|
1147
|
+
region:
|
|
1148
|
+
type: 'string'
|
|
1149
|
+
description: 'Geographic region for the browser session.'
|
|
1150
|
+
userMetadata:
|
|
1151
|
+
type: 'object'
|
|
1152
|
+
description: 'Custom user metadata as key-value pairs.'
|
|
1153
|
+
additionalProperties:
|
|
1154
|
+
type: 'string'
|
|
1155
|
+
required:
|
|
1156
|
+
- 'projectId'
|
|
1157
|
+
BrowserStateReference:
|
|
1158
|
+
description: 'Specifies how to reference a flow from which to restore browser state.'
|
|
1159
|
+
oneOf:
|
|
1160
|
+
- $ref: '#/components/schemas/BrowserStateReferenceById'
|
|
1161
|
+
- $ref: '#/components/schemas/BrowserStateReferenceByName'
|
|
1162
|
+
- $ref: '#/components/schemas/BrowserStateReferenceByJson'
|
|
1163
|
+
discriminator:
|
|
1164
|
+
propertyName: 'type'
|
|
1165
|
+
BrowserStateReferenceById:
|
|
1166
|
+
type: 'object'
|
|
1167
|
+
properties:
|
|
1168
|
+
type:
|
|
1169
|
+
type: 'string'
|
|
1170
|
+
enum: ['id']
|
|
1171
|
+
value:
|
|
1172
|
+
type: 'string'
|
|
1173
|
+
format: 'uuid'
|
|
1174
|
+
description: 'The ID of the flow to restore state from.'
|
|
1175
|
+
required:
|
|
1176
|
+
- 'type'
|
|
1177
|
+
- 'value'
|
|
1178
|
+
BrowserStateReferenceByName:
|
|
1179
|
+
type: 'object'
|
|
1180
|
+
properties:
|
|
1181
|
+
type:
|
|
1182
|
+
type: 'string'
|
|
1183
|
+
enum: ['name']
|
|
1184
|
+
value:
|
|
1185
|
+
type: 'string'
|
|
1186
|
+
description: 'The name of the flow to restore state from.'
|
|
1187
|
+
required:
|
|
1188
|
+
- 'type'
|
|
1189
|
+
- 'value'
|
|
1190
|
+
BrowserStateReferenceByJson:
|
|
1191
|
+
type: 'object'
|
|
1192
|
+
properties:
|
|
1193
|
+
type:
|
|
1194
|
+
type: 'string'
|
|
1195
|
+
enum: ['json']
|
|
1196
|
+
value:
|
|
1197
|
+
$ref: '#/components/schemas/BrowserStorageState'
|
|
1198
|
+
required:
|
|
1199
|
+
- 'type'
|
|
1200
|
+
- 'value'
|
|
1201
|
+
BrowserStorageState:
|
|
1202
|
+
type: 'object'
|
|
1203
|
+
description: 'Represents the storage state of a browser, including cookies and local/session storage for various origins.'
|
|
1204
|
+
properties:
|
|
1205
|
+
cookies:
|
|
1206
|
+
type: 'array'
|
|
1207
|
+
items:
|
|
1208
|
+
type: 'object'
|
|
1209
|
+
properties:
|
|
1210
|
+
name:
|
|
1211
|
+
type: 'string'
|
|
1212
|
+
value:
|
|
1213
|
+
type: 'string'
|
|
1214
|
+
domain:
|
|
1215
|
+
type: 'string'
|
|
1216
|
+
path:
|
|
1217
|
+
type: 'string'
|
|
1218
|
+
expires:
|
|
1219
|
+
type: 'number'
|
|
1220
|
+
description: 'Epoch seconds, or -1 for session cookies.'
|
|
1221
|
+
httpOnly:
|
|
1222
|
+
type: 'boolean'
|
|
1223
|
+
secure:
|
|
1224
|
+
type: 'boolean'
|
|
1225
|
+
sameSite:
|
|
1226
|
+
type: 'string'
|
|
1227
|
+
enum: ['Strict', 'Lax', 'None']
|
|
1228
|
+
origins:
|
|
1229
|
+
type: 'array'
|
|
1230
|
+
items:
|
|
1231
|
+
type: 'object'
|
|
1232
|
+
properties:
|
|
1233
|
+
origin:
|
|
1234
|
+
type: 'string'
|
|
1235
|
+
localStorage:
|
|
1236
|
+
type: 'array'
|
|
1237
|
+
items:
|
|
1238
|
+
type: 'object'
|
|
1239
|
+
properties:
|
|
1240
|
+
name:
|
|
1241
|
+
type: 'string'
|
|
1242
|
+
value:
|
|
1243
|
+
type: 'string'
|
|
1244
|
+
sessionStorage:
|
|
1245
|
+
type: 'array'
|
|
1246
|
+
items:
|
|
1247
|
+
type: 'object'
|
|
1248
|
+
properties:
|
|
1249
|
+
name:
|
|
1250
|
+
type: 'string'
|
|
1251
|
+
value:
|
|
1252
|
+
type: 'string'
|
|
1253
|
+
CustomTool:
|
|
1254
|
+
type: 'object'
|
|
1255
|
+
description: 'A definition of a user-defined tool to use for a DonobuFlow.'
|
|
1256
|
+
properties:
|
|
1257
|
+
name:
|
|
1258
|
+
type: 'string'
|
|
1259
|
+
description: 'The name of the user-defined tool.'
|
|
1260
|
+
description:
|
|
1261
|
+
type: 'string'
|
|
1262
|
+
description: 'A description of what the tool does.'
|
|
1263
|
+
inputSchema:
|
|
1264
|
+
type: 'object'
|
|
1265
|
+
description: 'The input schema definition for the tool as a JSON object.'
|
|
1266
|
+
additionalProperties: true
|
|
1267
|
+
javascript:
|
|
1268
|
+
type: 'string'
|
|
1269
|
+
description: 'The JavaScript code that implements the tool functionality.'
|
|
1270
|
+
required:
|
|
1271
|
+
- 'name'
|
|
1272
|
+
- 'description'
|
|
1273
|
+
- 'inputSchema'
|
|
1274
|
+
- 'javascript'
|
|
1275
|
+
ProposedToolCall:
|
|
1276
|
+
type: 'object'
|
|
1277
|
+
description: 'A proposed (i.e., yet to be executed) tool call.'
|
|
1278
|
+
properties:
|
|
1279
|
+
name:
|
|
1280
|
+
type: 'string'
|
|
1281
|
+
description: 'The name of the tool to call.'
|
|
1282
|
+
parameters:
|
|
1283
|
+
type: 'object'
|
|
1284
|
+
description: "The parameters to supply to the tool's call method. Must conform to the tool's expected parameters type."
|
|
1285
|
+
additionalProperties: true
|
|
1286
|
+
toolCallId:
|
|
1287
|
+
type: 'string'
|
|
1288
|
+
description: 'The ID used by the GPT model to track a proposed tool call to a tool call result.'
|
|
1289
|
+
nullable: true
|
|
1290
|
+
required:
|
|
1291
|
+
- 'name'
|
|
1292
|
+
- 'parameters'
|
|
1293
|
+
ToolCall:
|
|
1294
|
+
type: 'object'
|
|
1295
|
+
description: 'The record for a singular, completed, call for a tool. This is used for persistence and APIs.'
|
|
1296
|
+
properties:
|
|
1297
|
+
id:
|
|
1298
|
+
type: 'string'
|
|
1299
|
+
description: 'The ID for this singular call.'
|
|
1300
|
+
toolName:
|
|
1301
|
+
type: 'string'
|
|
1302
|
+
description: 'The tool name of the tool called.'
|
|
1303
|
+
parameters:
|
|
1304
|
+
type: 'object'
|
|
1305
|
+
description: 'The parameters supplied to the tool.'
|
|
1306
|
+
additionalProperties: true
|
|
1307
|
+
outcome:
|
|
1308
|
+
$ref: '#/components/schemas/ToolCallResult'
|
|
1309
|
+
postCallImageId:
|
|
1310
|
+
type: 'string'
|
|
1311
|
+
description: 'The ID of the image of the page after the tool was called. If the page was closed during the tool call, this will be null.'
|
|
1312
|
+
nullable: true
|
|
1313
|
+
page:
|
|
1314
|
+
type: 'string'
|
|
1315
|
+
description: 'The URL of the webpage that the tool had focus on when running.'
|
|
1316
|
+
startedAt:
|
|
1317
|
+
type: 'number'
|
|
1318
|
+
description: 'The Unix epoch millisecond timestamp of the instant the tool was called.'
|
|
1319
|
+
completedAt:
|
|
1320
|
+
type: 'number'
|
|
1321
|
+
description: 'The Unix epoch millisecond timestamp of the instant the tool completed.'
|
|
1322
|
+
ToolCallResult:
|
|
1323
|
+
type: 'object'
|
|
1324
|
+
description: 'Response wrapper object for a tool call.'
|
|
1325
|
+
properties:
|
|
1326
|
+
isSuccessful:
|
|
1327
|
+
type: 'boolean'
|
|
1328
|
+
description: 'Indicates if the tool call should be considered a success.'
|
|
1329
|
+
forLlm:
|
|
1330
|
+
type: 'string'
|
|
1331
|
+
description: 'The data to return back to the LLM so that it knows the outcome of this tool call.'
|
|
1332
|
+
metadata:
|
|
1333
|
+
type: 'object'
|
|
1334
|
+
description: 'Metadata to record, but will not be shared with the LLM.'
|
|
1335
|
+
additionalProperties: true
|
|
1336
|
+
nullable: true
|
|
1337
|
+
CodeGenerationOptions:
|
|
1338
|
+
type: 'object'
|
|
1339
|
+
properties:
|
|
1340
|
+
areElementIdsVolatile:
|
|
1341
|
+
type: 'boolean'
|
|
1342
|
+
description: "If true, ID-only selectors (e.g. '#submit-btn') are *dropped* because the element's 'id' attribute is considered volatile. When every candidate is ID-based the list is left unchanged (something is better than nothing)."
|
|
1343
|
+
disableSelectorFailover:
|
|
1344
|
+
type: 'boolean'
|
|
1345
|
+
description: 'If false, only the **first** selector (the most specific one) is used, disabling automatic fail-over to broader selectors.'
|
|
1346
|
+
disableSelfHealingTests:
|
|
1347
|
+
type: 'boolean'
|
|
1348
|
+
description: 'Disable self-healing tests.'
|
|
1349
|
+
disablePullRequestCreation:
|
|
1350
|
+
type: 'boolean'
|
|
1351
|
+
description: 'Disable the automatic creation of pull requests for tests that have self healed.'
|
|
1352
|
+
runInHeadedMode:
|
|
1353
|
+
type: 'boolean'
|
|
1354
|
+
description: 'Run tests with visible browser windows instead of headless mode. Useful for debugging and demos.'
|
|
1355
|
+
slowMotionDelay:
|
|
1356
|
+
type: 'number'
|
|
1357
|
+
description: 'Delay in milliseconds between actions. Set to 0 to disable slow motion. Useful for debugging and demos.'
|
|
1358
|
+
minimum: 0
|
|
1359
|
+
GptConfig:
|
|
1360
|
+
description: 'A resource structure that can be used to establish connectivity with a particular GPT platform and model. If there are an `apiKey`, and/or a `secretAccessKey` fields, they will be redacted before being returned through the API.'
|
|
1361
|
+
oneOf:
|
|
1362
|
+
- $ref: '#/components/schemas/AnthropicConfig'
|
|
1363
|
+
- $ref: '#/components/schemas/AnthropicAwsBedrockConfig'
|
|
1364
|
+
- $ref: '#/components/schemas/GoogleGenerativeAiConfig'
|
|
1365
|
+
- $ref: '#/components/schemas/GoogleVertexConfig'
|
|
1366
|
+
- $ref: '#/components/schemas/OpenAiConfig'
|
|
1367
|
+
discriminator:
|
|
1368
|
+
propertyName: 'type'
|
|
1369
|
+
AnthropicConfig:
|
|
1370
|
+
type: 'object'
|
|
1371
|
+
properties:
|
|
1372
|
+
type:
|
|
1373
|
+
type: 'string'
|
|
1374
|
+
enum: ['ANTHROPIC']
|
|
1375
|
+
apiKey:
|
|
1376
|
+
type: 'string'
|
|
1377
|
+
writeOnly: true
|
|
1378
|
+
modelName:
|
|
1379
|
+
type: 'string'
|
|
1380
|
+
required:
|
|
1381
|
+
- 'type'
|
|
1382
|
+
- 'apiKey'
|
|
1383
|
+
- 'modelName'
|
|
1384
|
+
AnthropicAwsBedrockConfig:
|
|
1385
|
+
type: 'object'
|
|
1386
|
+
properties:
|
|
1387
|
+
type:
|
|
1388
|
+
type: 'string'
|
|
1389
|
+
enum: ['ANTHROPIC_AWS_BEDROCK']
|
|
1390
|
+
region:
|
|
1391
|
+
type: 'string'
|
|
1392
|
+
accessKeyId:
|
|
1393
|
+
type: 'string'
|
|
1394
|
+
writeOnly: true
|
|
1395
|
+
secretAccessKey:
|
|
1396
|
+
type: 'string'
|
|
1397
|
+
writeOnly: true
|
|
1398
|
+
modelName:
|
|
1399
|
+
type: 'string'
|
|
1400
|
+
required:
|
|
1401
|
+
- 'type'
|
|
1402
|
+
- 'modelName'
|
|
1403
|
+
GoogleGenerativeAiConfig:
|
|
1404
|
+
type: 'object'
|
|
1405
|
+
properties:
|
|
1406
|
+
type:
|
|
1407
|
+
type: 'string'
|
|
1408
|
+
enum: ['GOOGLE_GEMINI']
|
|
1409
|
+
apiKey:
|
|
1410
|
+
type: 'string'
|
|
1411
|
+
writeOnly: true
|
|
1412
|
+
modelName:
|
|
1413
|
+
type: 'string'
|
|
1414
|
+
required:
|
|
1415
|
+
- 'type'
|
|
1416
|
+
- 'apiKey'
|
|
1417
|
+
- 'modelName'
|
|
1418
|
+
GoogleVertexConfig:
|
|
1419
|
+
type: 'object'
|
|
1420
|
+
properties:
|
|
1421
|
+
type:
|
|
1422
|
+
type: 'string'
|
|
1423
|
+
enum: ['GOOGLE_VERTEX']
|
|
1424
|
+
modelName:
|
|
1425
|
+
type: 'string'
|
|
1426
|
+
project:
|
|
1427
|
+
type: 'string'
|
|
1428
|
+
location:
|
|
1429
|
+
type: 'string'
|
|
1430
|
+
baseURL:
|
|
1431
|
+
type: 'string'
|
|
1432
|
+
required:
|
|
1433
|
+
- 'type'
|
|
1434
|
+
- 'modelName'
|
|
1435
|
+
OpenAiConfig:
|
|
1436
|
+
type: 'object'
|
|
1437
|
+
properties:
|
|
1438
|
+
type:
|
|
1439
|
+
type: 'string'
|
|
1440
|
+
enum: ['OPENAI']
|
|
1441
|
+
apiKey:
|
|
1442
|
+
type: 'string'
|
|
1443
|
+
writeOnly: true
|
|
1444
|
+
modelName:
|
|
1445
|
+
type: 'string'
|
|
1446
|
+
required:
|
|
1447
|
+
- 'type'
|
|
1448
|
+
- 'apiKey'
|
|
1449
|
+
- 'modelName'
|
|
1450
|
+
DonobuAgent:
|
|
1451
|
+
type: 'string'
|
|
1452
|
+
enum:
|
|
1453
|
+
- 'flow-runner'
|
|
1454
|
+
ToolDefinition:
|
|
1455
|
+
type: 'object'
|
|
1456
|
+
description: 'Defines an available tool.'
|
|
1457
|
+
properties:
|
|
1458
|
+
name:
|
|
1459
|
+
type: 'string'
|
|
1460
|
+
description: 'The unique name of the tool.'
|
|
1461
|
+
description:
|
|
1462
|
+
type: 'string'
|
|
1463
|
+
description: 'A description of what the tool does and when to use it.'
|
|
1464
|
+
inputSchema:
|
|
1465
|
+
type: 'object'
|
|
1466
|
+
description: 'A JSON Schema defining the input parameters for the tool.'
|
|
1467
|
+
additionalProperties: true
|
|
1468
|
+
requiresGpt:
|
|
1469
|
+
type: 'boolean'
|
|
1470
|
+
description: 'Whether this tool requires a configured GPT client to function.'
|
|
1471
|
+
ErrorResponse:
|
|
1472
|
+
type: 'object'
|
|
1473
|
+
description: 'A standardized error response.'
|
|
1474
|
+
properties:
|
|
1475
|
+
code:
|
|
1476
|
+
type: 'string'
|
|
1477
|
+
description: 'A machine-readable error code.'
|
|
1478
|
+
message:
|
|
1479
|
+
type: 'string'
|
|
1480
|
+
description: 'A human-readable description of the error.'
|
|
1481
|
+
required:
|
|
1482
|
+
- 'code'
|
|
1483
|
+
- 'message'
|