@hailer/mcp 0.0.1
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/.claude/commands/tool-builder.md +37 -0
- package/.claude/commands/ws-pull.md +44 -0
- package/.claude/settings.json +8 -0
- package/.claude/settings.local.json +49 -0
- package/.claude/skills/activity-api/SKILL.md +96 -0
- package/.claude/skills/activity-api/references/activity-endpoints.md +845 -0
- package/.claude/skills/add-app-member-skill/SKILL.md +977 -0
- package/.claude/skills/agent-building/SKILL.md +243 -0
- package/.claude/skills/agent-building/references/architecture-patterns.md +446 -0
- package/.claude/skills/agent-building/references/code-examples.md +587 -0
- package/.claude/skills/agent-building/references/implementation-guide.md +619 -0
- package/.claude/skills/app-api/SKILL.md +219 -0
- package/.claude/skills/app-api/references/app-endpoints.md +759 -0
- package/.claude/skills/building-hailer-apps-skill/SKILL.md +548 -0
- package/.claude/skills/create-app-skill/SKILL.md +1101 -0
- package/.claude/skills/create-insight-skill/SKILL.md +1317 -0
- package/.claude/skills/get-insight-data-skill/SKILL.md +1053 -0
- package/.claude/skills/hailer-api/SKILL.md +283 -0
- package/.claude/skills/hailer-api/references/activities.md +620 -0
- package/.claude/skills/hailer-api/references/authentication.md +216 -0
- package/.claude/skills/hailer-api/references/datasets.md +437 -0
- package/.claude/skills/hailer-api/references/files.md +301 -0
- package/.claude/skills/hailer-api/references/insights.md +469 -0
- package/.claude/skills/hailer-api/references/workflows.md +720 -0
- package/.claude/skills/hailer-api/references/workspaces-users.md +445 -0
- package/.claude/skills/insight-api/SKILL.md +185 -0
- package/.claude/skills/insight-api/references/insight-endpoints.md +514 -0
- package/.claude/skills/install-workflow-skill/SKILL.md +1056 -0
- package/.claude/skills/list-apps-skill/SKILL.md +1010 -0
- package/.claude/skills/list-workflows-minimal-skill/SKILL.md +992 -0
- package/.claude/skills/local-first-skill/SKILL.md +570 -0
- package/.claude/skills/mcp-tools/SKILL.md +419 -0
- package/.claude/skills/mcp-tools/references/api-endpoints.md +499 -0
- package/.claude/skills/mcp-tools/references/data-structures.md +554 -0
- package/.claude/skills/mcp-tools/references/implementation-patterns.md +717 -0
- package/.claude/skills/preview-insight-skill/SKILL.md +1290 -0
- package/.claude/skills/publish-hailer-app-skill/SKILL.md +453 -0
- package/.claude/skills/remove-app-member-skill/SKILL.md +671 -0
- package/.claude/skills/remove-app-skill/SKILL.md +985 -0
- package/.claude/skills/remove-insight-skill/SKILL.md +1011 -0
- package/.claude/skills/remove-workflow-skill/SKILL.md +920 -0
- package/.claude/skills/scaffold-hailer-app-skill/SKILL.md +1034 -0
- package/.claude/skills/skill-testing/README.md +137 -0
- package/.claude/skills/skill-testing/SKILL.md +348 -0
- package/.claude/skills/skill-testing/references/test-patterns.md +705 -0
- package/.claude/skills/skill-testing/references/testing-guide.md +603 -0
- package/.claude/skills/skill-testing/references/validation-checklist.md +537 -0
- package/.claude/skills/tool-builder/SKILL.md +328 -0
- package/.claude/skills/update-app-skill/SKILL.md +970 -0
- package/.claude/skills/update-workflow-field-skill/SKILL.md +1098 -0
- package/.env.example +81 -0
- package/.mcp.json +13 -0
- package/README.md +297 -0
- package/dist/app.d.ts +4 -0
- package/dist/app.js +74 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.js +5 -0
- package/dist/client/adaptive-documentation-bot.d.ts +108 -0
- package/dist/client/adaptive-documentation-bot.js +475 -0
- package/dist/client/adaptive-documentation-types.d.ts +66 -0
- package/dist/client/adaptive-documentation-types.js +9 -0
- package/dist/client/agent-activity-bot.d.ts +51 -0
- package/dist/client/agent-activity-bot.js +166 -0
- package/dist/client/agent-tracker.d.ts +499 -0
- package/dist/client/agent-tracker.js +659 -0
- package/dist/client/description-updater.d.ts +56 -0
- package/dist/client/description-updater.js +259 -0
- package/dist/client/log-parser.d.ts +72 -0
- package/dist/client/log-parser.js +387 -0
- package/dist/client/mcp-client.d.ts +50 -0
- package/dist/client/mcp-client.js +532 -0
- package/dist/client/message-processor.d.ts +35 -0
- package/dist/client/message-processor.js +352 -0
- package/dist/client/multi-bot-manager.d.ts +24 -0
- package/dist/client/multi-bot-manager.js +74 -0
- package/dist/client/providers/anthropic-provider.d.ts +19 -0
- package/dist/client/providers/anthropic-provider.js +631 -0
- package/dist/client/providers/llm-provider.d.ts +47 -0
- package/dist/client/providers/llm-provider.js +367 -0
- package/dist/client/providers/openai-provider.d.ts +23 -0
- package/dist/client/providers/openai-provider.js +621 -0
- package/dist/client/simple-llm-caller.d.ts +19 -0
- package/dist/client/simple-llm-caller.js +100 -0
- package/dist/client/skill-generator.d.ts +81 -0
- package/dist/client/skill-generator.js +386 -0
- package/dist/client/test-adaptive-bot.d.ts +9 -0
- package/dist/client/test-adaptive-bot.js +82 -0
- package/dist/client/token-pricing.d.ts +38 -0
- package/dist/client/token-pricing.js +127 -0
- package/dist/client/token-tracker.d.ts +232 -0
- package/dist/client/token-tracker.js +457 -0
- package/dist/client/token-usage-bot.d.ts +53 -0
- package/dist/client/token-usage-bot.js +153 -0
- package/dist/client/tool-executor.d.ts +69 -0
- package/dist/client/tool-executor.js +159 -0
- package/dist/client/tool-schema-loader.d.ts +60 -0
- package/dist/client/tool-schema-loader.js +178 -0
- package/dist/client/types.d.ts +69 -0
- package/dist/client/types.js +7 -0
- package/dist/config.d.ts +162 -0
- package/dist/config.js +296 -0
- package/dist/core.d.ts +26 -0
- package/dist/core.js +147 -0
- package/dist/lib/context-manager.d.ts +111 -0
- package/dist/lib/context-manager.js +431 -0
- package/dist/lib/logger.d.ts +74 -0
- package/dist/lib/logger.js +277 -0
- package/dist/lib/materialize.d.ts +3 -0
- package/dist/lib/materialize.js +101 -0
- package/dist/lib/normalizedName.d.ts +7 -0
- package/dist/lib/normalizedName.js +48 -0
- package/dist/lib/prompt-length-manager.d.ts +81 -0
- package/dist/lib/prompt-length-manager.js +457 -0
- package/dist/lib/terminal-prompt.d.ts +9 -0
- package/dist/lib/terminal-prompt.js +108 -0
- package/dist/mcp/UserContextCache.d.ts +56 -0
- package/dist/mcp/UserContextCache.js +163 -0
- package/dist/mcp/auth.d.ts +2 -0
- package/dist/mcp/auth.js +29 -0
- package/dist/mcp/hailer-clients.d.ts +42 -0
- package/dist/mcp/hailer-clients.js +246 -0
- package/dist/mcp/signal-handler.d.ts +45 -0
- package/dist/mcp/signal-handler.js +317 -0
- package/dist/mcp/tool-registry.d.ts +100 -0
- package/dist/mcp/tool-registry.js +306 -0
- package/dist/mcp/tools/activity.d.ts +15 -0
- package/dist/mcp/tools/activity.js +955 -0
- package/dist/mcp/tools/app.d.ts +20 -0
- package/dist/mcp/tools/app.js +1488 -0
- package/dist/mcp/tools/discussion.d.ts +19 -0
- package/dist/mcp/tools/discussion.js +950 -0
- package/dist/mcp/tools/file.d.ts +15 -0
- package/dist/mcp/tools/file.js +119 -0
- package/dist/mcp/tools/insight.d.ts +17 -0
- package/dist/mcp/tools/insight.js +806 -0
- package/dist/mcp/tools/skill.d.ts +10 -0
- package/dist/mcp/tools/skill.js +279 -0
- package/dist/mcp/tools/user.d.ts +10 -0
- package/dist/mcp/tools/user.js +108 -0
- package/dist/mcp/tools/workflow-template.d.ts +19 -0
- package/dist/mcp/tools/workflow-template.js +822 -0
- package/dist/mcp/tools/workflow.d.ts +18 -0
- package/dist/mcp/tools/workflow.js +1362 -0
- package/dist/mcp/utils/api-errors.d.ts +45 -0
- package/dist/mcp/utils/api-errors.js +160 -0
- package/dist/mcp/utils/data-transformers.d.ts +102 -0
- package/dist/mcp/utils/data-transformers.js +194 -0
- package/dist/mcp/utils/file-upload.d.ts +33 -0
- package/dist/mcp/utils/file-upload.js +148 -0
- package/dist/mcp/utils/hailer-api-client.d.ts +120 -0
- package/dist/mcp/utils/hailer-api-client.js +323 -0
- package/dist/mcp/utils/index.d.ts +13 -0
- package/dist/mcp/utils/index.js +39 -0
- package/dist/mcp/utils/logger.d.ts +42 -0
- package/dist/mcp/utils/logger.js +103 -0
- package/dist/mcp/utils/types.d.ts +286 -0
- package/dist/mcp/utils/types.js +7 -0
- package/dist/mcp/workspace-cache.d.ts +42 -0
- package/dist/mcp/workspace-cache.js +97 -0
- package/dist/mcp-server.d.ts +42 -0
- package/dist/mcp-server.js +280 -0
- package/package.json +56 -0
- package/tsconfig.json +23 -0
|
@@ -0,0 +1,514 @@
|
|
|
1
|
+
# Insight API Endpoints Reference
|
|
2
|
+
|
|
3
|
+
Complete reference for Hailer Insight API endpoints. Insights provide SQL-like reporting over workflow/activity data.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [v3.insight.create](#v3insightcreate) - Create new insight
|
|
8
|
+
- [v3.insight.update](#v3insightupdate) - Update existing insight
|
|
9
|
+
- [v3.insight.copy](#v3insightcopy) - Copy/duplicate an insight
|
|
10
|
+
- [v3.insight.remove](#v3insightremove) - Delete an insight
|
|
11
|
+
- [v3.insight.list](#v3insightlist) - List all insights
|
|
12
|
+
- [v3.insight.public](#v3insightpublic) - Get public insight data
|
|
13
|
+
- [v3.insight.data](#v3insightdata) - Execute insight query and get results
|
|
14
|
+
- [v3.insight.preview](#v3insightpreview) - Preview insight during design
|
|
15
|
+
- [v3.insight.member.add](#v3insightmemberadd) - Add member permissions
|
|
16
|
+
- [v3.insight.member.remove](#v3insightmemberremove) - Remove member permissions
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Prerequisites
|
|
21
|
+
|
|
22
|
+
Before using Insights:
|
|
23
|
+
1. Must have workflows created with activities
|
|
24
|
+
2. Understand workflow schema (field IDs, field types)
|
|
25
|
+
3. Basic SQL knowledge (SELECT, JOIN, WHERE, etc.)
|
|
26
|
+
4. Use `v3.insight.preview` while designing to test queries
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## v3.insight.create
|
|
31
|
+
|
|
32
|
+
Create new Insight with SQL query over workflow data.
|
|
33
|
+
|
|
34
|
+
**Endpoint**: `POST /v3/insight/create`
|
|
35
|
+
|
|
36
|
+
**Request Body**:
|
|
37
|
+
```json
|
|
38
|
+
{
|
|
39
|
+
"0": "stringstringstringstring", // workspaceId
|
|
40
|
+
"1": {
|
|
41
|
+
"name": "string",
|
|
42
|
+
"public": false,
|
|
43
|
+
"sources": [
|
|
44
|
+
{
|
|
45
|
+
"name": "tableName", // SQL table alias
|
|
46
|
+
"workflowId": "workflowId", // Which workflow to query
|
|
47
|
+
"fields": [
|
|
48
|
+
{ "name": "columnName", "meta": "name" }, // Activity name
|
|
49
|
+
{ "name": "columnName", "fieldId": "fieldId" } // Custom field
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"query": "SELECT columnName FROM tableName" // SQL query
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Example 1 - Single Workflow**:
|
|
59
|
+
```javascript
|
|
60
|
+
v3.insight.create(
|
|
61
|
+
workspaceId,
|
|
62
|
+
{
|
|
63
|
+
name: 'Book Insights',
|
|
64
|
+
sources: [{
|
|
65
|
+
name: 'books',
|
|
66
|
+
workflowId: bookWorkflowId,
|
|
67
|
+
fields: [
|
|
68
|
+
{ name: 'title', meta: 'name' }, // Activity name
|
|
69
|
+
{ name: 'publishDate', fieldId: fieldId } // Custom field
|
|
70
|
+
]
|
|
71
|
+
}],
|
|
72
|
+
query: 'SELECT title, publishDate FROM books',
|
|
73
|
+
}
|
|
74
|
+
)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Example 2 - Join Two Workflows**:
|
|
78
|
+
```javascript
|
|
79
|
+
v3.insight.create(
|
|
80
|
+
workspaceId,
|
|
81
|
+
{
|
|
82
|
+
name: 'Books with Authors',
|
|
83
|
+
sources: [
|
|
84
|
+
{
|
|
85
|
+
name: 'books',
|
|
86
|
+
workflowId: bookWorkflowId,
|
|
87
|
+
fields: [
|
|
88
|
+
{ name: 'title', meta: 'name' },
|
|
89
|
+
{ name: 'author', fieldId: authorLinkFieldId }
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: 'authors',
|
|
94
|
+
workflowId: authorWorkflowId,
|
|
95
|
+
fields: [
|
|
96
|
+
{ name: 'id', meta: '_id' }, // Activity ID
|
|
97
|
+
{ name: 'authorName', meta: 'name' }, // Activity Name
|
|
98
|
+
{ name: 'born', fieldId: bornFieldId }
|
|
99
|
+
]
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
query: `
|
|
103
|
+
SELECT title, publishDate, authorName
|
|
104
|
+
FROM authors
|
|
105
|
+
LEFT JOIN books ON books.author = authors.id
|
|
106
|
+
`
|
|
107
|
+
}
|
|
108
|
+
)
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Meta Fields** (built-in activity properties):
|
|
112
|
+
- `meta: 'name'` - Activity name
|
|
113
|
+
- `meta: '_id'` - Activity ID
|
|
114
|
+
- `meta: 'created'` - Creation timestamp
|
|
115
|
+
- `meta: 'updated'` - Last update timestamp
|
|
116
|
+
- `meta: 'phase'` - Current phase ID
|
|
117
|
+
- `meta: 'team'` - Owner team ID
|
|
118
|
+
|
|
119
|
+
**Response**:
|
|
120
|
+
```json
|
|
121
|
+
{
|
|
122
|
+
"code": 0,
|
|
123
|
+
"msg": "string",
|
|
124
|
+
"details": {
|
|
125
|
+
"insightId": "stringstringstringstring"
|
|
126
|
+
},
|
|
127
|
+
"debug": null
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## v3.insight.update
|
|
134
|
+
|
|
135
|
+
Update an existing insight (name, query, sources, permissions, etc.).
|
|
136
|
+
|
|
137
|
+
**Endpoint**: `POST /v3/insight/update`
|
|
138
|
+
|
|
139
|
+
**Request Body**:
|
|
140
|
+
```json
|
|
141
|
+
{
|
|
142
|
+
"0": "stringstringstringstring", // insightId
|
|
143
|
+
"1": {
|
|
144
|
+
"name": "string",
|
|
145
|
+
"public": true,
|
|
146
|
+
"sources": [],
|
|
147
|
+
"query": "string",
|
|
148
|
+
"presets": []
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**Note**: Only workspace admins can modify `sources`. Regular users with edit permission can only update `name`, `query`, and `presets` if sources remain unchanged.
|
|
154
|
+
|
|
155
|
+
**Response**:
|
|
156
|
+
```json
|
|
157
|
+
{
|
|
158
|
+
"code": 0,
|
|
159
|
+
"msg": "string",
|
|
160
|
+
"details": {},
|
|
161
|
+
"debug": null
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## v3.insight.copy
|
|
168
|
+
|
|
169
|
+
Duplicate an existing insight.
|
|
170
|
+
|
|
171
|
+
**Endpoint**: `POST /v3/insight/copy`
|
|
172
|
+
|
|
173
|
+
**Request Body**:
|
|
174
|
+
```json
|
|
175
|
+
{
|
|
176
|
+
"0": "stringstringstringstring", // insightId to copy
|
|
177
|
+
"1": {
|
|
178
|
+
"name": "Copy of Original Insight"
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
**Response**:
|
|
184
|
+
```json
|
|
185
|
+
{
|
|
186
|
+
"code": 0,
|
|
187
|
+
"msg": "string",
|
|
188
|
+
"details": {
|
|
189
|
+
"insightId": "stringstringstringstring" // New insight ID
|
|
190
|
+
},
|
|
191
|
+
"debug": null
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## v3.insight.remove
|
|
198
|
+
|
|
199
|
+
Delete an insight.
|
|
200
|
+
|
|
201
|
+
**Endpoint**: `POST /v3/insight/remove`
|
|
202
|
+
|
|
203
|
+
**Request Body**:
|
|
204
|
+
```json
|
|
205
|
+
{
|
|
206
|
+
"0": "stringstringstringstring" // insightId
|
|
207
|
+
}
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
**Response**:
|
|
211
|
+
```json
|
|
212
|
+
{
|
|
213
|
+
"code": 0,
|
|
214
|
+
"msg": "string",
|
|
215
|
+
"details": {},
|
|
216
|
+
"debug": null
|
|
217
|
+
}
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## v3.insight.list
|
|
223
|
+
|
|
224
|
+
List all insights in a workspace that the user has access to.
|
|
225
|
+
|
|
226
|
+
**Endpoint**: `POST /v3/insight/list`
|
|
227
|
+
|
|
228
|
+
**Request Body**:
|
|
229
|
+
```json
|
|
230
|
+
{
|
|
231
|
+
"0": "stringstringstringstring" // workspaceId
|
|
232
|
+
}
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
**Response**:
|
|
236
|
+
```json
|
|
237
|
+
{
|
|
238
|
+
"code": 0,
|
|
239
|
+
"msg": "string",
|
|
240
|
+
"details": {
|
|
241
|
+
"insights": [
|
|
242
|
+
{
|
|
243
|
+
"_id": "stringstringstringstring",
|
|
244
|
+
"name": "Insight Name",
|
|
245
|
+
"public": false,
|
|
246
|
+
"sources": [],
|
|
247
|
+
"query": "SELECT ...",
|
|
248
|
+
"created": 1234567890,
|
|
249
|
+
"updated": 1234567890
|
|
250
|
+
}
|
|
251
|
+
]
|
|
252
|
+
},
|
|
253
|
+
"debug": null
|
|
254
|
+
}
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## v3.insight.public
|
|
260
|
+
|
|
261
|
+
Get public data for a publicly shared insight (no authentication required).
|
|
262
|
+
|
|
263
|
+
**Endpoint**: `POST /v3/insight/public`
|
|
264
|
+
|
|
265
|
+
**Request Body**:
|
|
266
|
+
```json
|
|
267
|
+
{
|
|
268
|
+
"0": "string" // insightKey (max 32 chars)
|
|
269
|
+
}
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
**Response**:
|
|
273
|
+
```json
|
|
274
|
+
{
|
|
275
|
+
"code": 0,
|
|
276
|
+
"msg": "string",
|
|
277
|
+
"details": {
|
|
278
|
+
"insight": {},
|
|
279
|
+
"data": []
|
|
280
|
+
},
|
|
281
|
+
"debug": null
|
|
282
|
+
}
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## v3.insight.data
|
|
288
|
+
|
|
289
|
+
Execute the insight query and get results (actual data).
|
|
290
|
+
|
|
291
|
+
**Endpoint**: `POST /v3/insight/data`
|
|
292
|
+
|
|
293
|
+
**Request Body**:
|
|
294
|
+
```json
|
|
295
|
+
{
|
|
296
|
+
"0": "stringstringstringstring", // insightId
|
|
297
|
+
"1": {
|
|
298
|
+
"update": true // Whether to refresh/recalculate data
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
**Response**:
|
|
304
|
+
```json
|
|
305
|
+
{
|
|
306
|
+
"code": 0,
|
|
307
|
+
"msg": "string",
|
|
308
|
+
"details": {
|
|
309
|
+
"columns": ["title", "publishDate", "authorName"],
|
|
310
|
+
"rows": [
|
|
311
|
+
["Book 1", "2024-01-01", "Author A"],
|
|
312
|
+
["Book 2", "2024-02-01", "Author B"]
|
|
313
|
+
]
|
|
314
|
+
},
|
|
315
|
+
"debug": null
|
|
316
|
+
}
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
## v3.insight.preview
|
|
322
|
+
|
|
323
|
+
Preview partial insight during design. Used for testing SQL queries before saving.
|
|
324
|
+
|
|
325
|
+
**Key Features**:
|
|
326
|
+
- Can be called frequently during design
|
|
327
|
+
- Returns errors if SQL is invalid
|
|
328
|
+
- Limited to ~20 activities for performance
|
|
329
|
+
- Workspace admins can modify sources
|
|
330
|
+
- Regular users cannot change sources (security)
|
|
331
|
+
|
|
332
|
+
**Endpoint**: `POST /v3/insight/preview`
|
|
333
|
+
|
|
334
|
+
**Request Body**:
|
|
335
|
+
```json
|
|
336
|
+
{
|
|
337
|
+
"0": "stringstringstringstring", // workspaceId
|
|
338
|
+
"1": {
|
|
339
|
+
"query": "SELECT title FROM books WHERE publishDate > '2024-01-01'",
|
|
340
|
+
"sources": [
|
|
341
|
+
{
|
|
342
|
+
"name": "books",
|
|
343
|
+
"workflowId": "workflowId",
|
|
344
|
+
"fields": [
|
|
345
|
+
{ "name": "title", "meta": "name" },
|
|
346
|
+
{ "name": "publishDate", "fieldId": "fieldId" }
|
|
347
|
+
]
|
|
348
|
+
}
|
|
349
|
+
]
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
**Response** (success):
|
|
355
|
+
```json
|
|
356
|
+
{
|
|
357
|
+
"code": 0,
|
|
358
|
+
"msg": "string",
|
|
359
|
+
"details": {
|
|
360
|
+
"columns": ["title"],
|
|
361
|
+
"rows": [
|
|
362
|
+
["Book 1"],
|
|
363
|
+
["Book 2"]
|
|
364
|
+
],
|
|
365
|
+
"limited": true // Indicates data was limited for preview
|
|
366
|
+
},
|
|
367
|
+
"debug": null
|
|
368
|
+
}
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
**Response** (error):
|
|
372
|
+
```json
|
|
373
|
+
{
|
|
374
|
+
"code": 403,
|
|
375
|
+
"msg": "SQL syntax error near 'SELEC'",
|
|
376
|
+
"details": {},
|
|
377
|
+
"debug": null
|
|
378
|
+
}
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
|
|
383
|
+
## v3.insight.member.add
|
|
384
|
+
|
|
385
|
+
Add member permissions to an insight (user, team, workspace, or group).
|
|
386
|
+
|
|
387
|
+
**Endpoint**: `POST /v3/insight.member.add`
|
|
388
|
+
|
|
389
|
+
**Request Body**:
|
|
390
|
+
```json
|
|
391
|
+
{
|
|
392
|
+
"0": "stringstringstringstring", // insightId
|
|
393
|
+
"1": "network_<networkId>" // OR: team_<teamId>, user_<userId>, group_<groupId>
|
|
394
|
+
}
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
**Member Format**:
|
|
398
|
+
- Workspace: `network_<networkId>`
|
|
399
|
+
- Team: `team_<teamId>`
|
|
400
|
+
- User: `user_<userId>`
|
|
401
|
+
- Group: `group_<groupId>`
|
|
402
|
+
|
|
403
|
+
**Response**:
|
|
404
|
+
```json
|
|
405
|
+
{
|
|
406
|
+
"code": 0,
|
|
407
|
+
"msg": "string",
|
|
408
|
+
"details": {},
|
|
409
|
+
"debug": null
|
|
410
|
+
}
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
---
|
|
414
|
+
|
|
415
|
+
## v3.insight.member.remove
|
|
416
|
+
|
|
417
|
+
Remove member permissions from an insight.
|
|
418
|
+
|
|
419
|
+
**Endpoint**: `POST /v3/insight.member.remove`
|
|
420
|
+
|
|
421
|
+
**Request Body**:
|
|
422
|
+
```json
|
|
423
|
+
{
|
|
424
|
+
"0": "stringstringstringstring", // insightId
|
|
425
|
+
"1": "user_<userId>" // OR: network_<networkId>, team_<teamId>, group_<groupId>
|
|
426
|
+
}
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
**Response**:
|
|
430
|
+
```json
|
|
431
|
+
{
|
|
432
|
+
"code": 0,
|
|
433
|
+
"msg": "string",
|
|
434
|
+
"details": {},
|
|
435
|
+
"debug": null
|
|
436
|
+
}
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
---
|
|
440
|
+
|
|
441
|
+
## SQL Query Guidelines
|
|
442
|
+
|
|
443
|
+
### Supported SQL Features
|
|
444
|
+
- SELECT with column names or * (all)
|
|
445
|
+
- FROM with table aliases (source names)
|
|
446
|
+
- WHERE clauses with AND/OR
|
|
447
|
+
- JOIN (INNER, LEFT, RIGHT, FULL)
|
|
448
|
+
- GROUP BY with aggregations
|
|
449
|
+
- ORDER BY with ASC/DESC
|
|
450
|
+
- LIMIT and OFFSET
|
|
451
|
+
|
|
452
|
+
### Common Patterns
|
|
453
|
+
|
|
454
|
+
**Filter by phase**:
|
|
455
|
+
```sql
|
|
456
|
+
SELECT title FROM books WHERE phase = 'phaseId'
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
**Count activities**:
|
|
460
|
+
```sql
|
|
461
|
+
SELECT COUNT(*) as total FROM books
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
**Group and aggregate**:
|
|
465
|
+
```sql
|
|
466
|
+
SELECT author, COUNT(*) as bookCount
|
|
467
|
+
FROM books
|
|
468
|
+
GROUP BY author
|
|
469
|
+
ORDER BY bookCount DESC
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
**Join workflows**:
|
|
473
|
+
```sql
|
|
474
|
+
SELECT b.title, a.name as authorName
|
|
475
|
+
FROM books b
|
|
476
|
+
LEFT JOIN authors a ON b.authorId = a.id
|
|
477
|
+
WHERE b.publishDate > '2024-01-01'
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
---
|
|
481
|
+
|
|
482
|
+
## Common Response Format
|
|
483
|
+
|
|
484
|
+
All endpoints return this format:
|
|
485
|
+
|
|
486
|
+
```json
|
|
487
|
+
{
|
|
488
|
+
"code": 0, // 0 = success, 403 = error
|
|
489
|
+
"msg": "string", // Success/error message
|
|
490
|
+
"details": {}, // Response data
|
|
491
|
+
"debug": null // Optional debug info
|
|
492
|
+
}
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
---
|
|
496
|
+
|
|
497
|
+
## Permissions
|
|
498
|
+
|
|
499
|
+
**Workspace Admins**:
|
|
500
|
+
- Create, update, delete insights
|
|
501
|
+
- Modify insight sources
|
|
502
|
+
- Share insights (make public)
|
|
503
|
+
- Manage all insight permissions
|
|
504
|
+
|
|
505
|
+
**Regular Users**:
|
|
506
|
+
- View insights they have access to
|
|
507
|
+
- Edit insights (name, query) if given permission
|
|
508
|
+
- Cannot modify sources (security restriction)
|
|
509
|
+
- Cannot change permissions
|
|
510
|
+
|
|
511
|
+
**Public Insights**:
|
|
512
|
+
- Accessible without authentication via `insightKey`
|
|
513
|
+
- Read-only access
|
|
514
|
+
- Good for public dashboards/reports
|