@exayard/sdk 0.3.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/LICENSE +21 -0
- package/README.md +139 -0
- package/dist/_generated/operations.d.ts +8467 -0
- package/dist/_generated/operations.d.ts.map +1 -0
- package/dist/_generated/operations.js +2489 -0
- package/dist/client.d.ts +554 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +404 -0
- package/dist/error.d.ts +76 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +152 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +62 -0
- package/dist/listeners.d.ts +106 -0
- package/dist/listeners.d.ts.map +1 -0
- package/dist/listeners.js +214 -0
- package/dist/options.d.ts +41 -0
- package/dist/options.d.ts.map +1 -0
- package/dist/options.js +11 -0
- package/dist/retry.d.ts +24 -0
- package/dist/retry.d.ts.map +1 -0
- package/dist/retry.js +63 -0
- package/dist/webhooks.d.ts +59 -0
- package/dist/webhooks.d.ts.map +1 -0
- package/dist/webhooks.js +149 -0
- package/package.json +51 -0
|
@@ -0,0 +1,2489 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Generated from apps/api/openapi.json by packages/sdk/scripts/generate.mts. Do not edit.
|
|
3
|
+
// Regenerate: yarn workspace @exayard/sdk regen (runs cd apps/api && npx tsx scripts/emit-openapi.ts)
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.OPERATION_METHODS = exports.OPERATIONS = void 0;
|
|
6
|
+
/** Every API operation by its name (the spec's operationId, also its MCP tool name). */
|
|
7
|
+
exports.OPERATIONS = {
|
|
8
|
+
add_symbol_line_item: {
|
|
9
|
+
method: 'POST',
|
|
10
|
+
path: '/symbols/{id}/line-items',
|
|
11
|
+
tag: 'Takeoff',
|
|
12
|
+
summary: 'Add a line item to a symbol',
|
|
13
|
+
body: true,
|
|
14
|
+
response: 'json',
|
|
15
|
+
params: [
|
|
16
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex takeoff symbol ID' },
|
|
17
|
+
{ name: 'projectId', in: 'body', required: true, kind: 'string', description: 'Convex project ID' },
|
|
18
|
+
{ name: 'lineItem', in: 'body', required: true, kind: 'object' }
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
archive_conversation: {
|
|
22
|
+
method: 'DELETE',
|
|
23
|
+
path: '/conversations/{id}',
|
|
24
|
+
tag: 'Conversations',
|
|
25
|
+
summary: 'Archive a conversation',
|
|
26
|
+
body: false,
|
|
27
|
+
response: 'empty',
|
|
28
|
+
params: [
|
|
29
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex conversation ID' },
|
|
30
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
archive_labor_crew: {
|
|
34
|
+
method: 'DELETE',
|
|
35
|
+
path: '/labor/crews/{id}',
|
|
36
|
+
tag: 'Labor',
|
|
37
|
+
summary: 'Archive a labor crew',
|
|
38
|
+
body: false,
|
|
39
|
+
response: 'empty',
|
|
40
|
+
params: [
|
|
41
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
42
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
archive_labor_equipment: {
|
|
46
|
+
method: 'DELETE',
|
|
47
|
+
path: '/labor/equipment/{id}',
|
|
48
|
+
tag: 'Labor',
|
|
49
|
+
summary: 'Archive a labor equipment entry',
|
|
50
|
+
body: false,
|
|
51
|
+
response: 'empty',
|
|
52
|
+
params: [
|
|
53
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
54
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
archive_labor_rate: {
|
|
58
|
+
method: 'DELETE',
|
|
59
|
+
path: '/labor/rates/{id}',
|
|
60
|
+
tag: 'Labor',
|
|
61
|
+
summary: 'Archive a labor rate',
|
|
62
|
+
body: false,
|
|
63
|
+
response: 'empty',
|
|
64
|
+
params: [
|
|
65
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
66
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
archive_list: {
|
|
70
|
+
method: 'DELETE',
|
|
71
|
+
path: '/lists/{id}',
|
|
72
|
+
tag: 'Lists',
|
|
73
|
+
summary: 'Archive (soft-delete) a list',
|
|
74
|
+
body: false,
|
|
75
|
+
response: 'empty',
|
|
76
|
+
params: [
|
|
77
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex product list ID' },
|
|
78
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
79
|
+
]
|
|
80
|
+
},
|
|
81
|
+
archive_page: {
|
|
82
|
+
method: 'DELETE',
|
|
83
|
+
path: '/pages/{id}',
|
|
84
|
+
tag: 'Pages',
|
|
85
|
+
summary: 'Archive (soft-delete) a page',
|
|
86
|
+
body: false,
|
|
87
|
+
response: 'empty',
|
|
88
|
+
params: [
|
|
89
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex page ID' }
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
archive_product: {
|
|
93
|
+
method: 'DELETE',
|
|
94
|
+
path: '/products/{id}',
|
|
95
|
+
tag: 'Products',
|
|
96
|
+
summary: 'Archive (soft-delete) a product',
|
|
97
|
+
body: false,
|
|
98
|
+
response: 'empty',
|
|
99
|
+
params: [
|
|
100
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex product ID' },
|
|
101
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
102
|
+
]
|
|
103
|
+
},
|
|
104
|
+
archive_project: {
|
|
105
|
+
method: 'DELETE',
|
|
106
|
+
path: '/projects/{id}',
|
|
107
|
+
tag: 'Projects',
|
|
108
|
+
summary: 'Archive a project',
|
|
109
|
+
body: false,
|
|
110
|
+
response: 'empty',
|
|
111
|
+
params: [
|
|
112
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
113
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
114
|
+
]
|
|
115
|
+
},
|
|
116
|
+
archive_vendor: {
|
|
117
|
+
method: 'DELETE',
|
|
118
|
+
path: '/vendors/{id}',
|
|
119
|
+
tag: 'Vendors',
|
|
120
|
+
summary: 'Archive (soft-delete) a vendor',
|
|
121
|
+
body: false,
|
|
122
|
+
response: 'empty',
|
|
123
|
+
params: [
|
|
124
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex vendor ID' },
|
|
125
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
126
|
+
]
|
|
127
|
+
},
|
|
128
|
+
attach_file_to_project: {
|
|
129
|
+
method: 'POST',
|
|
130
|
+
path: '/projects/{id}/files/{fileId}/attach',
|
|
131
|
+
tag: 'Files',
|
|
132
|
+
summary: 'Attach an existing file to a project',
|
|
133
|
+
body: true,
|
|
134
|
+
response: 'empty',
|
|
135
|
+
params: [
|
|
136
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
137
|
+
{ name: 'fileId', in: 'path', required: true, kind: 'string', description: 'Convex file ID' },
|
|
138
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
139
|
+
]
|
|
140
|
+
},
|
|
141
|
+
batch_create_products: {
|
|
142
|
+
method: 'POST',
|
|
143
|
+
path: '/products/batch',
|
|
144
|
+
tag: 'Products',
|
|
145
|
+
summary: 'Batch-create products',
|
|
146
|
+
body: true,
|
|
147
|
+
response: 'json',
|
|
148
|
+
params: [
|
|
149
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
150
|
+
{ name: 'listId', in: 'body', required: true, kind: 'string', description: 'Convex product list ID' },
|
|
151
|
+
{ name: 'products', in: 'body', required: true, kind: 'array' }
|
|
152
|
+
]
|
|
153
|
+
},
|
|
154
|
+
cancel_assessment: {
|
|
155
|
+
method: 'POST',
|
|
156
|
+
path: '/assessments/{id}/cancel',
|
|
157
|
+
tag: 'Takeoff',
|
|
158
|
+
summary: 'Cancel a running assessment',
|
|
159
|
+
body: true,
|
|
160
|
+
response: 'empty',
|
|
161
|
+
params: [
|
|
162
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex takeoff assessment ID' },
|
|
163
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
164
|
+
]
|
|
165
|
+
},
|
|
166
|
+
confirm_file_upload: {
|
|
167
|
+
method: 'POST',
|
|
168
|
+
path: '/files/{id}/confirm',
|
|
169
|
+
tag: 'Files',
|
|
170
|
+
summary: 'Confirm a file upload after the client PUT succeeds',
|
|
171
|
+
confirm: 'This operation uses AI usage.',
|
|
172
|
+
body: true,
|
|
173
|
+
response: 'json',
|
|
174
|
+
params: [
|
|
175
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex file ID' },
|
|
176
|
+
{ name: 'r2Key', in: 'body', required: true, kind: 'string' }
|
|
177
|
+
]
|
|
178
|
+
},
|
|
179
|
+
create_agent_session: {
|
|
180
|
+
method: 'POST',
|
|
181
|
+
path: '/ai-sessions',
|
|
182
|
+
tag: 'Account',
|
|
183
|
+
summary: 'Start a computer-use agent session on a project page',
|
|
184
|
+
confirm: 'This operation uses AI usage.',
|
|
185
|
+
body: true,
|
|
186
|
+
response: 'json',
|
|
187
|
+
params: [
|
|
188
|
+
{ name: 'projectId', in: 'body', required: true, kind: 'string', description: 'Convex project ID' },
|
|
189
|
+
{ name: 'pageId', in: 'body', required: true, kind: 'string', description: 'Convex page ID the agent will operate on.' },
|
|
190
|
+
{ name: 'vendor', in: 'body', required: true, kind: 'string', enum: ['claude', 'openai', 'gemini'] }
|
|
191
|
+
]
|
|
192
|
+
},
|
|
193
|
+
create_assessment: {
|
|
194
|
+
method: 'POST',
|
|
195
|
+
path: '/projects/{id}/assessments',
|
|
196
|
+
tag: 'Takeoff',
|
|
197
|
+
summary: 'Start a new AI assessment',
|
|
198
|
+
confirm: 'This operation uses AI usage.',
|
|
199
|
+
body: true,
|
|
200
|
+
response: 'json',
|
|
201
|
+
params: [
|
|
202
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
203
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
204
|
+
{ name: 'conversationId', in: 'body', required: false, kind: 'string' },
|
|
205
|
+
{ name: 'fileIds', in: 'body', required: false, kind: 'array' },
|
|
206
|
+
{ name: 'pageIds', in: 'body', required: false, kind: 'array' },
|
|
207
|
+
{ name: 'imageUrls', in: 'body', required: false, kind: 'array' },
|
|
208
|
+
{ name: 'types', in: 'body', required: false, kind: 'array' }
|
|
209
|
+
]
|
|
210
|
+
},
|
|
211
|
+
create_bid: {
|
|
212
|
+
method: 'POST',
|
|
213
|
+
path: '/projects/{id}/bids',
|
|
214
|
+
tag: 'Estimates',
|
|
215
|
+
summary: 'Generate a project-scoped bid document (blocking)',
|
|
216
|
+
confirm: 'This operation uses AI usage.',
|
|
217
|
+
body: true,
|
|
218
|
+
response: 'json',
|
|
219
|
+
params: [
|
|
220
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
221
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
222
|
+
{ name: 'notes', in: 'body', required: false, kind: 'string', description: 'Additional context appended to the prompt' },
|
|
223
|
+
{ name: 'measurementContext', in: 'body', required: false, kind: 'string', description: 'Pre-serialized takeoff measurements + line items (markdown). If omitted, the endpoint auto-loads the project takeoff from Convex and serializes it server-side.' },
|
|
224
|
+
{ name: 'ignoreMissingVariables', in: 'body', required: false, kind: 'boolean', description: 'When auto-loading takeoff data, skip line items with missing formula variables instead of failing with 422. Ignored if measurementContext is provided.' },
|
|
225
|
+
{ name: 'share', in: 'body', required: false, kind: 'boolean', description: 'Publish the saved bid on a public link that anyone holding the URL can read. Defaults to false — the document stays private to your organization and documentUrl points at the signed-in path. Set true only when the customer asked for a shareable link; you can also share or unshare later via PATCH /v1/documents/{id}/share.' }
|
|
226
|
+
]
|
|
227
|
+
},
|
|
228
|
+
create_conversation: {
|
|
229
|
+
method: 'POST',
|
|
230
|
+
path: '/conversations',
|
|
231
|
+
tag: 'Conversations',
|
|
232
|
+
summary: 'Create a conversation',
|
|
233
|
+
body: true,
|
|
234
|
+
response: 'json',
|
|
235
|
+
params: [
|
|
236
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
237
|
+
{ name: 'projectId', in: 'body', required: false, kind: 'string', description: 'Convex project ID' },
|
|
238
|
+
{ name: 'title', in: 'body', required: false, kind: 'string' },
|
|
239
|
+
{ name: 'type', in: 'body', required: false, kind: 'string', enum: ['ai_chat', 'project_activity'] },
|
|
240
|
+
{ name: 'model', in: 'body', required: false, kind: 'string' },
|
|
241
|
+
{ name: 'visibility', in: 'body', required: false, kind: 'string', enum: ['private', 'shared'] }
|
|
242
|
+
]
|
|
243
|
+
},
|
|
244
|
+
create_custom_property: {
|
|
245
|
+
method: 'POST',
|
|
246
|
+
path: '/custom-properties',
|
|
247
|
+
tag: 'Custom properties',
|
|
248
|
+
summary: 'Create a custom property',
|
|
249
|
+
body: true,
|
|
250
|
+
response: 'json',
|
|
251
|
+
params: [
|
|
252
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
253
|
+
{ name: 'name', in: 'body', required: true, kind: 'string' },
|
|
254
|
+
{ name: 'type', in: 'body', required: true, kind: 'string', enum: ['text', 'textarea', 'number', 'date', 'checkbox', 'multiCheckbox', 'select', 'url', 'email', 'phone', 'currency', 'percentage'] },
|
|
255
|
+
{ name: 'recordTypes', in: 'body', required: true, kind: 'array' },
|
|
256
|
+
{ name: 'options', in: 'body', required: false, kind: 'array' },
|
|
257
|
+
{ name: 'presetId', in: 'body', required: false, kind: 'string' }
|
|
258
|
+
]
|
|
259
|
+
},
|
|
260
|
+
create_estimate: {
|
|
261
|
+
method: 'POST',
|
|
262
|
+
path: '/projects/{id}/estimates',
|
|
263
|
+
tag: 'Estimates',
|
|
264
|
+
summary: 'Generate an estimate and persist it as a document (blocking)',
|
|
265
|
+
confirm: 'This operation uses AI usage.',
|
|
266
|
+
body: true,
|
|
267
|
+
response: 'json',
|
|
268
|
+
params: [
|
|
269
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
270
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
271
|
+
{ name: 'query', in: 'body', required: true, kind: 'string', description: 'Natural-language prompt describing the scope of the estimate' },
|
|
272
|
+
{ name: 'notes', in: 'body', required: false, kind: 'string', description: 'Additional notes appended to the prompt' },
|
|
273
|
+
{ name: 'measurementContext', in: 'body', required: false, kind: 'string', description: 'Pre-serialized takeoff data to ground the estimator (see GET /v1/projects/{id}/takeoff-summary)' },
|
|
274
|
+
{ name: 'share', in: 'body', required: false, kind: 'boolean', description: 'Publish the saved estimate on a public link that anyone holding the URL can read. Defaults to false — the document stays private to your organization and documentUrl points at the signed-in path. Set true only when the customer asked for a shareable link; you can also share or unshare later via PATCH /v1/documents/{id}/share.' }
|
|
275
|
+
]
|
|
276
|
+
},
|
|
277
|
+
create_folder: {
|
|
278
|
+
method: 'POST',
|
|
279
|
+
path: '/folders',
|
|
280
|
+
tag: 'Folders',
|
|
281
|
+
summary: 'Create a folder',
|
|
282
|
+
body: true,
|
|
283
|
+
response: 'json',
|
|
284
|
+
params: [
|
|
285
|
+
{ name: 'projectId', in: 'body', required: true, kind: 'string', description: 'Convex project ID' },
|
|
286
|
+
{ name: 'name', in: 'body', required: true, kind: 'string' },
|
|
287
|
+
{ name: 'parentId', in: 'body', required: true, kind: 'string', description: 'Convex folder ID' }
|
|
288
|
+
]
|
|
289
|
+
},
|
|
290
|
+
create_group: {
|
|
291
|
+
method: 'POST',
|
|
292
|
+
path: '/projects/{id}/groups',
|
|
293
|
+
tag: 'Takeoff',
|
|
294
|
+
summary: 'Create a takeoff group',
|
|
295
|
+
body: true,
|
|
296
|
+
response: 'json',
|
|
297
|
+
params: [
|
|
298
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
299
|
+
{ name: 'name', in: 'body', required: true, kind: 'string' },
|
|
300
|
+
{ name: 'parentId', in: 'body', required: false, kind: 'string', description: 'Convex takeoff group ID' }
|
|
301
|
+
]
|
|
302
|
+
},
|
|
303
|
+
create_labor_crew: {
|
|
304
|
+
method: 'POST',
|
|
305
|
+
path: '/labor/crews',
|
|
306
|
+
tag: 'Labor',
|
|
307
|
+
summary: 'Create a labor crew',
|
|
308
|
+
body: true,
|
|
309
|
+
response: 'json',
|
|
310
|
+
params: [
|
|
311
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
312
|
+
{ name: 'name', in: 'body', required: true, kind: 'string' },
|
|
313
|
+
{ name: 'description', in: 'body', required: false, kind: 'string' },
|
|
314
|
+
{ name: 'members', in: 'body', required: true, kind: 'array' },
|
|
315
|
+
{ name: 'equipmentIds', in: 'body', required: false, kind: 'array' },
|
|
316
|
+
{ name: 'dailyCapacity', in: 'body', required: false, kind: 'object' }
|
|
317
|
+
]
|
|
318
|
+
},
|
|
319
|
+
create_labor_equipment: {
|
|
320
|
+
method: 'POST',
|
|
321
|
+
path: '/labor/equipment',
|
|
322
|
+
tag: 'Labor',
|
|
323
|
+
summary: 'Create a labor equipment entry',
|
|
324
|
+
body: true,
|
|
325
|
+
response: 'json',
|
|
326
|
+
params: [
|
|
327
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
328
|
+
{ name: 'name', in: 'body', required: true, kind: 'string' },
|
|
329
|
+
{ name: 'description', in: 'body', required: false, kind: 'string' },
|
|
330
|
+
{ name: 'category', in: 'body', required: true, kind: 'string' },
|
|
331
|
+
{ name: 'dailyRate', in: 'body', required: true, kind: 'number' },
|
|
332
|
+
{ name: 'hourlyRate', in: 'body', required: false, kind: 'number' },
|
|
333
|
+
{ name: 'currency', in: 'body', required: false, kind: 'string', enum: ['USD', 'CAD', 'MXN', 'BRL', 'ARS', 'CLP', 'COP', 'PEN', 'UYU', 'PYG', 'BOB', 'VES', 'GYD', 'SRD', 'GTQ', 'HNL', 'NIO', 'CRC', 'PAB', 'BZD', 'JMD', 'HTG', 'DOP', 'CUP', 'BSD', 'BBD', 'TTD', 'XCD', 'AWG', 'ANG', 'KYD', 'BMD', 'FKP', 'EUR', 'GBP', 'CHF', 'NOK', 'SEK', 'DKK', 'PLN', 'CZK', 'HUF', 'RON', 'BGN', 'HRK', 'RSD', 'UAH', 'RUB', 'TRY', 'ISK', 'BAM', 'MKD', 'ALL', 'MDL', 'BYN', 'GEL', 'AMD', 'AZN', 'GIP', 'ILS', 'AED', 'SAR', 'QAR', 'KWD', 'BHD', 'OMR', 'JOD', 'LBP', 'EGP', 'IQD', 'IRR', 'SYP', 'YER', 'ZAR', 'NAD', 'LSL', 'SZL', 'BWP', 'NGN', 'KES', 'GHS', 'MAD', 'TND', 'DZD', 'LYD', 'ETB', 'ERN', 'DJF', 'SOS', 'SDG', 'SSP', 'UGX', 'TZS', 'RWF', 'BIF', 'MWK', 'ZMW', 'ZWG', 'MZN', 'AOA', 'CDF', 'MGA', 'MUR', 'SCR', 'KMF', 'CVE', 'GMD', 'GNF', 'LRD', 'SLE', 'MRU', 'STN', 'XOF', 'XAF', 'SHP', 'JPY', 'CNY', 'HKD', 'MOP', 'TWD', 'KRW', 'KPW', 'MNT', 'SGD', 'INR', 'BTN', 'PKR', 'BDT', 'LKR', 'NPR', 'MVR', 'AFN', 'IDR', 'MYR', 'PHP', 'THB', 'VND', 'MMK', 'KHR', 'LAK', 'BND', 'KZT', 'UZS', 'KGS', 'TJS', 'TMT', 'AUD', 'NZD', 'FJD', 'PGK', 'SBD', 'VUV', 'WST', 'TOP', 'XPF'], description: 'ISO 4217 currency code' },
|
|
334
|
+
{ name: 'isOwned', in: 'body', required: false, kind: 'boolean' }
|
|
335
|
+
]
|
|
336
|
+
},
|
|
337
|
+
create_labor_rate: {
|
|
338
|
+
method: 'POST',
|
|
339
|
+
path: '/labor/rates',
|
|
340
|
+
tag: 'Labor',
|
|
341
|
+
summary: 'Create a labor rate',
|
|
342
|
+
body: true,
|
|
343
|
+
response: 'json',
|
|
344
|
+
params: [
|
|
345
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
346
|
+
{ name: 'name', in: 'body', required: true, kind: 'string' },
|
|
347
|
+
{ name: 'description', in: 'body', required: false, kind: 'string' },
|
|
348
|
+
{ name: 'hourlyRate', in: 'body', required: true, kind: 'number' },
|
|
349
|
+
{ name: 'burdenRate', in: 'body', required: false, kind: 'number' },
|
|
350
|
+
{ name: 'currency', in: 'body', required: false, kind: 'string', enum: ['USD', 'CAD', 'MXN', 'BRL', 'ARS', 'CLP', 'COP', 'PEN', 'UYU', 'PYG', 'BOB', 'VES', 'GYD', 'SRD', 'GTQ', 'HNL', 'NIO', 'CRC', 'PAB', 'BZD', 'JMD', 'HTG', 'DOP', 'CUP', 'BSD', 'BBD', 'TTD', 'XCD', 'AWG', 'ANG', 'KYD', 'BMD', 'FKP', 'EUR', 'GBP', 'CHF', 'NOK', 'SEK', 'DKK', 'PLN', 'CZK', 'HUF', 'RON', 'BGN', 'HRK', 'RSD', 'UAH', 'RUB', 'TRY', 'ISK', 'BAM', 'MKD', 'ALL', 'MDL', 'BYN', 'GEL', 'AMD', 'AZN', 'GIP', 'ILS', 'AED', 'SAR', 'QAR', 'KWD', 'BHD', 'OMR', 'JOD', 'LBP', 'EGP', 'IQD', 'IRR', 'SYP', 'YER', 'ZAR', 'NAD', 'LSL', 'SZL', 'BWP', 'NGN', 'KES', 'GHS', 'MAD', 'TND', 'DZD', 'LYD', 'ETB', 'ERN', 'DJF', 'SOS', 'SDG', 'SSP', 'UGX', 'TZS', 'RWF', 'BIF', 'MWK', 'ZMW', 'ZWG', 'MZN', 'AOA', 'CDF', 'MGA', 'MUR', 'SCR', 'KMF', 'CVE', 'GMD', 'GNF', 'LRD', 'SLE', 'MRU', 'STN', 'XOF', 'XAF', 'SHP', 'JPY', 'CNY', 'HKD', 'MOP', 'TWD', 'KRW', 'KPW', 'MNT', 'SGD', 'INR', 'BTN', 'PKR', 'BDT', 'LKR', 'NPR', 'MVR', 'AFN', 'IDR', 'MYR', 'PHP', 'THB', 'VND', 'MMK', 'KHR', 'LAK', 'BND', 'KZT', 'UZS', 'KGS', 'TJS', 'TMT', 'AUD', 'NZD', 'FJD', 'PGK', 'SBD', 'VUV', 'WST', 'TOP', 'XPF'], description: 'ISO 4217 currency code' },
|
|
351
|
+
{ name: 'effectiveDate', in: 'body', required: false, kind: 'number' },
|
|
352
|
+
{ name: 'isDefault', in: 'body', required: false, kind: 'boolean' }
|
|
353
|
+
]
|
|
354
|
+
},
|
|
355
|
+
create_layer: {
|
|
356
|
+
method: 'POST',
|
|
357
|
+
path: '/projects/{id}/layers',
|
|
358
|
+
tag: 'Takeoff',
|
|
359
|
+
summary: 'Create a takeoff layer',
|
|
360
|
+
body: true,
|
|
361
|
+
response: 'json',
|
|
362
|
+
params: [
|
|
363
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
364
|
+
{ name: 'name', in: 'body', required: true, kind: 'string' }
|
|
365
|
+
]
|
|
366
|
+
},
|
|
367
|
+
create_list: {
|
|
368
|
+
method: 'POST',
|
|
369
|
+
path: '/lists',
|
|
370
|
+
tag: 'Lists',
|
|
371
|
+
summary: 'Create a list',
|
|
372
|
+
body: true,
|
|
373
|
+
response: 'json',
|
|
374
|
+
params: [
|
|
375
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
376
|
+
{ name: 'name', in: 'body', required: true, kind: 'string' },
|
|
377
|
+
{ name: 'description', in: 'body', required: false, kind: 'string' },
|
|
378
|
+
{ name: 'type', in: 'body', required: true, kind: 'string', enum: ['product', 'takeoffTemplate'] },
|
|
379
|
+
{ name: 'privacy', in: 'body', required: false, kind: 'string', enum: ['private', 'organization', 'public', 'system'] },
|
|
380
|
+
{ name: 'category', in: 'body', required: false, kind: 'string' },
|
|
381
|
+
{ name: 'locale', in: 'body', required: true, kind: 'string', enum: ['af-ZA', 'id-ID', 'ms-MY', 'ca-ES', 'cs-CZ', 'da-DK', 'de-DE', 'en-US', 'es-ES', 'es-419', 'fr-CA', 'fr-FR', 'hr-HR', 'it-IT', 'hu-HU', 'nl-NL', 'no-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ro-RO', 'sk-SK', 'fi-FI', 'sv-SE', 'vi-VN', 'tr-TR', 'el-GR', 'ru-RU', 'sr-SP', 'uk-UA', 'hy-AM', 'he-IL', 'ur-PK', 'ar-SA', 'hi-IN', 'th-TH', 'ko-KR', 'ja-JP', 'zh-CN', 'zh-TW', null], description: 'Supported BCP-47 locale code' }
|
|
382
|
+
]
|
|
383
|
+
},
|
|
384
|
+
create_measurement: {
|
|
385
|
+
method: 'POST',
|
|
386
|
+
path: '/pages/{id}/measurements',
|
|
387
|
+
tag: 'Takeoff',
|
|
388
|
+
summary: 'Create a measurement on a page',
|
|
389
|
+
body: true,
|
|
390
|
+
response: 'json',
|
|
391
|
+
params: [
|
|
392
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex page ID' },
|
|
393
|
+
{ name: 'symbolId', in: 'body', required: true, kind: 'string', description: 'Convex takeoff symbol ID' },
|
|
394
|
+
{ name: 'shapeId', in: 'body', required: true, kind: 'string', description: 'Canvas shape ID' },
|
|
395
|
+
{ name: 'value', in: 'body', required: true, kind: 'number', description: 'The measured quantity in RAW PAGE PIXELS — the same coordinate space as the geometry points, NEVER feet, metres, or any other real-world unit. Linear measurements are a length in px, areas are px², counts are a tally. Exayard converts to real units at display time using the page scale, so a real-world number sent here is converted a second time and reads wrong. When geometry is supplied the server measures it and rejects a value that disagrees by 10× or more, naming both numbers. To send a real-world quantity, convert it to page pixels first (multiply by the page\'s pixels-per-unit; square that factor for an area).' },
|
|
396
|
+
{ name: 'geometry', in: 'body', required: false, kind: 'object', description: 'Measurement geometry: { "points": [{ "x": number, "y": number, "bulge"?: number }, ...], "isClosed": boolean, "holes"?: Point[][], "pathD"?: string }. When geometry is provided, "points" and "isClosed" are required; other keys (e.g. { "length": 280.9 }) are rejected.' },
|
|
397
|
+
{ name: 'notes', in: 'body', required: false, kind: 'string' },
|
|
398
|
+
{ name: 'layerId', in: 'body', required: false, kind: 'string', description: 'Convex takeoff layer ID' }
|
|
399
|
+
]
|
|
400
|
+
},
|
|
401
|
+
create_message: {
|
|
402
|
+
method: 'POST',
|
|
403
|
+
path: '/projects/{id}/messages',
|
|
404
|
+
tag: 'Messages',
|
|
405
|
+
summary: 'Post a message to a project',
|
|
406
|
+
body: true,
|
|
407
|
+
response: 'json',
|
|
408
|
+
params: [
|
|
409
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
410
|
+
{ name: 'content', in: 'body', required: true, kind: 'string' },
|
|
411
|
+
{ name: 'parentMessageId', in: 'body', required: false, kind: 'string', description: 'Convex chat message ID' },
|
|
412
|
+
{ name: 'pageId', in: 'body', required: false, kind: 'string', description: 'Convex page ID' },
|
|
413
|
+
{ name: 'location', in: 'body', required: false, kind: 'object' },
|
|
414
|
+
{ name: 'mentions', in: 'body', required: false, kind: 'array' }
|
|
415
|
+
]
|
|
416
|
+
},
|
|
417
|
+
create_organization: {
|
|
418
|
+
method: 'POST',
|
|
419
|
+
path: '/organizations',
|
|
420
|
+
tag: 'Account',
|
|
421
|
+
summary: 'Create a company your app\'s company owns',
|
|
422
|
+
body: true,
|
|
423
|
+
response: 'json',
|
|
424
|
+
params: [
|
|
425
|
+
{ name: 'name', in: 'body', required: true, kind: 'string', description: 'The company name, 1 to 200 characters.' },
|
|
426
|
+
{ name: 'country', in: 'body', required: false, kind: 'string', description: 'ISO 3166-1 alpha-2 country code. It sets the company\'s starting tax, units and currency.' },
|
|
427
|
+
{ name: 'currency', in: 'body', required: false, kind: 'string', enum: ['USD', 'CAD', 'MXN', 'BRL', 'ARS', 'CLP', 'COP', 'PEN', 'UYU', 'PYG', 'BOB', 'VES', 'GYD', 'SRD', 'GTQ', 'HNL', 'NIO', 'CRC', 'PAB', 'BZD', 'JMD', 'HTG', 'DOP', 'CUP', 'BSD', 'BBD', 'TTD', 'XCD', 'AWG', 'ANG', 'KYD', 'BMD', 'FKP', 'EUR', 'GBP', 'CHF', 'NOK', 'SEK', 'DKK', 'PLN', 'CZK', 'HUF', 'RON', 'BGN', 'HRK', 'RSD', 'UAH', 'RUB', 'TRY', 'ISK', 'BAM', 'MKD', 'ALL', 'MDL', 'BYN', 'GEL', 'AMD', 'AZN', 'GIP', 'ILS', 'AED', 'SAR', 'QAR', 'KWD', 'BHD', 'OMR', 'JOD', 'LBP', 'EGP', 'IQD', 'IRR', 'SYP', 'YER', 'ZAR', 'NAD', 'LSL', 'SZL', 'BWP', 'NGN', 'KES', 'GHS', 'MAD', 'TND', 'DZD', 'LYD', 'ETB', 'ERN', 'DJF', 'SOS', 'SDG', 'SSP', 'UGX', 'TZS', 'RWF', 'BIF', 'MWK', 'ZMW', 'ZWG', 'MZN', 'AOA', 'CDF', 'MGA', 'MUR', 'SCR', 'KMF', 'CVE', 'GMD', 'GNF', 'LRD', 'SLE', 'MRU', 'STN', 'XOF', 'XAF', 'SHP', 'JPY', 'CNY', 'HKD', 'MOP', 'TWD', 'KRW', 'KPW', 'MNT', 'SGD', 'INR', 'BTN', 'PKR', 'BDT', 'LKR', 'NPR', 'MVR', 'AFN', 'IDR', 'MYR', 'PHP', 'THB', 'VND', 'MMK', 'KHR', 'LAK', 'BND', 'KZT', 'UZS', 'KGS', 'TJS', 'TMT', 'AUD', 'NZD', 'FJD', 'PGK', 'SBD', 'VUV', 'WST', 'TOP', 'XPF'], description: 'ISO 4217 currency code' },
|
|
428
|
+
{ name: 'measurementSystem', in: 'body', required: false, kind: 'string', enum: ['imperial', 'metric'] }
|
|
429
|
+
]
|
|
430
|
+
},
|
|
431
|
+
create_product: {
|
|
432
|
+
method: 'POST',
|
|
433
|
+
path: '/products',
|
|
434
|
+
tag: 'Products',
|
|
435
|
+
summary: 'Create a product',
|
|
436
|
+
body: true,
|
|
437
|
+
response: 'json',
|
|
438
|
+
params: [
|
|
439
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
440
|
+
{ name: 'listId', in: 'body', required: true, kind: 'string', description: 'Convex product list ID' },
|
|
441
|
+
{ name: 'name', in: 'body', required: false, kind: 'string' },
|
|
442
|
+
{ name: 'sku', in: 'body', required: false, kind: 'string' },
|
|
443
|
+
{ name: 'unitOfMeasure', in: 'body', required: false, kind: 'string' },
|
|
444
|
+
{ name: 'costPerUnit', in: 'body', required: false, kind: 'number' },
|
|
445
|
+
{ name: 'currency', in: 'body', required: false, kind: 'string', enum: ['USD', 'CAD', 'MXN', 'BRL', 'ARS', 'CLP', 'COP', 'PEN', 'UYU', 'PYG', 'BOB', 'VES', 'GYD', 'SRD', 'GTQ', 'HNL', 'NIO', 'CRC', 'PAB', 'BZD', 'JMD', 'HTG', 'DOP', 'CUP', 'BSD', 'BBD', 'TTD', 'XCD', 'AWG', 'ANG', 'KYD', 'BMD', 'FKP', 'EUR', 'GBP', 'CHF', 'NOK', 'SEK', 'DKK', 'PLN', 'CZK', 'HUF', 'RON', 'BGN', 'HRK', 'RSD', 'UAH', 'RUB', 'TRY', 'ISK', 'BAM', 'MKD', 'ALL', 'MDL', 'BYN', 'GEL', 'AMD', 'AZN', 'GIP', 'ILS', 'AED', 'SAR', 'QAR', 'KWD', 'BHD', 'OMR', 'JOD', 'LBP', 'EGP', 'IQD', 'IRR', 'SYP', 'YER', 'ZAR', 'NAD', 'LSL', 'SZL', 'BWP', 'NGN', 'KES', 'GHS', 'MAD', 'TND', 'DZD', 'LYD', 'ETB', 'ERN', 'DJF', 'SOS', 'SDG', 'SSP', 'UGX', 'TZS', 'RWF', 'BIF', 'MWK', 'ZMW', 'ZWG', 'MZN', 'AOA', 'CDF', 'MGA', 'MUR', 'SCR', 'KMF', 'CVE', 'GMD', 'GNF', 'LRD', 'SLE', 'MRU', 'STN', 'XOF', 'XAF', 'SHP', 'JPY', 'CNY', 'HKD', 'MOP', 'TWD', 'KRW', 'KPW', 'MNT', 'SGD', 'INR', 'BTN', 'PKR', 'BDT', 'LKR', 'NPR', 'MVR', 'AFN', 'IDR', 'MYR', 'PHP', 'THB', 'VND', 'MMK', 'KHR', 'LAK', 'BND', 'KZT', 'UZS', 'KGS', 'TJS', 'TMT', 'AUD', 'NZD', 'FJD', 'PGK', 'SBD', 'VUV', 'WST', 'TOP', 'XPF'], description: 'ISO 4217 currency code' },
|
|
446
|
+
{ name: 'markupPercent', in: 'body', required: false, kind: 'number' },
|
|
447
|
+
{ name: 'customProperties', in: 'body', required: false, kind: 'object' },
|
|
448
|
+
{ name: 'position', in: 'body', required: false, kind: 'integer' }
|
|
449
|
+
]
|
|
450
|
+
},
|
|
451
|
+
create_project: {
|
|
452
|
+
method: 'POST',
|
|
453
|
+
path: '/projects',
|
|
454
|
+
tag: 'Projects',
|
|
455
|
+
summary: 'Create a project',
|
|
456
|
+
body: true,
|
|
457
|
+
response: 'json',
|
|
458
|
+
params: [
|
|
459
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
460
|
+
{ name: 'name', in: 'body', required: true, kind: 'string' },
|
|
461
|
+
{ name: 'customProperties', in: 'body', required: false, kind: 'object' }
|
|
462
|
+
]
|
|
463
|
+
},
|
|
464
|
+
create_symbol: {
|
|
465
|
+
method: 'POST',
|
|
466
|
+
path: '/projects/{id}/symbols',
|
|
467
|
+
tag: 'Takeoff',
|
|
468
|
+
summary: 'Create a takeoff symbol',
|
|
469
|
+
body: true,
|
|
470
|
+
response: 'json',
|
|
471
|
+
params: [
|
|
472
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
473
|
+
{ name: 'isTemplate', in: 'body', required: false, kind: 'boolean' },
|
|
474
|
+
{ name: 'listId', in: 'body', required: false, kind: 'string', description: 'Convex product list ID' },
|
|
475
|
+
{ name: 'name', in: 'body', required: true, kind: 'string' },
|
|
476
|
+
{ name: 'type', in: 'body', required: true, kind: 'string', enum: ['count', 'linear', 'area'] },
|
|
477
|
+
{ name: 'color', in: 'body', required: true, kind: 'string' },
|
|
478
|
+
{ name: 'category', in: 'body', required: false, kind: 'string' },
|
|
479
|
+
{ name: 'subcategory', in: 'body', required: false, kind: 'string' },
|
|
480
|
+
{ name: 'groupId', in: 'body', required: false, kind: 'string', description: 'Convex takeoff group ID' },
|
|
481
|
+
{ name: 'customProperties', in: 'body', required: false, kind: 'object' }
|
|
482
|
+
]
|
|
483
|
+
},
|
|
484
|
+
create_vendor: {
|
|
485
|
+
method: 'POST',
|
|
486
|
+
path: '/vendors',
|
|
487
|
+
tag: 'Vendors',
|
|
488
|
+
summary: 'Create a vendor',
|
|
489
|
+
body: true,
|
|
490
|
+
response: 'json',
|
|
491
|
+
params: [
|
|
492
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
493
|
+
{ name: 'name', in: 'body', required: true, kind: 'string' },
|
|
494
|
+
{ name: 'type', in: 'body', required: true, kind: 'string', enum: ['supplier', 'subcontractor', 'rental'] },
|
|
495
|
+
{ name: 'kind', in: 'body', required: false, kind: 'string', enum: ['sub', 'supplier', 'surety', 'insurer', 'agency', 'owner', 'architect', 'engineer', 'other', null] },
|
|
496
|
+
{ name: 'contactName', in: 'body', required: false, kind: 'string' },
|
|
497
|
+
{ name: 'email', in: 'body', required: false, kind: 'string' },
|
|
498
|
+
{ name: 'phone', in: 'body', required: false, kind: 'string' },
|
|
499
|
+
{ name: 'website', in: 'body', required: false, kind: 'string' },
|
|
500
|
+
{ name: 'address', in: 'body', required: false, kind: 'object' },
|
|
501
|
+
{ name: 'paymentTerms', in: 'body', required: false, kind: 'string' },
|
|
502
|
+
{ name: 'accountNumber', in: 'body', required: false, kind: 'string' },
|
|
503
|
+
{ name: 'notes', in: 'body', required: false, kind: 'string' },
|
|
504
|
+
{ name: 'tags', in: 'body', required: false, kind: 'array' },
|
|
505
|
+
{ name: 'isPreferred', in: 'body', required: false, kind: 'boolean' }
|
|
506
|
+
]
|
|
507
|
+
},
|
|
508
|
+
create_vendor_quote: {
|
|
509
|
+
method: 'POST',
|
|
510
|
+
path: '/projects/{id}/quotes',
|
|
511
|
+
tag: 'Vendor quotes',
|
|
512
|
+
summary: 'Create a vendor quote request',
|
|
513
|
+
body: true,
|
|
514
|
+
response: 'json',
|
|
515
|
+
params: [
|
|
516
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
517
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
518
|
+
{ name: 'vendorId', in: 'body', required: true, kind: 'string' },
|
|
519
|
+
{ name: 'quoteNumber', in: 'body', required: true, kind: 'string' },
|
|
520
|
+
{ name: 'lineItems', in: 'body', required: false, kind: 'array' },
|
|
521
|
+
{ name: 'subtotal', in: 'body', required: false, kind: 'number', description: 'Sum of the line items\' totalPrice when lineItems are sent; absent counts as 0' },
|
|
522
|
+
{ name: 'tax', in: 'body', required: false, kind: 'number' },
|
|
523
|
+
{ name: 'shipping', in: 'body', required: false, kind: 'number' },
|
|
524
|
+
{ name: 'total', in: 'body', required: false, kind: 'number', description: 'Must equal subtotal + tax + shipping (an absent amount counts as 0); absent counts as 0' },
|
|
525
|
+
{ name: 'validUntil', in: 'body', required: false, kind: 'number', description: 'Quote expiry as epoch milliseconds' },
|
|
526
|
+
{ name: 'notes', in: 'body', required: false, kind: 'string' }
|
|
527
|
+
]
|
|
528
|
+
},
|
|
529
|
+
create_webhook_endpoint: {
|
|
530
|
+
method: 'POST',
|
|
531
|
+
path: '/webhook_endpoints',
|
|
532
|
+
tag: 'Webhooks',
|
|
533
|
+
summary: 'Create a webhook endpoint',
|
|
534
|
+
body: true,
|
|
535
|
+
response: 'json',
|
|
536
|
+
params: [
|
|
537
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
538
|
+
{ name: 'url', in: 'body', required: true, kind: 'string' },
|
|
539
|
+
{ name: 'events', in: 'body', required: true, kind: 'array' },
|
|
540
|
+
{ name: 'description', in: 'body', required: false, kind: 'string' }
|
|
541
|
+
]
|
|
542
|
+
},
|
|
543
|
+
create_widget: {
|
|
544
|
+
method: 'POST',
|
|
545
|
+
path: '/widgets',
|
|
546
|
+
tag: 'Widgets',
|
|
547
|
+
summary: 'Create a widget',
|
|
548
|
+
body: true,
|
|
549
|
+
response: 'json',
|
|
550
|
+
params: [
|
|
551
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
552
|
+
{ name: 'name', in: 'body', required: true, kind: 'string' },
|
|
553
|
+
{ name: 'config', in: 'body', required: false, kind: 'object' }
|
|
554
|
+
]
|
|
555
|
+
},
|
|
556
|
+
delete_organization: {
|
|
557
|
+
method: 'DELETE',
|
|
558
|
+
path: '/organizations/{id}',
|
|
559
|
+
tag: 'Account',
|
|
560
|
+
summary: 'Release a company your app\'s company owns',
|
|
561
|
+
body: false,
|
|
562
|
+
response: 'json',
|
|
563
|
+
params: [
|
|
564
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'The id of a company your app\'s company owns, from GET /v1/organizations or its creation.' }
|
|
565
|
+
]
|
|
566
|
+
},
|
|
567
|
+
delete_webhook_endpoint: {
|
|
568
|
+
method: 'DELETE',
|
|
569
|
+
path: '/webhook_endpoints/{id}',
|
|
570
|
+
tag: 'Webhooks',
|
|
571
|
+
summary: 'Delete a webhook endpoint',
|
|
572
|
+
body: false,
|
|
573
|
+
response: 'empty',
|
|
574
|
+
params: [
|
|
575
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
576
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
577
|
+
]
|
|
578
|
+
},
|
|
579
|
+
disconnect_integration: {
|
|
580
|
+
method: 'DELETE',
|
|
581
|
+
path: '/integrations/{id}',
|
|
582
|
+
tag: 'Integrations',
|
|
583
|
+
summary: 'Disconnect an integration',
|
|
584
|
+
body: false,
|
|
585
|
+
response: 'empty',
|
|
586
|
+
params: [
|
|
587
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
588
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
589
|
+
]
|
|
590
|
+
},
|
|
591
|
+
export_project: {
|
|
592
|
+
method: 'GET',
|
|
593
|
+
path: '/projects/{id}/export',
|
|
594
|
+
tag: 'Projects',
|
|
595
|
+
summary: 'Export a project as structured JSON',
|
|
596
|
+
body: false,
|
|
597
|
+
response: 'json',
|
|
598
|
+
params: [
|
|
599
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
600
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
601
|
+
]
|
|
602
|
+
},
|
|
603
|
+
find_symbol_elements: {
|
|
604
|
+
method: 'POST',
|
|
605
|
+
path: '/pages/{id}/elements/find',
|
|
606
|
+
tag: 'Takeoff',
|
|
607
|
+
summary: 'Detect instances of an element on a page via Claude Vision',
|
|
608
|
+
body: true,
|
|
609
|
+
response: 'json',
|
|
610
|
+
params: [
|
|
611
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex page ID' },
|
|
612
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
613
|
+
{ name: 'projectId', in: 'body', required: true, kind: 'string', description: 'Convex project ID' },
|
|
614
|
+
{ name: 'elementDescription', in: 'body', required: true, kind: 'string', description: 'Natural-language description of what to find (e.g. "electrical outlets", "doors")' },
|
|
615
|
+
{ name: 'measurementType', in: 'body', required: true, kind: 'string', enum: ['count', 'linear', 'area'], description: 'How detections should be shaped (count marker / linear line / area rectangle)' },
|
|
616
|
+
{ name: 'persist', in: 'body', required: false, kind: 'boolean', description: 'When true, writes the detected shapes to the realtime canvas via the sync-worker. Returns persistedShapeIds on success.' }
|
|
617
|
+
]
|
|
618
|
+
},
|
|
619
|
+
generate_estimate: {
|
|
620
|
+
method: 'POST',
|
|
621
|
+
path: '/projects/{id}/estimates/generate',
|
|
622
|
+
tag: 'Estimates',
|
|
623
|
+
summary: 'Stream an AI-generated cost estimate',
|
|
624
|
+
body: true,
|
|
625
|
+
response: 'stream',
|
|
626
|
+
params: [
|
|
627
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
628
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
629
|
+
{ name: 'query', in: 'body', required: true, kind: 'string', description: 'Natural-language prompt describing the scope of the estimate' },
|
|
630
|
+
{ name: 'notes', in: 'body', required: false, kind: 'string', description: 'Additional notes appended to the prompt' },
|
|
631
|
+
{ name: 'measurementContext', in: 'body', required: false, kind: 'string', description: 'Pre-serialized takeoff data to ground the estimator (see GET /v1/projects/{id}/takeoff-summary)' }
|
|
632
|
+
]
|
|
633
|
+
},
|
|
634
|
+
get_assessment: {
|
|
635
|
+
method: 'GET',
|
|
636
|
+
path: '/assessments/{id}',
|
|
637
|
+
tag: 'Takeoff',
|
|
638
|
+
summary: 'Get an assessment by ID',
|
|
639
|
+
body: false,
|
|
640
|
+
response: 'json',
|
|
641
|
+
params: [
|
|
642
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex takeoff assessment ID' }
|
|
643
|
+
]
|
|
644
|
+
},
|
|
645
|
+
get_best_price_for_product: {
|
|
646
|
+
method: 'GET',
|
|
647
|
+
path: '/products/{id}/best-price',
|
|
648
|
+
tag: 'Vendor prices',
|
|
649
|
+
summary: 'Best vendor price for a product',
|
|
650
|
+
body: false,
|
|
651
|
+
response: 'json',
|
|
652
|
+
params: [
|
|
653
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex product ID' },
|
|
654
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
655
|
+
{ name: 'quantity', in: 'query', required: false, kind: 'number' }
|
|
656
|
+
]
|
|
657
|
+
},
|
|
658
|
+
get_contact: {
|
|
659
|
+
method: 'GET',
|
|
660
|
+
path: '/contacts/{id}',
|
|
661
|
+
tag: 'Contacts',
|
|
662
|
+
summary: 'Get a contact by ID',
|
|
663
|
+
body: false,
|
|
664
|
+
response: 'json',
|
|
665
|
+
params: [
|
|
666
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex contact ID' },
|
|
667
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
668
|
+
]
|
|
669
|
+
},
|
|
670
|
+
get_conversation: {
|
|
671
|
+
method: 'GET',
|
|
672
|
+
path: '/conversations/{id}',
|
|
673
|
+
tag: 'Conversations',
|
|
674
|
+
summary: 'Get a conversation by ID',
|
|
675
|
+
body: false,
|
|
676
|
+
response: 'json',
|
|
677
|
+
params: [
|
|
678
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex conversation ID' },
|
|
679
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
680
|
+
]
|
|
681
|
+
},
|
|
682
|
+
get_credit_balance: {
|
|
683
|
+
method: 'GET',
|
|
684
|
+
path: '/credits/balance',
|
|
685
|
+
tag: 'Credits',
|
|
686
|
+
summary: 'Get credit balance for an organization',
|
|
687
|
+
body: false,
|
|
688
|
+
response: 'json',
|
|
689
|
+
params: [
|
|
690
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
691
|
+
]
|
|
692
|
+
},
|
|
693
|
+
get_credit_usage_history: {
|
|
694
|
+
method: 'GET',
|
|
695
|
+
path: '/credits/usage',
|
|
696
|
+
tag: 'Credits',
|
|
697
|
+
summary: 'Get credit usage history',
|
|
698
|
+
body: false,
|
|
699
|
+
response: 'json',
|
|
700
|
+
params: [
|
|
701
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
702
|
+
{ name: 'limit', in: 'query', required: false, kind: 'integer' },
|
|
703
|
+
{ name: 'cursor', in: 'query', required: false, kind: 'number' },
|
|
704
|
+
{ name: 'dateFrom', in: 'query', required: false, kind: 'number' },
|
|
705
|
+
{ name: 'dateTo', in: 'query', required: false, kind: 'number' },
|
|
706
|
+
{ name: 'type', in: 'query', required: false, kind: 'string', enum: ['issuance', 'consumption'] },
|
|
707
|
+
{ name: 'kind', in: 'query', required: false, kind: 'string', enum: ['monthly', 'gifted', 'purchased'] }
|
|
708
|
+
]
|
|
709
|
+
},
|
|
710
|
+
get_credit_usage_stats: {
|
|
711
|
+
method: 'GET',
|
|
712
|
+
path: '/credits/stats',
|
|
713
|
+
tag: 'Credits',
|
|
714
|
+
summary: 'Get credit usage stats',
|
|
715
|
+
body: false,
|
|
716
|
+
response: 'json',
|
|
717
|
+
params: [
|
|
718
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
719
|
+
{ name: 'dateFrom', in: 'query', required: false, kind: 'number' },
|
|
720
|
+
{ name: 'dateTo', in: 'query', required: false, kind: 'number' }
|
|
721
|
+
]
|
|
722
|
+
},
|
|
723
|
+
get_custom_property: {
|
|
724
|
+
method: 'GET',
|
|
725
|
+
path: '/custom-properties/{id}',
|
|
726
|
+
tag: 'Custom properties',
|
|
727
|
+
summary: 'Get a custom property',
|
|
728
|
+
body: false,
|
|
729
|
+
response: 'json',
|
|
730
|
+
params: [
|
|
731
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex custom property ID' },
|
|
732
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
733
|
+
]
|
|
734
|
+
},
|
|
735
|
+
get_document: {
|
|
736
|
+
method: 'GET',
|
|
737
|
+
path: '/documents/{id}',
|
|
738
|
+
tag: 'Documents',
|
|
739
|
+
summary: 'Get a single document',
|
|
740
|
+
body: false,
|
|
741
|
+
response: 'json',
|
|
742
|
+
params: [
|
|
743
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex document ID' },
|
|
744
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
745
|
+
]
|
|
746
|
+
},
|
|
747
|
+
get_file: {
|
|
748
|
+
method: 'GET',
|
|
749
|
+
path: '/files/{id}',
|
|
750
|
+
tag: 'Files',
|
|
751
|
+
summary: 'Get a file with its pages',
|
|
752
|
+
body: false,
|
|
753
|
+
response: 'json',
|
|
754
|
+
params: [
|
|
755
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex file ID' },
|
|
756
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
757
|
+
]
|
|
758
|
+
},
|
|
759
|
+
get_file_url: {
|
|
760
|
+
method: 'GET',
|
|
761
|
+
path: '/files/{id}/url',
|
|
762
|
+
tag: 'Files',
|
|
763
|
+
summary: 'Get a presigned download URL for a file',
|
|
764
|
+
body: false,
|
|
765
|
+
response: 'json',
|
|
766
|
+
params: [
|
|
767
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex file ID' },
|
|
768
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
769
|
+
]
|
|
770
|
+
},
|
|
771
|
+
get_folder: {
|
|
772
|
+
method: 'GET',
|
|
773
|
+
path: '/folders/{id}',
|
|
774
|
+
tag: 'Folders',
|
|
775
|
+
summary: 'Get a folder by ID',
|
|
776
|
+
body: false,
|
|
777
|
+
response: 'json',
|
|
778
|
+
params: [
|
|
779
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex folder ID' }
|
|
780
|
+
]
|
|
781
|
+
},
|
|
782
|
+
get_labor_crew: {
|
|
783
|
+
method: 'GET',
|
|
784
|
+
path: '/labor/crews/{id}',
|
|
785
|
+
tag: 'Labor',
|
|
786
|
+
summary: 'Get a labor crew',
|
|
787
|
+
body: false,
|
|
788
|
+
response: 'json',
|
|
789
|
+
params: [
|
|
790
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
791
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
792
|
+
]
|
|
793
|
+
},
|
|
794
|
+
get_labor_equipment: {
|
|
795
|
+
method: 'GET',
|
|
796
|
+
path: '/labor/equipment/{id}',
|
|
797
|
+
tag: 'Labor',
|
|
798
|
+
summary: 'Get a labor equipment entry',
|
|
799
|
+
body: false,
|
|
800
|
+
response: 'json',
|
|
801
|
+
params: [
|
|
802
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
803
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
804
|
+
]
|
|
805
|
+
},
|
|
806
|
+
get_labor_rate: {
|
|
807
|
+
method: 'GET',
|
|
808
|
+
path: '/labor/rates/{id}',
|
|
809
|
+
tag: 'Labor',
|
|
810
|
+
summary: 'Get a labor rate',
|
|
811
|
+
body: false,
|
|
812
|
+
response: 'json',
|
|
813
|
+
params: [
|
|
814
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
815
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
816
|
+
]
|
|
817
|
+
},
|
|
818
|
+
get_latest_assessment: {
|
|
819
|
+
method: 'GET',
|
|
820
|
+
path: '/projects/{id}/assessments/latest',
|
|
821
|
+
tag: 'Takeoff',
|
|
822
|
+
summary: 'Get the most recent assessment with elements',
|
|
823
|
+
body: false,
|
|
824
|
+
response: 'json',
|
|
825
|
+
params: [
|
|
826
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' }
|
|
827
|
+
]
|
|
828
|
+
},
|
|
829
|
+
get_list: {
|
|
830
|
+
method: 'GET',
|
|
831
|
+
path: '/lists/{id}',
|
|
832
|
+
tag: 'Lists',
|
|
833
|
+
summary: 'Get a single list',
|
|
834
|
+
body: false,
|
|
835
|
+
response: 'json',
|
|
836
|
+
params: [
|
|
837
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex product list ID' },
|
|
838
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
839
|
+
]
|
|
840
|
+
},
|
|
841
|
+
get_me: {
|
|
842
|
+
method: 'GET',
|
|
843
|
+
path: '/me',
|
|
844
|
+
tag: 'Account',
|
|
845
|
+
summary: 'Get the authenticated caller',
|
|
846
|
+
body: false,
|
|
847
|
+
response: 'json',
|
|
848
|
+
params: []
|
|
849
|
+
},
|
|
850
|
+
get_measurement: {
|
|
851
|
+
method: 'GET',
|
|
852
|
+
path: '/pages/{pageId}/measurements/{shapeId}',
|
|
853
|
+
tag: 'Takeoff',
|
|
854
|
+
summary: 'Get a measurement by shape ID',
|
|
855
|
+
body: false,
|
|
856
|
+
response: 'json',
|
|
857
|
+
params: [
|
|
858
|
+
{ name: 'pageId', in: 'path', required: true, kind: 'string', description: 'Convex page ID' },
|
|
859
|
+
{ name: 'shapeId', in: 'path', required: true, kind: 'string' }
|
|
860
|
+
]
|
|
861
|
+
},
|
|
862
|
+
get_page: {
|
|
863
|
+
method: 'GET',
|
|
864
|
+
path: '/pages/{id}',
|
|
865
|
+
tag: 'Pages',
|
|
866
|
+
summary: 'Get a single page',
|
|
867
|
+
body: false,
|
|
868
|
+
response: 'json',
|
|
869
|
+
params: [
|
|
870
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex page ID' }
|
|
871
|
+
]
|
|
872
|
+
},
|
|
873
|
+
get_page_content: {
|
|
874
|
+
method: 'GET',
|
|
875
|
+
path: '/pages/{id}/content',
|
|
876
|
+
tag: 'Pages',
|
|
877
|
+
summary: 'Extracted text and AI description for a page',
|
|
878
|
+
body: false,
|
|
879
|
+
response: 'json',
|
|
880
|
+
params: [
|
|
881
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex page ID' }
|
|
882
|
+
]
|
|
883
|
+
},
|
|
884
|
+
get_prices_for_product: {
|
|
885
|
+
method: 'GET',
|
|
886
|
+
path: '/products/{id}/prices',
|
|
887
|
+
tag: 'Vendor prices',
|
|
888
|
+
summary: 'List vendor prices for a product',
|
|
889
|
+
body: false,
|
|
890
|
+
response: 'json',
|
|
891
|
+
params: [
|
|
892
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex product ID' },
|
|
893
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
894
|
+
]
|
|
895
|
+
},
|
|
896
|
+
get_product: {
|
|
897
|
+
method: 'GET',
|
|
898
|
+
path: '/products/{id}',
|
|
899
|
+
tag: 'Products',
|
|
900
|
+
summary: 'Get a single product',
|
|
901
|
+
body: false,
|
|
902
|
+
response: 'json',
|
|
903
|
+
params: [
|
|
904
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex product ID' },
|
|
905
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
906
|
+
]
|
|
907
|
+
},
|
|
908
|
+
get_project: {
|
|
909
|
+
method: 'GET',
|
|
910
|
+
path: '/projects/{id}',
|
|
911
|
+
tag: 'Projects',
|
|
912
|
+
summary: 'Get a single project',
|
|
913
|
+
body: false,
|
|
914
|
+
response: 'json',
|
|
915
|
+
params: [
|
|
916
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
917
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
918
|
+
]
|
|
919
|
+
},
|
|
920
|
+
get_project_relations: {
|
|
921
|
+
method: 'GET',
|
|
922
|
+
path: '/projects/{id}/relations',
|
|
923
|
+
tag: 'Projects',
|
|
924
|
+
summary: 'Get a project with page/estimate counts',
|
|
925
|
+
body: false,
|
|
926
|
+
response: 'json',
|
|
927
|
+
params: [
|
|
928
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
929
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
930
|
+
]
|
|
931
|
+
},
|
|
932
|
+
get_spreadsheet: {
|
|
933
|
+
method: 'GET',
|
|
934
|
+
path: '/spreadsheets/{id}',
|
|
935
|
+
tag: 'Spreadsheets',
|
|
936
|
+
summary: 'Get a single spreadsheet',
|
|
937
|
+
body: false,
|
|
938
|
+
response: 'json',
|
|
939
|
+
params: [
|
|
940
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex spreadsheet ID' },
|
|
941
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
942
|
+
]
|
|
943
|
+
},
|
|
944
|
+
get_symbol: {
|
|
945
|
+
method: 'GET',
|
|
946
|
+
path: '/symbols/{id}',
|
|
947
|
+
tag: 'Takeoff',
|
|
948
|
+
summary: 'Get a takeoff symbol',
|
|
949
|
+
body: false,
|
|
950
|
+
response: 'json',
|
|
951
|
+
params: [
|
|
952
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex takeoff symbol ID' },
|
|
953
|
+
{ name: 'projectId', in: 'query', required: true, kind: 'string' }
|
|
954
|
+
]
|
|
955
|
+
},
|
|
956
|
+
get_symbol_line_item: {
|
|
957
|
+
method: 'GET',
|
|
958
|
+
path: '/symbols/{symbolId}/line-items/{id}',
|
|
959
|
+
tag: 'Takeoff',
|
|
960
|
+
summary: 'Get a single line item on a symbol',
|
|
961
|
+
body: false,
|
|
962
|
+
response: 'json',
|
|
963
|
+
params: [
|
|
964
|
+
{ name: 'symbolId', in: 'path', required: true, kind: 'string', description: 'Convex takeoff symbol ID' },
|
|
965
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
966
|
+
{ name: 'projectId', in: 'query', required: true, kind: 'string' }
|
|
967
|
+
]
|
|
968
|
+
},
|
|
969
|
+
get_takeoff_summary: {
|
|
970
|
+
method: 'GET',
|
|
971
|
+
path: '/projects/{id}/takeoff-summary',
|
|
972
|
+
tag: 'Takeoff',
|
|
973
|
+
summary: 'Aggregated totals across takeoff symbols in a project',
|
|
974
|
+
body: false,
|
|
975
|
+
response: 'json',
|
|
976
|
+
params: [
|
|
977
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' }
|
|
978
|
+
]
|
|
979
|
+
},
|
|
980
|
+
get_unread_notification_count: {
|
|
981
|
+
method: 'GET',
|
|
982
|
+
path: '/notifications/unread-count',
|
|
983
|
+
tag: 'Notifications',
|
|
984
|
+
summary: 'Get unread notification count',
|
|
985
|
+
body: false,
|
|
986
|
+
response: 'json',
|
|
987
|
+
params: []
|
|
988
|
+
},
|
|
989
|
+
get_usage: {
|
|
990
|
+
method: 'GET',
|
|
991
|
+
path: '/usage',
|
|
992
|
+
tag: 'Credits',
|
|
993
|
+
summary: 'Get AI usage by app, key, end user or operation',
|
|
994
|
+
body: false,
|
|
995
|
+
response: 'json',
|
|
996
|
+
params: [
|
|
997
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
998
|
+
{ name: 'groupBy', in: 'query', required: true, kind: 'string', enum: ['app', 'key', 'end_user', 'operation'], description: 'What to group by: app, key, end user (the Exayard-End-User header) or operation.' },
|
|
999
|
+
{ name: 'dateFrom', in: 'query', required: false, kind: 'number', description: 'Start of the window, epoch ms, inclusive. Default: this billing month.' },
|
|
1000
|
+
{ name: 'dateTo', in: 'query', required: false, kind: 'number', description: 'End of the window, epoch ms, exclusive. Default: now when dateFrom is given, else the end of this billing month.' },
|
|
1001
|
+
{ name: 'appId', in: 'query', required: false, kind: 'string', description: 'Only the usage of this app.' },
|
|
1002
|
+
{ name: 'appKeyId', in: 'query', required: false, kind: 'string', description: 'Only the usage of this key.' },
|
|
1003
|
+
{ name: 'endUser', in: 'query', required: false, kind: 'string', description: 'Only the usage of this end user.' }
|
|
1004
|
+
]
|
|
1005
|
+
},
|
|
1006
|
+
get_vendor: {
|
|
1007
|
+
method: 'GET',
|
|
1008
|
+
path: '/vendors/{id}',
|
|
1009
|
+
tag: 'Vendors',
|
|
1010
|
+
summary: 'Get a single vendor',
|
|
1011
|
+
body: false,
|
|
1012
|
+
response: 'json',
|
|
1013
|
+
params: [
|
|
1014
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex vendor ID' },
|
|
1015
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
1016
|
+
]
|
|
1017
|
+
},
|
|
1018
|
+
get_vendor_quote: {
|
|
1019
|
+
method: 'GET',
|
|
1020
|
+
path: '/quotes/{id}',
|
|
1021
|
+
tag: 'Vendor quotes',
|
|
1022
|
+
summary: 'Get a vendor quote',
|
|
1023
|
+
body: false,
|
|
1024
|
+
response: 'json',
|
|
1025
|
+
params: [
|
|
1026
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
1027
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
1028
|
+
]
|
|
1029
|
+
},
|
|
1030
|
+
get_widget: {
|
|
1031
|
+
method: 'GET',
|
|
1032
|
+
path: '/widgets/{id}',
|
|
1033
|
+
tag: 'Widgets',
|
|
1034
|
+
summary: 'Get a widget',
|
|
1035
|
+
body: false,
|
|
1036
|
+
response: 'json',
|
|
1037
|
+
params: [
|
|
1038
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex widget ID' },
|
|
1039
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
1040
|
+
]
|
|
1041
|
+
},
|
|
1042
|
+
list_assessments: {
|
|
1043
|
+
method: 'GET',
|
|
1044
|
+
path: '/projects/{id}/assessments',
|
|
1045
|
+
tag: 'Takeoff',
|
|
1046
|
+
summary: 'List assessments for a project',
|
|
1047
|
+
body: false,
|
|
1048
|
+
response: 'json',
|
|
1049
|
+
params: [
|
|
1050
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' }
|
|
1051
|
+
]
|
|
1052
|
+
},
|
|
1053
|
+
list_contacts: {
|
|
1054
|
+
method: 'GET',
|
|
1055
|
+
path: '/contacts',
|
|
1056
|
+
tag: 'Contacts',
|
|
1057
|
+
summary: 'List contacts captured by widgets',
|
|
1058
|
+
body: false,
|
|
1059
|
+
response: 'json',
|
|
1060
|
+
params: [
|
|
1061
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1062
|
+
{ name: 'widgetId', in: 'query', required: false, kind: 'string' },
|
|
1063
|
+
{ name: 'search', in: 'query', required: false, kind: 'string' },
|
|
1064
|
+
{ name: 'limit', in: 'query', required: false, kind: 'integer' }
|
|
1065
|
+
]
|
|
1066
|
+
},
|
|
1067
|
+
list_conversation_files: {
|
|
1068
|
+
method: 'GET',
|
|
1069
|
+
path: '/conversations/{id}/files',
|
|
1070
|
+
tag: 'Conversations',
|
|
1071
|
+
summary: 'List files uploaded in a conversation',
|
|
1072
|
+
body: false,
|
|
1073
|
+
response: 'json',
|
|
1074
|
+
params: [
|
|
1075
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex conversation ID' },
|
|
1076
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1077
|
+
{ name: 'imagesOnly', in: 'query', required: false, kind: 'boolean' }
|
|
1078
|
+
]
|
|
1079
|
+
},
|
|
1080
|
+
list_conversations: {
|
|
1081
|
+
method: 'GET',
|
|
1082
|
+
path: '/conversations',
|
|
1083
|
+
tag: 'Conversations',
|
|
1084
|
+
summary: 'List conversations for the caller',
|
|
1085
|
+
body: false,
|
|
1086
|
+
response: 'json',
|
|
1087
|
+
params: [
|
|
1088
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1089
|
+
{ name: 'type', in: 'query', required: false, kind: 'string', enum: ['ai_chat', 'project_activity', 'whatsapp_chat'] },
|
|
1090
|
+
{ name: 'channel', in: 'query', required: false, kind: 'string', enum: ['app', 'email', 'whatsapp'] },
|
|
1091
|
+
{ name: 'limit', in: 'query', required: false, kind: 'integer' },
|
|
1092
|
+
{ name: 'cursor', in: 'query', required: false, kind: 'number' }
|
|
1093
|
+
]
|
|
1094
|
+
},
|
|
1095
|
+
list_custom_properties: {
|
|
1096
|
+
method: 'GET',
|
|
1097
|
+
path: '/custom-properties',
|
|
1098
|
+
tag: 'Custom properties',
|
|
1099
|
+
summary: 'List custom properties in an organization',
|
|
1100
|
+
body: false,
|
|
1101
|
+
response: 'json',
|
|
1102
|
+
params: [
|
|
1103
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1104
|
+
{ name: 'recordType', in: 'query', required: false, kind: 'string', enum: ['project', 'countTakeoff', 'linearTakeoff', 'areaTakeoff', 'product'] }
|
|
1105
|
+
]
|
|
1106
|
+
},
|
|
1107
|
+
list_documents: {
|
|
1108
|
+
method: 'GET',
|
|
1109
|
+
path: '/projects/{id}/documents',
|
|
1110
|
+
tag: 'Documents',
|
|
1111
|
+
summary: 'List documents in a project',
|
|
1112
|
+
body: false,
|
|
1113
|
+
response: 'json',
|
|
1114
|
+
params: [
|
|
1115
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
1116
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
1117
|
+
]
|
|
1118
|
+
},
|
|
1119
|
+
list_files: {
|
|
1120
|
+
method: 'GET',
|
|
1121
|
+
path: '/files',
|
|
1122
|
+
tag: 'Files',
|
|
1123
|
+
summary: 'List files in a project',
|
|
1124
|
+
body: false,
|
|
1125
|
+
response: 'json',
|
|
1126
|
+
params: [
|
|
1127
|
+
{ name: 'projectId', in: 'query', required: true, kind: 'string' },
|
|
1128
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
1129
|
+
]
|
|
1130
|
+
},
|
|
1131
|
+
list_folder_contents: {
|
|
1132
|
+
method: 'GET',
|
|
1133
|
+
path: '/folders/contents',
|
|
1134
|
+
tag: 'Folders',
|
|
1135
|
+
summary: 'List files and folders inside a folder',
|
|
1136
|
+
body: false,
|
|
1137
|
+
response: 'json',
|
|
1138
|
+
params: [
|
|
1139
|
+
{ name: 'projectId', in: 'query', required: true, kind: 'string', description: 'Convex project ID' },
|
|
1140
|
+
{ name: 'parentId', in: 'query', required: false, kind: 'string' }
|
|
1141
|
+
]
|
|
1142
|
+
},
|
|
1143
|
+
list_folders: {
|
|
1144
|
+
method: 'GET',
|
|
1145
|
+
path: '/folders',
|
|
1146
|
+
tag: 'Folders',
|
|
1147
|
+
summary: 'List folders in a project',
|
|
1148
|
+
body: false,
|
|
1149
|
+
response: 'json',
|
|
1150
|
+
params: [
|
|
1151
|
+
{ name: 'projectId', in: 'query', required: true, kind: 'string', description: 'Convex project ID' }
|
|
1152
|
+
]
|
|
1153
|
+
},
|
|
1154
|
+
list_groups: {
|
|
1155
|
+
method: 'GET',
|
|
1156
|
+
path: '/projects/{id}/groups',
|
|
1157
|
+
tag: 'Takeoff',
|
|
1158
|
+
summary: 'List takeoff groups in a project',
|
|
1159
|
+
body: false,
|
|
1160
|
+
response: 'json',
|
|
1161
|
+
params: [
|
|
1162
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' }
|
|
1163
|
+
]
|
|
1164
|
+
},
|
|
1165
|
+
list_installations: {
|
|
1166
|
+
method: 'GET',
|
|
1167
|
+
path: '/installations',
|
|
1168
|
+
tag: 'Account',
|
|
1169
|
+
summary: 'List the companies where the calling app is installed',
|
|
1170
|
+
body: false,
|
|
1171
|
+
response: 'json',
|
|
1172
|
+
params: [
|
|
1173
|
+
{ name: 'limit', in: 'query', required: false, kind: 'integer', description: 'Companies per page (1 to 100, default 50).' },
|
|
1174
|
+
{ name: 'cursor', in: 'query', required: false, kind: 'string', description: '`nextCursor` from the previous page.' }
|
|
1175
|
+
]
|
|
1176
|
+
},
|
|
1177
|
+
list_integrations: {
|
|
1178
|
+
method: 'GET',
|
|
1179
|
+
path: '/integrations',
|
|
1180
|
+
tag: 'Integrations',
|
|
1181
|
+
summary: 'List integrations connected to an organization',
|
|
1182
|
+
body: false,
|
|
1183
|
+
response: 'json',
|
|
1184
|
+
params: [
|
|
1185
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
1186
|
+
]
|
|
1187
|
+
},
|
|
1188
|
+
list_labor_crews: {
|
|
1189
|
+
method: 'GET',
|
|
1190
|
+
path: '/labor/crews',
|
|
1191
|
+
tag: 'Labor',
|
|
1192
|
+
summary: 'List labor crews',
|
|
1193
|
+
body: false,
|
|
1194
|
+
response: 'json',
|
|
1195
|
+
params: [
|
|
1196
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1197
|
+
{ name: 'includeInactive', in: 'query', required: false, kind: 'boolean' }
|
|
1198
|
+
]
|
|
1199
|
+
},
|
|
1200
|
+
list_labor_equipment: {
|
|
1201
|
+
method: 'GET',
|
|
1202
|
+
path: '/labor/equipment',
|
|
1203
|
+
tag: 'Labor',
|
|
1204
|
+
summary: 'List labor equipment',
|
|
1205
|
+
body: false,
|
|
1206
|
+
response: 'json',
|
|
1207
|
+
params: [
|
|
1208
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1209
|
+
{ name: 'category', in: 'query', required: false, kind: 'string' },
|
|
1210
|
+
{ name: 'includeInactive', in: 'query', required: false, kind: 'boolean' }
|
|
1211
|
+
]
|
|
1212
|
+
},
|
|
1213
|
+
list_labor_rates: {
|
|
1214
|
+
method: 'GET',
|
|
1215
|
+
path: '/labor/rates',
|
|
1216
|
+
tag: 'Labor',
|
|
1217
|
+
summary: 'List labor rates',
|
|
1218
|
+
body: false,
|
|
1219
|
+
response: 'json',
|
|
1220
|
+
params: [
|
|
1221
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1222
|
+
{ name: 'includeInactive', in: 'query', required: false, kind: 'boolean' }
|
|
1223
|
+
]
|
|
1224
|
+
},
|
|
1225
|
+
list_layers: {
|
|
1226
|
+
method: 'GET',
|
|
1227
|
+
path: '/projects/{id}/layers',
|
|
1228
|
+
tag: 'Takeoff',
|
|
1229
|
+
summary: 'List takeoff layers in a project',
|
|
1230
|
+
body: false,
|
|
1231
|
+
response: 'json',
|
|
1232
|
+
params: [
|
|
1233
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
1234
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
1235
|
+
]
|
|
1236
|
+
},
|
|
1237
|
+
list_lists: {
|
|
1238
|
+
method: 'GET',
|
|
1239
|
+
path: '/lists',
|
|
1240
|
+
tag: 'Lists',
|
|
1241
|
+
summary: 'List product lists and takeoff templates',
|
|
1242
|
+
body: false,
|
|
1243
|
+
response: 'json',
|
|
1244
|
+
params: [
|
|
1245
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1246
|
+
{ name: 'type', in: 'query', required: false, kind: 'string', enum: ['product', 'takeoffTemplate'] },
|
|
1247
|
+
{ name: 'category', in: 'query', required: false, kind: 'string' },
|
|
1248
|
+
{ name: 'includeInactive', in: 'query', required: false, kind: 'boolean' }
|
|
1249
|
+
]
|
|
1250
|
+
},
|
|
1251
|
+
list_measurements_by_page: {
|
|
1252
|
+
method: 'GET',
|
|
1253
|
+
path: '/pages/{id}/measurements',
|
|
1254
|
+
tag: 'Takeoff',
|
|
1255
|
+
summary: 'List measurements on a page',
|
|
1256
|
+
body: false,
|
|
1257
|
+
response: 'json',
|
|
1258
|
+
params: [
|
|
1259
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex page ID' }
|
|
1260
|
+
]
|
|
1261
|
+
},
|
|
1262
|
+
list_measurements_by_symbol: {
|
|
1263
|
+
method: 'GET',
|
|
1264
|
+
path: '/symbols/{id}/measurements',
|
|
1265
|
+
tag: 'Takeoff',
|
|
1266
|
+
summary: 'List measurements for a symbol',
|
|
1267
|
+
body: false,
|
|
1268
|
+
response: 'json',
|
|
1269
|
+
params: [
|
|
1270
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex takeoff symbol ID' },
|
|
1271
|
+
{ name: 'projectId', in: 'query', required: true, kind: 'string' }
|
|
1272
|
+
]
|
|
1273
|
+
},
|
|
1274
|
+
list_messages: {
|
|
1275
|
+
method: 'GET',
|
|
1276
|
+
path: '/projects/{id}/messages',
|
|
1277
|
+
tag: 'Messages',
|
|
1278
|
+
summary: 'List project activity messages',
|
|
1279
|
+
body: false,
|
|
1280
|
+
response: 'json',
|
|
1281
|
+
params: [
|
|
1282
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
1283
|
+
{ name: 'pageId', in: 'query', required: false, kind: 'string' }
|
|
1284
|
+
]
|
|
1285
|
+
},
|
|
1286
|
+
list_notifications: {
|
|
1287
|
+
method: 'GET',
|
|
1288
|
+
path: '/notifications',
|
|
1289
|
+
tag: 'Notifications',
|
|
1290
|
+
summary: 'List notifications for the caller',
|
|
1291
|
+
body: false,
|
|
1292
|
+
response: 'json',
|
|
1293
|
+
params: [
|
|
1294
|
+
{ name: 'limit', in: 'query', required: false, kind: 'integer' },
|
|
1295
|
+
{ name: 'cursor', in: 'query', required: false, kind: 'string' }
|
|
1296
|
+
]
|
|
1297
|
+
},
|
|
1298
|
+
list_org_documents: {
|
|
1299
|
+
method: 'GET',
|
|
1300
|
+
path: '/documents',
|
|
1301
|
+
tag: 'Documents',
|
|
1302
|
+
summary: 'List documents in the organization',
|
|
1303
|
+
body: false,
|
|
1304
|
+
response: 'json',
|
|
1305
|
+
params: [
|
|
1306
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1307
|
+
{ name: 'type', in: 'query', required: false, kind: 'string' },
|
|
1308
|
+
{ name: 'limit', in: 'query', required: false, kind: 'integer' }
|
|
1309
|
+
]
|
|
1310
|
+
},
|
|
1311
|
+
list_organizations: {
|
|
1312
|
+
method: 'GET',
|
|
1313
|
+
path: '/organizations',
|
|
1314
|
+
tag: 'Account',
|
|
1315
|
+
summary: 'List the companies your app\'s company owns',
|
|
1316
|
+
body: false,
|
|
1317
|
+
response: 'json',
|
|
1318
|
+
params: [
|
|
1319
|
+
{ name: 'limit', in: 'query', required: false, kind: 'integer', description: 'Companies per page (1 to 100, default 50).' },
|
|
1320
|
+
{ name: 'cursor', in: 'query', required: false, kind: 'string', description: '`nextCursor` from the previous page.' }
|
|
1321
|
+
]
|
|
1322
|
+
},
|
|
1323
|
+
list_pages: {
|
|
1324
|
+
method: 'GET',
|
|
1325
|
+
path: '/projects/{id}/pages',
|
|
1326
|
+
tag: 'Pages',
|
|
1327
|
+
summary: 'List pages in a project, grouped by file',
|
|
1328
|
+
body: false,
|
|
1329
|
+
response: 'json',
|
|
1330
|
+
params: [
|
|
1331
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
1332
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
1333
|
+
]
|
|
1334
|
+
},
|
|
1335
|
+
list_products: {
|
|
1336
|
+
method: 'GET',
|
|
1337
|
+
path: '/products',
|
|
1338
|
+
tag: 'Products',
|
|
1339
|
+
summary: 'List products in an organization',
|
|
1340
|
+
body: false,
|
|
1341
|
+
response: 'json',
|
|
1342
|
+
params: [
|
|
1343
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1344
|
+
{ name: 'search', in: 'query', required: false, kind: 'string' },
|
|
1345
|
+
{ name: 'limit', in: 'query', required: false, kind: 'integer' }
|
|
1346
|
+
]
|
|
1347
|
+
},
|
|
1348
|
+
list_products_in_list: {
|
|
1349
|
+
method: 'GET',
|
|
1350
|
+
path: '/lists/{id}/products',
|
|
1351
|
+
tag: 'Products',
|
|
1352
|
+
summary: 'List products in a list',
|
|
1353
|
+
body: false,
|
|
1354
|
+
response: 'json',
|
|
1355
|
+
params: [
|
|
1356
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex product list ID' },
|
|
1357
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
1358
|
+
]
|
|
1359
|
+
},
|
|
1360
|
+
list_project_conversations: {
|
|
1361
|
+
method: 'GET',
|
|
1362
|
+
path: '/projects/{id}/conversations',
|
|
1363
|
+
tag: 'Conversations',
|
|
1364
|
+
summary: 'List conversations in a project',
|
|
1365
|
+
body: false,
|
|
1366
|
+
response: 'json',
|
|
1367
|
+
params: [
|
|
1368
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
1369
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1370
|
+
{ name: 'type', in: 'query', required: false, kind: 'string', enum: ['ai_chat', 'project_activity', 'widget_chat'] }
|
|
1371
|
+
]
|
|
1372
|
+
},
|
|
1373
|
+
list_projects: {
|
|
1374
|
+
method: 'GET',
|
|
1375
|
+
path: '/projects',
|
|
1376
|
+
tag: 'Projects',
|
|
1377
|
+
summary: 'List projects in an organization',
|
|
1378
|
+
body: false,
|
|
1379
|
+
response: 'json',
|
|
1380
|
+
params: [
|
|
1381
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1382
|
+
{ name: 'status', in: 'query', required: false, kind: 'string', enum: ['lead', 'contacted', 'qualified', 'active', 'archived'] },
|
|
1383
|
+
{ name: 'search', in: 'query', required: false, kind: 'string' }
|
|
1384
|
+
]
|
|
1385
|
+
},
|
|
1386
|
+
list_spreadsheets: {
|
|
1387
|
+
method: 'GET',
|
|
1388
|
+
path: '/projects/{id}/spreadsheets',
|
|
1389
|
+
tag: 'Spreadsheets',
|
|
1390
|
+
summary: 'List spreadsheets in a project',
|
|
1391
|
+
body: false,
|
|
1392
|
+
response: 'json',
|
|
1393
|
+
params: [
|
|
1394
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
1395
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
1396
|
+
]
|
|
1397
|
+
},
|
|
1398
|
+
list_symbol_line_items: {
|
|
1399
|
+
method: 'GET',
|
|
1400
|
+
path: '/symbols/{id}/line-items',
|
|
1401
|
+
tag: 'Takeoff',
|
|
1402
|
+
summary: 'List all line items on a takeoff symbol',
|
|
1403
|
+
body: false,
|
|
1404
|
+
response: 'json',
|
|
1405
|
+
params: [
|
|
1406
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex takeoff symbol ID' },
|
|
1407
|
+
{ name: 'projectId', in: 'query', required: true, kind: 'string' }
|
|
1408
|
+
]
|
|
1409
|
+
},
|
|
1410
|
+
list_symbols: {
|
|
1411
|
+
method: 'GET',
|
|
1412
|
+
path: '/projects/{id}/symbols',
|
|
1413
|
+
tag: 'Takeoff',
|
|
1414
|
+
summary: 'List takeoff symbols in a project',
|
|
1415
|
+
body: false,
|
|
1416
|
+
response: 'json',
|
|
1417
|
+
params: [
|
|
1418
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
1419
|
+
{ name: 'type', in: 'query', required: false, kind: 'string', enum: ['count', 'linear', 'area'] },
|
|
1420
|
+
{ name: 'source', in: 'query', required: false, kind: 'string', enum: ['ai', 'manual'] },
|
|
1421
|
+
{ name: 'category', in: 'query', required: false, kind: 'string' }
|
|
1422
|
+
]
|
|
1423
|
+
},
|
|
1424
|
+
list_vendor_quotes: {
|
|
1425
|
+
method: 'GET',
|
|
1426
|
+
path: '/projects/{id}/quotes',
|
|
1427
|
+
tag: 'Vendor quotes',
|
|
1428
|
+
summary: 'List vendor quotes on a project',
|
|
1429
|
+
body: false,
|
|
1430
|
+
response: 'json',
|
|
1431
|
+
params: [
|
|
1432
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
1433
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1434
|
+
{ name: 'status', in: 'query', required: false, kind: 'string', enum: ['requested', 'received', 'accepted', 'rejected', 'expired'] }
|
|
1435
|
+
]
|
|
1436
|
+
},
|
|
1437
|
+
list_vendors: {
|
|
1438
|
+
method: 'GET',
|
|
1439
|
+
path: '/vendors',
|
|
1440
|
+
tag: 'Vendors',
|
|
1441
|
+
summary: 'List vendors in an organization',
|
|
1442
|
+
body: false,
|
|
1443
|
+
response: 'json',
|
|
1444
|
+
params: [
|
|
1445
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1446
|
+
{ name: 'type', in: 'query', required: false, kind: 'string', enum: ['supplier', 'subcontractor', 'rental'] },
|
|
1447
|
+
{ name: 'kind', in: 'query', required: false, kind: 'string', enum: ['sub', 'supplier', 'surety', 'insurer', 'agency', 'owner', 'architect', 'engineer', 'other'] },
|
|
1448
|
+
{ name: 'preferredOnly', in: 'query', required: false, kind: 'boolean' },
|
|
1449
|
+
{ name: 'search', in: 'query', required: false, kind: 'string' },
|
|
1450
|
+
{ name: 'limit', in: 'query', required: false, kind: 'integer' }
|
|
1451
|
+
]
|
|
1452
|
+
},
|
|
1453
|
+
list_webhook_deliveries: {
|
|
1454
|
+
method: 'GET',
|
|
1455
|
+
path: '/webhook_endpoints/{id}/deliveries',
|
|
1456
|
+
tag: 'Webhooks',
|
|
1457
|
+
summary: 'List deliveries for a webhook endpoint',
|
|
1458
|
+
body: false,
|
|
1459
|
+
response: 'json',
|
|
1460
|
+
params: [
|
|
1461
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
1462
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1463
|
+
{ name: 'limit', in: 'query', required: false, kind: 'integer' }
|
|
1464
|
+
]
|
|
1465
|
+
},
|
|
1466
|
+
list_webhook_endpoints: {
|
|
1467
|
+
method: 'GET',
|
|
1468
|
+
path: '/webhook_endpoints',
|
|
1469
|
+
tag: 'Webhooks',
|
|
1470
|
+
summary: 'List webhook endpoints in an organization',
|
|
1471
|
+
body: false,
|
|
1472
|
+
response: 'json',
|
|
1473
|
+
params: [
|
|
1474
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
1475
|
+
]
|
|
1476
|
+
},
|
|
1477
|
+
list_widget_conversations: {
|
|
1478
|
+
method: 'GET',
|
|
1479
|
+
path: '/widgets/{id}/conversations',
|
|
1480
|
+
tag: 'Conversations',
|
|
1481
|
+
summary: 'List a widget’s inbox conversations',
|
|
1482
|
+
body: false,
|
|
1483
|
+
response: 'json',
|
|
1484
|
+
params: [
|
|
1485
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex widget ID' },
|
|
1486
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1487
|
+
{ name: 'status', in: 'query', required: false, kind: 'string', enum: ['bot', 'open', 'snoozed', 'closed'] },
|
|
1488
|
+
{ name: 'search', in: 'query', required: false, kind: 'string' },
|
|
1489
|
+
{ name: 'limit', in: 'query', required: false, kind: 'integer' }
|
|
1490
|
+
]
|
|
1491
|
+
},
|
|
1492
|
+
list_widgets: {
|
|
1493
|
+
method: 'GET',
|
|
1494
|
+
path: '/widgets',
|
|
1495
|
+
tag: 'Widgets',
|
|
1496
|
+
summary: 'List widgets in an organization',
|
|
1497
|
+
body: false,
|
|
1498
|
+
response: 'json',
|
|
1499
|
+
params: [
|
|
1500
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
1501
|
+
]
|
|
1502
|
+
},
|
|
1503
|
+
mark_all_notifications_read: {
|
|
1504
|
+
method: 'POST',
|
|
1505
|
+
path: '/notifications/mark-all-read',
|
|
1506
|
+
tag: 'Notifications',
|
|
1507
|
+
summary: 'Mark all notifications as read',
|
|
1508
|
+
body: false,
|
|
1509
|
+
response: 'empty',
|
|
1510
|
+
params: []
|
|
1511
|
+
},
|
|
1512
|
+
mark_notification_read: {
|
|
1513
|
+
method: 'POST',
|
|
1514
|
+
path: '/notifications/{id}/read',
|
|
1515
|
+
tag: 'Notifications',
|
|
1516
|
+
summary: 'Mark a notification as read',
|
|
1517
|
+
body: false,
|
|
1518
|
+
response: 'empty',
|
|
1519
|
+
params: [
|
|
1520
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' }
|
|
1521
|
+
]
|
|
1522
|
+
},
|
|
1523
|
+
patch_symbol_line_item: {
|
|
1524
|
+
method: 'PATCH',
|
|
1525
|
+
path: '/symbols/{symbolId}/line-items/{id}',
|
|
1526
|
+
tag: 'Takeoff',
|
|
1527
|
+
summary: 'Update a line item on a symbol',
|
|
1528
|
+
body: true,
|
|
1529
|
+
response: 'empty',
|
|
1530
|
+
params: [
|
|
1531
|
+
{ name: 'symbolId', in: 'path', required: true, kind: 'string', description: 'Convex takeoff symbol ID' },
|
|
1532
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
1533
|
+
{ name: 'projectId', in: 'body', required: true, kind: 'string', description: 'Convex project ID' },
|
|
1534
|
+
{ name: 'patch', in: 'body', required: true, kind: 'object', description: 'Only the fields to change' }
|
|
1535
|
+
]
|
|
1536
|
+
},
|
|
1537
|
+
presign_file_upload: {
|
|
1538
|
+
method: 'POST',
|
|
1539
|
+
path: '/files',
|
|
1540
|
+
tag: 'Files',
|
|
1541
|
+
summary: 'Start a file upload — returns a presigned R2 URL',
|
|
1542
|
+
body: true,
|
|
1543
|
+
response: 'json',
|
|
1544
|
+
params: [
|
|
1545
|
+
{ name: 'projectId', in: 'body', required: true, kind: 'string', description: 'Convex project ID' },
|
|
1546
|
+
{ name: 'filename', in: 'body', required: true, kind: 'string' },
|
|
1547
|
+
{ name: 'mimeType', in: 'body', required: true, kind: 'string' },
|
|
1548
|
+
{ name: 'fileSize', in: 'body', required: true, kind: 'integer', description: 'File size in bytes (max 500 MB)' },
|
|
1549
|
+
{ name: 'folderId', in: 'body', required: false, kind: 'string', description: 'Convex folder ID' },
|
|
1550
|
+
{ name: 'dimensions', in: 'body', required: false, kind: 'object' }
|
|
1551
|
+
]
|
|
1552
|
+
},
|
|
1553
|
+
propose_analysis: {
|
|
1554
|
+
method: 'POST',
|
|
1555
|
+
path: '/projects/{id}/analysis/propose',
|
|
1556
|
+
tag: 'Takeoff',
|
|
1557
|
+
summary: 'Propose an AI-generated analysis from a natural-language prompt',
|
|
1558
|
+
body: true,
|
|
1559
|
+
response: 'json',
|
|
1560
|
+
params: [
|
|
1561
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
1562
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1563
|
+
{ name: 'prompt', in: 'body', required: true, kind: 'string', description: 'Natural-language description of what to measure' },
|
|
1564
|
+
{ name: 'pageIds', in: 'body', required: false, kind: 'array', description: 'Page IDs to propose against. Defaults to the project\'s first page.' },
|
|
1565
|
+
{ name: 'fileIds', in: 'body', required: false, kind: 'array', description: 'File IDs to scope the proposal to. When set, only pages belonging to these files are considered — pass the IDs from the [Attached files: ...] note in the user\'s message so a fresh upload doesn\'t pull in older project files. Wins over pageIds.' }
|
|
1566
|
+
]
|
|
1567
|
+
},
|
|
1568
|
+
provision_cma: {
|
|
1569
|
+
method: 'POST',
|
|
1570
|
+
path: '/cma/provision',
|
|
1571
|
+
tag: 'Account',
|
|
1572
|
+
summary: 'Provision or rotate the caller’s Managed Agents vault',
|
|
1573
|
+
body: false,
|
|
1574
|
+
response: 'json',
|
|
1575
|
+
params: []
|
|
1576
|
+
},
|
|
1577
|
+
receive_vendor_quote: {
|
|
1578
|
+
method: 'PATCH',
|
|
1579
|
+
path: '/quotes/{id}/receive',
|
|
1580
|
+
tag: 'Vendor quotes',
|
|
1581
|
+
summary: 'Record a vendor quote response',
|
|
1582
|
+
body: true,
|
|
1583
|
+
response: 'json',
|
|
1584
|
+
params: [
|
|
1585
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
1586
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1587
|
+
{ name: 'lineItems', in: 'body', required: true, kind: 'array' },
|
|
1588
|
+
{ name: 'subtotal', in: 'body', required: true, kind: 'number', description: 'Sum of the line items\' totalPrice when lineItems are sent' },
|
|
1589
|
+
{ name: 'tax', in: 'body', required: false, kind: 'number' },
|
|
1590
|
+
{ name: 'shipping', in: 'body', required: false, kind: 'number' },
|
|
1591
|
+
{ name: 'total', in: 'body', required: true, kind: 'number', description: 'Must equal subtotal + tax + shipping (an absent amount counts as 0)' },
|
|
1592
|
+
{ name: 'validUntil', in: 'body', required: false, kind: 'number' }
|
|
1593
|
+
]
|
|
1594
|
+
},
|
|
1595
|
+
remove_custom_property: {
|
|
1596
|
+
method: 'DELETE',
|
|
1597
|
+
path: '/custom-properties/{id}',
|
|
1598
|
+
tag: 'Custom properties',
|
|
1599
|
+
summary: 'Archive a custom property',
|
|
1600
|
+
body: false,
|
|
1601
|
+
response: 'empty',
|
|
1602
|
+
params: [
|
|
1603
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex custom property ID' },
|
|
1604
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
1605
|
+
]
|
|
1606
|
+
},
|
|
1607
|
+
remove_file: {
|
|
1608
|
+
method: 'DELETE',
|
|
1609
|
+
path: '/files/{id}',
|
|
1610
|
+
tag: 'Files',
|
|
1611
|
+
summary: 'Soft-delete a file',
|
|
1612
|
+
body: false,
|
|
1613
|
+
response: 'empty',
|
|
1614
|
+
params: [
|
|
1615
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex file ID' }
|
|
1616
|
+
]
|
|
1617
|
+
},
|
|
1618
|
+
remove_folder: {
|
|
1619
|
+
method: 'DELETE',
|
|
1620
|
+
path: '/folders/{id}',
|
|
1621
|
+
tag: 'Folders',
|
|
1622
|
+
summary: 'Delete a folder',
|
|
1623
|
+
body: false,
|
|
1624
|
+
response: 'empty',
|
|
1625
|
+
params: [
|
|
1626
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex folder ID' }
|
|
1627
|
+
]
|
|
1628
|
+
},
|
|
1629
|
+
remove_group: {
|
|
1630
|
+
method: 'DELETE',
|
|
1631
|
+
path: '/groups/{id}',
|
|
1632
|
+
tag: 'Takeoff',
|
|
1633
|
+
summary: 'Delete a takeoff group',
|
|
1634
|
+
body: false,
|
|
1635
|
+
response: 'empty',
|
|
1636
|
+
params: [
|
|
1637
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex takeoff group ID' },
|
|
1638
|
+
{ name: 'projectId', in: 'query', required: true, kind: 'string' }
|
|
1639
|
+
]
|
|
1640
|
+
},
|
|
1641
|
+
remove_layer: {
|
|
1642
|
+
method: 'DELETE',
|
|
1643
|
+
path: '/layers/{id}',
|
|
1644
|
+
tag: 'Takeoff',
|
|
1645
|
+
summary: 'Delete a takeoff layer',
|
|
1646
|
+
body: false,
|
|
1647
|
+
response: 'empty',
|
|
1648
|
+
params: [
|
|
1649
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex takeoff layer ID' },
|
|
1650
|
+
{ name: 'projectId', in: 'query', required: true, kind: 'string' }
|
|
1651
|
+
]
|
|
1652
|
+
},
|
|
1653
|
+
remove_measurement: {
|
|
1654
|
+
method: 'DELETE',
|
|
1655
|
+
path: '/pages/{pageId}/measurements/{shapeId}',
|
|
1656
|
+
tag: 'Takeoff',
|
|
1657
|
+
summary: 'Delete a measurement by shape ID',
|
|
1658
|
+
body: false,
|
|
1659
|
+
response: 'empty',
|
|
1660
|
+
params: [
|
|
1661
|
+
{ name: 'pageId', in: 'path', required: true, kind: 'string', description: 'Convex page ID' },
|
|
1662
|
+
{ name: 'shapeId', in: 'path', required: true, kind: 'string' }
|
|
1663
|
+
]
|
|
1664
|
+
},
|
|
1665
|
+
remove_message: {
|
|
1666
|
+
method: 'DELETE',
|
|
1667
|
+
path: '/messages/{id}',
|
|
1668
|
+
tag: 'Messages',
|
|
1669
|
+
summary: 'Delete a message',
|
|
1670
|
+
body: false,
|
|
1671
|
+
response: 'empty',
|
|
1672
|
+
params: [
|
|
1673
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex chat message ID' }
|
|
1674
|
+
]
|
|
1675
|
+
},
|
|
1676
|
+
remove_symbol: {
|
|
1677
|
+
method: 'DELETE',
|
|
1678
|
+
path: '/symbols/{id}',
|
|
1679
|
+
tag: 'Takeoff',
|
|
1680
|
+
summary: 'Delete a takeoff symbol',
|
|
1681
|
+
body: false,
|
|
1682
|
+
response: 'empty',
|
|
1683
|
+
params: [
|
|
1684
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex takeoff symbol ID' },
|
|
1685
|
+
{ name: 'projectId', in: 'query', required: true, kind: 'string' }
|
|
1686
|
+
]
|
|
1687
|
+
},
|
|
1688
|
+
remove_symbol_line_item: {
|
|
1689
|
+
method: 'DELETE',
|
|
1690
|
+
path: '/symbols/{symbolId}/line-items/{id}',
|
|
1691
|
+
tag: 'Takeoff',
|
|
1692
|
+
summary: 'Remove a line item from a symbol',
|
|
1693
|
+
body: false,
|
|
1694
|
+
response: 'empty',
|
|
1695
|
+
params: [
|
|
1696
|
+
{ name: 'symbolId', in: 'path', required: true, kind: 'string', description: 'Convex takeoff symbol ID' },
|
|
1697
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
1698
|
+
{ name: 'projectId', in: 'query', required: true, kind: 'string' }
|
|
1699
|
+
]
|
|
1700
|
+
},
|
|
1701
|
+
remove_vendor_price: {
|
|
1702
|
+
method: 'DELETE',
|
|
1703
|
+
path: '/products/{productId}/prices/{vendorId}',
|
|
1704
|
+
tag: 'Vendor prices',
|
|
1705
|
+
summary: 'Remove a vendor price',
|
|
1706
|
+
body: false,
|
|
1707
|
+
response: 'empty',
|
|
1708
|
+
params: [
|
|
1709
|
+
{ name: 'productId', in: 'path', required: true, kind: 'string', description: 'Convex product ID' },
|
|
1710
|
+
{ name: 'vendorId', in: 'path', required: true, kind: 'string', description: 'Convex vendor ID' },
|
|
1711
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
1712
|
+
]
|
|
1713
|
+
},
|
|
1714
|
+
remove_widget: {
|
|
1715
|
+
method: 'DELETE',
|
|
1716
|
+
path: '/widgets/{id}',
|
|
1717
|
+
tag: 'Widgets',
|
|
1718
|
+
summary: 'Delete a widget',
|
|
1719
|
+
body: false,
|
|
1720
|
+
response: 'empty',
|
|
1721
|
+
params: [
|
|
1722
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex widget ID' },
|
|
1723
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
1724
|
+
]
|
|
1725
|
+
},
|
|
1726
|
+
rename_file: {
|
|
1727
|
+
method: 'PATCH',
|
|
1728
|
+
path: '/files/{id}',
|
|
1729
|
+
tag: 'Files',
|
|
1730
|
+
summary: 'Rename or move a file',
|
|
1731
|
+
body: true,
|
|
1732
|
+
response: 'empty',
|
|
1733
|
+
params: [
|
|
1734
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex file ID' },
|
|
1735
|
+
{ name: 'filename', in: 'body', required: false, kind: 'string' },
|
|
1736
|
+
{ name: 'folderId', in: 'body', required: false, kind: 'string', description: 'Convex folder ID' }
|
|
1737
|
+
]
|
|
1738
|
+
},
|
|
1739
|
+
rename_folder: {
|
|
1740
|
+
method: 'PATCH',
|
|
1741
|
+
path: '/folders/{id}',
|
|
1742
|
+
tag: 'Folders',
|
|
1743
|
+
summary: 'Rename or move a folder',
|
|
1744
|
+
body: true,
|
|
1745
|
+
response: 'empty',
|
|
1746
|
+
params: [
|
|
1747
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex folder ID' },
|
|
1748
|
+
{ name: 'name', in: 'body', required: false, kind: 'string' },
|
|
1749
|
+
{ name: 'parentId', in: 'body', required: false, kind: 'string', description: 'Convex folder ID' }
|
|
1750
|
+
]
|
|
1751
|
+
},
|
|
1752
|
+
resend_webhook_delivery: {
|
|
1753
|
+
method: 'POST',
|
|
1754
|
+
path: '/webhook_deliveries/{id}/resend',
|
|
1755
|
+
tag: 'Webhooks',
|
|
1756
|
+
summary: 'Resend a webhook delivery',
|
|
1757
|
+
body: true,
|
|
1758
|
+
response: 'json',
|
|
1759
|
+
params: [
|
|
1760
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
1761
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
1762
|
+
]
|
|
1763
|
+
},
|
|
1764
|
+
restore_list: {
|
|
1765
|
+
method: 'POST',
|
|
1766
|
+
path: '/lists/{id}/restore',
|
|
1767
|
+
tag: 'Lists',
|
|
1768
|
+
summary: 'Restore an archived list',
|
|
1769
|
+
body: true,
|
|
1770
|
+
response: 'empty',
|
|
1771
|
+
params: [
|
|
1772
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex product list ID' },
|
|
1773
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
1774
|
+
]
|
|
1775
|
+
},
|
|
1776
|
+
restore_page: {
|
|
1777
|
+
method: 'POST',
|
|
1778
|
+
path: '/pages/{id}/restore',
|
|
1779
|
+
tag: 'Pages',
|
|
1780
|
+
summary: 'Restore an archived page',
|
|
1781
|
+
body: false,
|
|
1782
|
+
response: 'empty',
|
|
1783
|
+
params: [
|
|
1784
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex page ID' }
|
|
1785
|
+
]
|
|
1786
|
+
},
|
|
1787
|
+
restore_project: {
|
|
1788
|
+
method: 'POST',
|
|
1789
|
+
path: '/projects/{id}/restore',
|
|
1790
|
+
tag: 'Projects',
|
|
1791
|
+
summary: 'Restore an archived project',
|
|
1792
|
+
body: true,
|
|
1793
|
+
response: 'empty',
|
|
1794
|
+
params: [
|
|
1795
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
1796
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
1797
|
+
]
|
|
1798
|
+
},
|
|
1799
|
+
run_approved_analysis: {
|
|
1800
|
+
method: 'POST',
|
|
1801
|
+
path: '/projects/{id}/analysis/run',
|
|
1802
|
+
tag: 'Takeoff',
|
|
1803
|
+
summary: 'Run an approved analysis (kicks off a background AI task)',
|
|
1804
|
+
confirm: 'This operation uses AI usage.',
|
|
1805
|
+
body: true,
|
|
1806
|
+
response: 'json',
|
|
1807
|
+
params: [
|
|
1808
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
1809
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1810
|
+
{ name: 'pageIds', in: 'body', required: true, kind: 'array' },
|
|
1811
|
+
{ name: 'elements', in: 'body', required: true, kind: 'array' },
|
|
1812
|
+
{ name: 'layerName', in: 'body', required: false, kind: 'string' }
|
|
1813
|
+
]
|
|
1814
|
+
},
|
|
1815
|
+
search_help_articles: {
|
|
1816
|
+
method: 'POST',
|
|
1817
|
+
path: '/help/search',
|
|
1818
|
+
tag: 'Help',
|
|
1819
|
+
summary: 'Search help articles by keyword',
|
|
1820
|
+
body: true,
|
|
1821
|
+
response: 'json',
|
|
1822
|
+
params: [
|
|
1823
|
+
{ name: 'query', in: 'body', required: true, kind: 'string' },
|
|
1824
|
+
{ name: 'limit', in: 'body', required: false, kind: 'integer' },
|
|
1825
|
+
{ name: 'section', in: 'body', required: false, kind: 'string' }
|
|
1826
|
+
]
|
|
1827
|
+
},
|
|
1828
|
+
search_products: {
|
|
1829
|
+
method: 'GET',
|
|
1830
|
+
path: '/products/search',
|
|
1831
|
+
tag: 'Products',
|
|
1832
|
+
summary: 'Full-text search products',
|
|
1833
|
+
body: false,
|
|
1834
|
+
response: 'json',
|
|
1835
|
+
params: [
|
|
1836
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1837
|
+
{ name: 'query', in: 'query', required: true, kind: 'string' },
|
|
1838
|
+
{ name: 'limit', in: 'query', required: false, kind: 'integer' }
|
|
1839
|
+
]
|
|
1840
|
+
},
|
|
1841
|
+
search_project_files: {
|
|
1842
|
+
method: 'GET',
|
|
1843
|
+
path: '/projects/{id}/files/search',
|
|
1844
|
+
tag: 'Files',
|
|
1845
|
+
summary: 'Search pages in a project by name or indexed content',
|
|
1846
|
+
body: false,
|
|
1847
|
+
response: 'json',
|
|
1848
|
+
params: [
|
|
1849
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
1850
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1851
|
+
{ name: 'query', in: 'query', required: false, kind: 'string' }
|
|
1852
|
+
]
|
|
1853
|
+
},
|
|
1854
|
+
search_project_line_items: {
|
|
1855
|
+
method: 'GET',
|
|
1856
|
+
path: '/projects/{id}/line-items',
|
|
1857
|
+
tag: 'Takeoff',
|
|
1858
|
+
summary: 'Search line items across all symbols in a project',
|
|
1859
|
+
body: false,
|
|
1860
|
+
response: 'json',
|
|
1861
|
+
params: [
|
|
1862
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
1863
|
+
{ name: 'query', in: 'query', required: false, kind: 'string' },
|
|
1864
|
+
{ name: 'takeoffType', in: 'query', required: false, kind: 'string', enum: ['count', 'linear', 'area'] },
|
|
1865
|
+
{ name: 'limit', in: 'query', required: false, kind: 'integer' }
|
|
1866
|
+
]
|
|
1867
|
+
},
|
|
1868
|
+
search_vendors: {
|
|
1869
|
+
method: 'GET',
|
|
1870
|
+
path: '/vendors/search',
|
|
1871
|
+
tag: 'Vendors',
|
|
1872
|
+
summary: 'Full-text search vendors',
|
|
1873
|
+
body: false,
|
|
1874
|
+
response: 'json',
|
|
1875
|
+
params: [
|
|
1876
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1877
|
+
{ name: 'query', in: 'query', required: true, kind: 'string' },
|
|
1878
|
+
{ name: 'limit', in: 'query', required: false, kind: 'integer' }
|
|
1879
|
+
]
|
|
1880
|
+
},
|
|
1881
|
+
send_cma_message: {
|
|
1882
|
+
method: 'POST',
|
|
1883
|
+
path: '/cma/chat',
|
|
1884
|
+
tag: 'Account',
|
|
1885
|
+
summary: 'Send a message to the Managed Agent and return its reply',
|
|
1886
|
+
body: true,
|
|
1887
|
+
response: 'json',
|
|
1888
|
+
params: [
|
|
1889
|
+
{ name: 'message', in: 'body', required: true, kind: 'string' },
|
|
1890
|
+
{ name: 'sessionId', in: 'body', required: false, kind: 'string' },
|
|
1891
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'The organization this message is for and is billed to (memberships[].orgId in GET /v1/me). You must be a member of it; on the session of one of your Exayard conversations it must be that conversation\'s organization. Required unless sessionId is the session of one of your Exayard conversations (else 400). An organization without enough credits is answered 402.' }
|
|
1892
|
+
]
|
|
1893
|
+
},
|
|
1894
|
+
send_webhook_listener_test: {
|
|
1895
|
+
method: 'POST',
|
|
1896
|
+
path: '/webhook_listeners/{id}/test',
|
|
1897
|
+
tag: 'Webhooks',
|
|
1898
|
+
summary: 'Send a test event to a webhook listener',
|
|
1899
|
+
body: true,
|
|
1900
|
+
response: 'json',
|
|
1901
|
+
params: [
|
|
1902
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
1903
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1904
|
+
{ name: 'type', in: 'body', required: true, kind: 'string', enum: ['project.created', 'project.updated', 'project.archived', 'assessment.started', 'assessment.completed', 'assessment.cancelled', 'assessment.failed', 'estimate.generated', 'bid.generated', 'bid.submitted', 'bid.won', 'bid.lost', 'bid.accepted', 'bid.declined', 'bid.sent', 'bid.viewed', 'bid.commented', 'file.processed', 'addendum.uploaded', 'quote.requested', 'quote.received', 'quote.accepted', 'quote.rejected', 'quote.expired', 'conversation.started', 'conversation.handoff_requested', 'conversation.closed', 'lead.captured', 'contact.created', 'appointment.booked', 'appointment.rescheduled', 'appointment.cancelled', 'call.completed', 'call.missed', 'review.requested', 'job.written_back', 'payment.captured', 'payment.failed'] }
|
|
1905
|
+
]
|
|
1906
|
+
},
|
|
1907
|
+
send_webhook_test_event: {
|
|
1908
|
+
method: 'POST',
|
|
1909
|
+
path: '/webhook_endpoints/{id}/test',
|
|
1910
|
+
tag: 'Webhooks',
|
|
1911
|
+
summary: 'Send a test event to a webhook endpoint',
|
|
1912
|
+
body: true,
|
|
1913
|
+
response: 'json',
|
|
1914
|
+
params: [
|
|
1915
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
1916
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1917
|
+
{ name: 'type', in: 'body', required: true, kind: 'string', enum: ['project.created', 'project.updated', 'project.archived', 'assessment.started', 'assessment.completed', 'assessment.cancelled', 'assessment.failed', 'estimate.generated', 'bid.generated', 'bid.submitted', 'bid.won', 'bid.lost', 'bid.accepted', 'bid.declined', 'bid.sent', 'bid.viewed', 'bid.commented', 'file.processed', 'addendum.uploaded', 'quote.requested', 'quote.received', 'quote.accepted', 'quote.rejected', 'quote.expired', 'conversation.started', 'conversation.handoff_requested', 'conversation.closed', 'lead.captured', 'contact.created', 'appointment.booked', 'appointment.rescheduled', 'appointment.cancelled', 'call.completed', 'call.missed', 'review.requested', 'job.written_back', 'payment.captured', 'payment.failed'] }
|
|
1918
|
+
]
|
|
1919
|
+
},
|
|
1920
|
+
set_document_sharing: {
|
|
1921
|
+
method: 'PATCH',
|
|
1922
|
+
path: '/documents/{id}/share',
|
|
1923
|
+
tag: 'Documents',
|
|
1924
|
+
summary: 'Turn document sharing on or off',
|
|
1925
|
+
body: true,
|
|
1926
|
+
response: 'json',
|
|
1927
|
+
params: [
|
|
1928
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex document ID' },
|
|
1929
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1930
|
+
{ name: 'enabled', in: 'body', required: true, kind: 'boolean', description: 'true mints (or reuses) the public share link and turns sharing on; false revokes access while keeping the secret for later re-enabling.' }
|
|
1931
|
+
]
|
|
1932
|
+
},
|
|
1933
|
+
set_vendor_price: {
|
|
1934
|
+
method: 'PUT',
|
|
1935
|
+
path: '/products/{productId}/prices/{vendorId}',
|
|
1936
|
+
tag: 'Vendor prices',
|
|
1937
|
+
summary: 'Create or update a vendor price',
|
|
1938
|
+
body: true,
|
|
1939
|
+
response: 'json',
|
|
1940
|
+
params: [
|
|
1941
|
+
{ name: 'productId', in: 'path', required: true, kind: 'string', description: 'Convex product ID' },
|
|
1942
|
+
{ name: 'vendorId', in: 'path', required: true, kind: 'string', description: 'Convex vendor ID' },
|
|
1943
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1944
|
+
{ name: 'pricePerUnit', in: 'body', required: true, kind: 'number' },
|
|
1945
|
+
{ name: 'minOrderQuantity', in: 'body', required: false, kind: 'number' },
|
|
1946
|
+
{ name: 'volumeDiscounts', in: 'body', required: false, kind: 'array' },
|
|
1947
|
+
{ name: 'leadTimeDays', in: 'body', required: false, kind: 'integer' },
|
|
1948
|
+
{ name: 'expirationDate', in: 'body', required: false, kind: 'number' },
|
|
1949
|
+
{ name: 'notes', in: 'body', required: false, kind: 'string' }
|
|
1950
|
+
]
|
|
1951
|
+
},
|
|
1952
|
+
start_webhook_listener: {
|
|
1953
|
+
method: 'POST',
|
|
1954
|
+
path: '/webhook_listeners',
|
|
1955
|
+
tag: 'Webhooks',
|
|
1956
|
+
summary: 'Start a webhook listener (exayard listen)',
|
|
1957
|
+
body: true,
|
|
1958
|
+
response: 'json',
|
|
1959
|
+
params: [
|
|
1960
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1961
|
+
{ name: 'events', in: 'body', required: false, kind: 'array' },
|
|
1962
|
+
{ name: 'name', in: 'body', required: false, kind: 'string' }
|
|
1963
|
+
]
|
|
1964
|
+
},
|
|
1965
|
+
stop_webhook_listener: {
|
|
1966
|
+
method: 'DELETE',
|
|
1967
|
+
path: '/webhook_listeners/{id}',
|
|
1968
|
+
tag: 'Webhooks',
|
|
1969
|
+
summary: 'Stop a webhook listener',
|
|
1970
|
+
body: false,
|
|
1971
|
+
response: 'empty',
|
|
1972
|
+
params: [
|
|
1973
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
1974
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' }
|
|
1975
|
+
]
|
|
1976
|
+
},
|
|
1977
|
+
stream_webhook_listener_events: {
|
|
1978
|
+
method: 'GET',
|
|
1979
|
+
path: '/webhook_listeners/{id}/events',
|
|
1980
|
+
tag: 'Webhooks',
|
|
1981
|
+
summary: 'Stream a webhook listener\'s events',
|
|
1982
|
+
body: false,
|
|
1983
|
+
response: 'stream',
|
|
1984
|
+
params: [
|
|
1985
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
1986
|
+
{ name: 'organizationId', in: 'query', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
1987
|
+
{ name: 'after', in: 'query', required: false, kind: 'integer' }
|
|
1988
|
+
]
|
|
1989
|
+
},
|
|
1990
|
+
update_contact: {
|
|
1991
|
+
method: 'PATCH',
|
|
1992
|
+
path: '/contacts/{id}',
|
|
1993
|
+
tag: 'Contacts',
|
|
1994
|
+
summary: 'Update a contact’s details or CRM attributes',
|
|
1995
|
+
body: true,
|
|
1996
|
+
response: 'empty',
|
|
1997
|
+
params: [
|
|
1998
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex contact ID' },
|
|
1999
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
2000
|
+
{ name: 'name', in: 'body', required: false, kind: 'string' },
|
|
2001
|
+
{ name: 'email', in: 'body', required: false, kind: 'string' },
|
|
2002
|
+
{ name: 'phone', in: 'body', required: false, kind: 'string' },
|
|
2003
|
+
{ name: 'attributes', in: 'body', required: false, kind: 'object' }
|
|
2004
|
+
]
|
|
2005
|
+
},
|
|
2006
|
+
update_conversation_title: {
|
|
2007
|
+
method: 'PATCH',
|
|
2008
|
+
path: '/conversations/{id}',
|
|
2009
|
+
tag: 'Conversations',
|
|
2010
|
+
summary: 'Update conversation title or linked project',
|
|
2011
|
+
body: true,
|
|
2012
|
+
response: 'empty',
|
|
2013
|
+
params: [
|
|
2014
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex conversation ID' },
|
|
2015
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
2016
|
+
{ name: 'title', in: 'body', required: false, kind: 'string' },
|
|
2017
|
+
{ name: 'projectId', in: 'body', required: false, kind: 'string', description: 'Convex project ID' }
|
|
2018
|
+
]
|
|
2019
|
+
},
|
|
2020
|
+
update_custom_property: {
|
|
2021
|
+
method: 'PATCH',
|
|
2022
|
+
path: '/custom-properties/{id}',
|
|
2023
|
+
tag: 'Custom properties',
|
|
2024
|
+
summary: 'Update a custom property',
|
|
2025
|
+
body: true,
|
|
2026
|
+
response: 'empty',
|
|
2027
|
+
params: [
|
|
2028
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex custom property ID' },
|
|
2029
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
2030
|
+
{ name: 'name', in: 'body', required: false, kind: 'string' },
|
|
2031
|
+
{ name: 'type', in: 'body', required: false, kind: 'string', enum: ['text', 'textarea', 'number', 'date', 'checkbox', 'multiCheckbox', 'select', 'url', 'email', 'phone', 'currency', 'percentage'] },
|
|
2032
|
+
{ name: 'recordTypes', in: 'body', required: false, kind: 'array' },
|
|
2033
|
+
{ name: 'options', in: 'body', required: false, kind: 'array' }
|
|
2034
|
+
]
|
|
2035
|
+
},
|
|
2036
|
+
update_group: {
|
|
2037
|
+
method: 'PATCH',
|
|
2038
|
+
path: '/groups/{id}',
|
|
2039
|
+
tag: 'Takeoff',
|
|
2040
|
+
summary: 'Update a takeoff group',
|
|
2041
|
+
body: true,
|
|
2042
|
+
response: 'empty',
|
|
2043
|
+
params: [
|
|
2044
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex takeoff group ID' },
|
|
2045
|
+
{ name: 'projectId', in: 'body', required: true, kind: 'string', description: 'Convex project ID' },
|
|
2046
|
+
{ name: 'name', in: 'body', required: false, kind: 'string' },
|
|
2047
|
+
{ name: 'position', in: 'body', required: false, kind: 'number' },
|
|
2048
|
+
{ name: 'parentId', in: 'body', required: false, kind: 'string', description: 'Convex takeoff group ID' }
|
|
2049
|
+
]
|
|
2050
|
+
},
|
|
2051
|
+
update_labor_crew: {
|
|
2052
|
+
method: 'PATCH',
|
|
2053
|
+
path: '/labor/crews/{id}',
|
|
2054
|
+
tag: 'Labor',
|
|
2055
|
+
summary: 'Update a labor crew',
|
|
2056
|
+
body: true,
|
|
2057
|
+
response: 'empty',
|
|
2058
|
+
params: [
|
|
2059
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
2060
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
2061
|
+
{ name: 'name', in: 'body', required: false, kind: 'string' },
|
|
2062
|
+
{ name: 'description', in: 'body', required: false, kind: 'string' },
|
|
2063
|
+
{ name: 'members', in: 'body', required: false, kind: 'array' },
|
|
2064
|
+
{ name: 'equipmentIds', in: 'body', required: false, kind: 'array' },
|
|
2065
|
+
{ name: 'dailyCapacity', in: 'body', required: false, kind: 'object' }
|
|
2066
|
+
]
|
|
2067
|
+
},
|
|
2068
|
+
update_labor_equipment: {
|
|
2069
|
+
method: 'PATCH',
|
|
2070
|
+
path: '/labor/equipment/{id}',
|
|
2071
|
+
tag: 'Labor',
|
|
2072
|
+
summary: 'Update a labor equipment entry',
|
|
2073
|
+
body: true,
|
|
2074
|
+
response: 'empty',
|
|
2075
|
+
params: [
|
|
2076
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
2077
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
2078
|
+
{ name: 'name', in: 'body', required: false, kind: 'string' },
|
|
2079
|
+
{ name: 'description', in: 'body', required: false, kind: 'string' },
|
|
2080
|
+
{ name: 'category', in: 'body', required: false, kind: 'string' },
|
|
2081
|
+
{ name: 'dailyRate', in: 'body', required: false, kind: 'number' },
|
|
2082
|
+
{ name: 'hourlyRate', in: 'body', required: false, kind: 'number' },
|
|
2083
|
+
{ name: 'currency', in: 'body', required: false, kind: 'string', enum: ['USD', 'CAD', 'MXN', 'BRL', 'ARS', 'CLP', 'COP', 'PEN', 'UYU', 'PYG', 'BOB', 'VES', 'GYD', 'SRD', 'GTQ', 'HNL', 'NIO', 'CRC', 'PAB', 'BZD', 'JMD', 'HTG', 'DOP', 'CUP', 'BSD', 'BBD', 'TTD', 'XCD', 'AWG', 'ANG', 'KYD', 'BMD', 'FKP', 'EUR', 'GBP', 'CHF', 'NOK', 'SEK', 'DKK', 'PLN', 'CZK', 'HUF', 'RON', 'BGN', 'HRK', 'RSD', 'UAH', 'RUB', 'TRY', 'ISK', 'BAM', 'MKD', 'ALL', 'MDL', 'BYN', 'GEL', 'AMD', 'AZN', 'GIP', 'ILS', 'AED', 'SAR', 'QAR', 'KWD', 'BHD', 'OMR', 'JOD', 'LBP', 'EGP', 'IQD', 'IRR', 'SYP', 'YER', 'ZAR', 'NAD', 'LSL', 'SZL', 'BWP', 'NGN', 'KES', 'GHS', 'MAD', 'TND', 'DZD', 'LYD', 'ETB', 'ERN', 'DJF', 'SOS', 'SDG', 'SSP', 'UGX', 'TZS', 'RWF', 'BIF', 'MWK', 'ZMW', 'ZWG', 'MZN', 'AOA', 'CDF', 'MGA', 'MUR', 'SCR', 'KMF', 'CVE', 'GMD', 'GNF', 'LRD', 'SLE', 'MRU', 'STN', 'XOF', 'XAF', 'SHP', 'JPY', 'CNY', 'HKD', 'MOP', 'TWD', 'KRW', 'KPW', 'MNT', 'SGD', 'INR', 'BTN', 'PKR', 'BDT', 'LKR', 'NPR', 'MVR', 'AFN', 'IDR', 'MYR', 'PHP', 'THB', 'VND', 'MMK', 'KHR', 'LAK', 'BND', 'KZT', 'UZS', 'KGS', 'TJS', 'TMT', 'AUD', 'NZD', 'FJD', 'PGK', 'SBD', 'VUV', 'WST', 'TOP', 'XPF'], description: 'ISO 4217 currency code' },
|
|
2084
|
+
{ name: 'isOwned', in: 'body', required: false, kind: 'boolean' }
|
|
2085
|
+
]
|
|
2086
|
+
},
|
|
2087
|
+
update_labor_rate: {
|
|
2088
|
+
method: 'PATCH',
|
|
2089
|
+
path: '/labor/rates/{id}',
|
|
2090
|
+
tag: 'Labor',
|
|
2091
|
+
summary: 'Update a labor rate',
|
|
2092
|
+
body: true,
|
|
2093
|
+
response: 'empty',
|
|
2094
|
+
params: [
|
|
2095
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
2096
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
2097
|
+
{ name: 'name', in: 'body', required: false, kind: 'string' },
|
|
2098
|
+
{ name: 'description', in: 'body', required: false, kind: 'string' },
|
|
2099
|
+
{ name: 'hourlyRate', in: 'body', required: false, kind: 'number' },
|
|
2100
|
+
{ name: 'burdenRate', in: 'body', required: false, kind: 'number' },
|
|
2101
|
+
{ name: 'currency', in: 'body', required: false, kind: 'string', enum: ['USD', 'CAD', 'MXN', 'BRL', 'ARS', 'CLP', 'COP', 'PEN', 'UYU', 'PYG', 'BOB', 'VES', 'GYD', 'SRD', 'GTQ', 'HNL', 'NIO', 'CRC', 'PAB', 'BZD', 'JMD', 'HTG', 'DOP', 'CUP', 'BSD', 'BBD', 'TTD', 'XCD', 'AWG', 'ANG', 'KYD', 'BMD', 'FKP', 'EUR', 'GBP', 'CHF', 'NOK', 'SEK', 'DKK', 'PLN', 'CZK', 'HUF', 'RON', 'BGN', 'HRK', 'RSD', 'UAH', 'RUB', 'TRY', 'ISK', 'BAM', 'MKD', 'ALL', 'MDL', 'BYN', 'GEL', 'AMD', 'AZN', 'GIP', 'ILS', 'AED', 'SAR', 'QAR', 'KWD', 'BHD', 'OMR', 'JOD', 'LBP', 'EGP', 'IQD', 'IRR', 'SYP', 'YER', 'ZAR', 'NAD', 'LSL', 'SZL', 'BWP', 'NGN', 'KES', 'GHS', 'MAD', 'TND', 'DZD', 'LYD', 'ETB', 'ERN', 'DJF', 'SOS', 'SDG', 'SSP', 'UGX', 'TZS', 'RWF', 'BIF', 'MWK', 'ZMW', 'ZWG', 'MZN', 'AOA', 'CDF', 'MGA', 'MUR', 'SCR', 'KMF', 'CVE', 'GMD', 'GNF', 'LRD', 'SLE', 'MRU', 'STN', 'XOF', 'XAF', 'SHP', 'JPY', 'CNY', 'HKD', 'MOP', 'TWD', 'KRW', 'KPW', 'MNT', 'SGD', 'INR', 'BTN', 'PKR', 'BDT', 'LKR', 'NPR', 'MVR', 'AFN', 'IDR', 'MYR', 'PHP', 'THB', 'VND', 'MMK', 'KHR', 'LAK', 'BND', 'KZT', 'UZS', 'KGS', 'TJS', 'TMT', 'AUD', 'NZD', 'FJD', 'PGK', 'SBD', 'VUV', 'WST', 'TOP', 'XPF'], description: 'ISO 4217 currency code' },
|
|
2102
|
+
{ name: 'effectiveDate', in: 'body', required: false, kind: 'number' },
|
|
2103
|
+
{ name: 'isDefault', in: 'body', required: false, kind: 'boolean' }
|
|
2104
|
+
]
|
|
2105
|
+
},
|
|
2106
|
+
update_layer: {
|
|
2107
|
+
method: 'PATCH',
|
|
2108
|
+
path: '/layers/{id}',
|
|
2109
|
+
tag: 'Takeoff',
|
|
2110
|
+
summary: 'Rename a takeoff layer',
|
|
2111
|
+
body: true,
|
|
2112
|
+
response: 'empty',
|
|
2113
|
+
params: [
|
|
2114
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex takeoff layer ID' },
|
|
2115
|
+
{ name: 'projectId', in: 'body', required: true, kind: 'string', description: 'Convex project ID' },
|
|
2116
|
+
{ name: 'name', in: 'body', required: true, kind: 'string' }
|
|
2117
|
+
]
|
|
2118
|
+
},
|
|
2119
|
+
update_list: {
|
|
2120
|
+
method: 'PATCH',
|
|
2121
|
+
path: '/lists/{id}',
|
|
2122
|
+
tag: 'Lists',
|
|
2123
|
+
summary: 'Update list name or metadata',
|
|
2124
|
+
body: true,
|
|
2125
|
+
response: 'json',
|
|
2126
|
+
params: [
|
|
2127
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex product list ID' },
|
|
2128
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
2129
|
+
{ name: 'name', in: 'body', required: false, kind: 'string' },
|
|
2130
|
+
{ name: 'description', in: 'body', required: false, kind: 'string' },
|
|
2131
|
+
{ name: 'privacy', in: 'body', required: false, kind: 'string', enum: ['private', 'organization', 'public', 'system'] },
|
|
2132
|
+
{ name: 'category', in: 'body', required: false, kind: 'string' }
|
|
2133
|
+
]
|
|
2134
|
+
},
|
|
2135
|
+
update_measurement: {
|
|
2136
|
+
method: 'PATCH',
|
|
2137
|
+
path: '/measurements/{id}',
|
|
2138
|
+
tag: 'Takeoff',
|
|
2139
|
+
summary: 'Update a measurement',
|
|
2140
|
+
body: true,
|
|
2141
|
+
response: 'empty',
|
|
2142
|
+
params: [
|
|
2143
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex takeoff measurement ID' },
|
|
2144
|
+
{ name: 'projectId', in: 'body', required: true, kind: 'string', description: 'Convex project ID' },
|
|
2145
|
+
{ name: 'value', in: 'body', required: false, kind: 'number', description: 'The measured quantity in RAW PAGE PIXELS — the same coordinate space as the geometry points, NEVER feet, metres, or any other real-world unit. Linear measurements are a length in px, areas are px², counts are a tally. Exayard converts to real units at display time using the page scale, so a real-world number sent here is converted a second time and reads wrong. When geometry is supplied the server measures it and rejects a value that disagrees by 10× or more, naming both numbers. To send a real-world quantity, convert it to page pixels first (multiply by the page\'s pixels-per-unit; square that factor for an area).' },
|
|
2146
|
+
{ name: 'manualValue', in: 'body', required: false, kind: 'number', description: 'A user\'s override of the measured quantity, in RAW PAGE PIXELS — the same coordinate space as the geometry points, NEVER feet, metres, or any other real-world unit. Linear measurements are a length in px, areas are px², counts are a tally. Exayard converts to real units at display time using the page scale, so a real-world number sent here is converted a second time and reads wrong. When geometry is supplied the server measures it and rejects a value that disagrees by 10× or more, naming both numbers. To send a real-world quantity, convert it to page pixels first (multiply by the page\'s pixels-per-unit; square that factor for an area). Send null to clear the override and fall back to the measured value.' },
|
|
2147
|
+
{ name: 'geometry', in: 'body', required: false, kind: 'object', description: 'Measurement geometry: { "points": [{ "x": number, "y": number, "bulge"?: number }, ...], "isClosed": boolean, "holes"?: Point[][], "pathD"?: string }. When geometry is provided, "points" and "isClosed" are required; other keys (e.g. { "length": 280.9 }) are rejected.' },
|
|
2148
|
+
{ name: 'notes', in: 'body', required: false, kind: 'string' },
|
|
2149
|
+
{ name: 'name', in: 'body', required: false, kind: 'string' },
|
|
2150
|
+
{ name: 'layerId', in: 'body', required: false, kind: 'string', description: 'Convex takeoff layer ID' }
|
|
2151
|
+
]
|
|
2152
|
+
},
|
|
2153
|
+
update_message: {
|
|
2154
|
+
method: 'PATCH',
|
|
2155
|
+
path: '/messages/{id}',
|
|
2156
|
+
tag: 'Messages',
|
|
2157
|
+
summary: 'Update a message',
|
|
2158
|
+
body: true,
|
|
2159
|
+
response: 'empty',
|
|
2160
|
+
params: [
|
|
2161
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex chat message ID' },
|
|
2162
|
+
{ name: 'content', in: 'body', required: true, kind: 'string' }
|
|
2163
|
+
]
|
|
2164
|
+
},
|
|
2165
|
+
update_page: {
|
|
2166
|
+
method: 'PATCH',
|
|
2167
|
+
path: '/pages/{id}',
|
|
2168
|
+
tag: 'Pages',
|
|
2169
|
+
summary: 'Update page name or rotation',
|
|
2170
|
+
body: true,
|
|
2171
|
+
response: 'json',
|
|
2172
|
+
params: [
|
|
2173
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex page ID' },
|
|
2174
|
+
{ name: 'name', in: 'body', required: false, kind: 'string' },
|
|
2175
|
+
{ name: 'rotation', in: 'body', required: false, kind: 'number' }
|
|
2176
|
+
]
|
|
2177
|
+
},
|
|
2178
|
+
update_product: {
|
|
2179
|
+
method: 'PATCH',
|
|
2180
|
+
path: '/products/{id}',
|
|
2181
|
+
tag: 'Products',
|
|
2182
|
+
summary: 'Update a product',
|
|
2183
|
+
body: true,
|
|
2184
|
+
response: 'json',
|
|
2185
|
+
params: [
|
|
2186
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex product ID' },
|
|
2187
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
2188
|
+
{ name: 'name', in: 'body', required: false, kind: 'string' },
|
|
2189
|
+
{ name: 'sku', in: 'body', required: false, kind: 'string' },
|
|
2190
|
+
{ name: 'unitOfMeasure', in: 'body', required: false, kind: 'string' },
|
|
2191
|
+
{ name: 'costPerUnit', in: 'body', required: false, kind: 'number' },
|
|
2192
|
+
{ name: 'currency', in: 'body', required: false, kind: 'string', enum: ['USD', 'CAD', 'MXN', 'BRL', 'ARS', 'CLP', 'COP', 'PEN', 'UYU', 'PYG', 'BOB', 'VES', 'GYD', 'SRD', 'GTQ', 'HNL', 'NIO', 'CRC', 'PAB', 'BZD', 'JMD', 'HTG', 'DOP', 'CUP', 'BSD', 'BBD', 'TTD', 'XCD', 'AWG', 'ANG', 'KYD', 'BMD', 'FKP', 'EUR', 'GBP', 'CHF', 'NOK', 'SEK', 'DKK', 'PLN', 'CZK', 'HUF', 'RON', 'BGN', 'HRK', 'RSD', 'UAH', 'RUB', 'TRY', 'ISK', 'BAM', 'MKD', 'ALL', 'MDL', 'BYN', 'GEL', 'AMD', 'AZN', 'GIP', 'ILS', 'AED', 'SAR', 'QAR', 'KWD', 'BHD', 'OMR', 'JOD', 'LBP', 'EGP', 'IQD', 'IRR', 'SYP', 'YER', 'ZAR', 'NAD', 'LSL', 'SZL', 'BWP', 'NGN', 'KES', 'GHS', 'MAD', 'TND', 'DZD', 'LYD', 'ETB', 'ERN', 'DJF', 'SOS', 'SDG', 'SSP', 'UGX', 'TZS', 'RWF', 'BIF', 'MWK', 'ZMW', 'ZWG', 'MZN', 'AOA', 'CDF', 'MGA', 'MUR', 'SCR', 'KMF', 'CVE', 'GMD', 'GNF', 'LRD', 'SLE', 'MRU', 'STN', 'XOF', 'XAF', 'SHP', 'JPY', 'CNY', 'HKD', 'MOP', 'TWD', 'KRW', 'KPW', 'MNT', 'SGD', 'INR', 'BTN', 'PKR', 'BDT', 'LKR', 'NPR', 'MVR', 'AFN', 'IDR', 'MYR', 'PHP', 'THB', 'VND', 'MMK', 'KHR', 'LAK', 'BND', 'KZT', 'UZS', 'KGS', 'TJS', 'TMT', 'AUD', 'NZD', 'FJD', 'PGK', 'SBD', 'VUV', 'WST', 'TOP', 'XPF'], description: 'ISO 4217 currency code' },
|
|
2193
|
+
{ name: 'markupPercent', in: 'body', required: false, kind: 'number' },
|
|
2194
|
+
{ name: 'customProperties', in: 'body', required: false, kind: 'object' }
|
|
2195
|
+
]
|
|
2196
|
+
},
|
|
2197
|
+
update_project: {
|
|
2198
|
+
method: 'PATCH',
|
|
2199
|
+
path: '/projects/{id}',
|
|
2200
|
+
tag: 'Projects',
|
|
2201
|
+
summary: 'Update a project',
|
|
2202
|
+
body: true,
|
|
2203
|
+
response: 'json',
|
|
2204
|
+
params: [
|
|
2205
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
2206
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
2207
|
+
{ name: 'name', in: 'body', required: false, kind: 'string' },
|
|
2208
|
+
{ name: 'status', in: 'body', required: false, kind: 'string', enum: ['lead', 'contacted', 'qualified', 'active', 'archived'] },
|
|
2209
|
+
{ name: 'settings', in: 'body', required: false, kind: 'object' },
|
|
2210
|
+
{ name: 'tags', in: 'body', required: false, kind: 'array' },
|
|
2211
|
+
{ name: 'customProperties', in: 'body', required: false, kind: 'object' }
|
|
2212
|
+
]
|
|
2213
|
+
},
|
|
2214
|
+
update_project_privacy: {
|
|
2215
|
+
method: 'POST',
|
|
2216
|
+
path: '/projects/{id}/privacy',
|
|
2217
|
+
tag: 'Projects',
|
|
2218
|
+
summary: 'Change a project’s privacy setting',
|
|
2219
|
+
body: true,
|
|
2220
|
+
response: 'empty',
|
|
2221
|
+
params: [
|
|
2222
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex project ID' },
|
|
2223
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
2224
|
+
{ name: 'privacy', in: 'body', required: true, kind: 'string', enum: ['private', 'unlisted', 'public'] }
|
|
2225
|
+
]
|
|
2226
|
+
},
|
|
2227
|
+
update_symbol: {
|
|
2228
|
+
method: 'PATCH',
|
|
2229
|
+
path: '/symbols/{id}',
|
|
2230
|
+
tag: 'Takeoff',
|
|
2231
|
+
summary: 'Update a takeoff symbol',
|
|
2232
|
+
body: true,
|
|
2233
|
+
response: 'empty',
|
|
2234
|
+
params: [
|
|
2235
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex takeoff symbol ID' },
|
|
2236
|
+
{ name: 'projectId', in: 'body', required: true, kind: 'string', description: 'Convex project ID' },
|
|
2237
|
+
{ name: 'name', in: 'body', required: false, kind: 'string' },
|
|
2238
|
+
{ name: 'color', in: 'body', required: false, kind: 'string' },
|
|
2239
|
+
{ name: 'type', in: 'body', required: false, kind: 'string', enum: ['count', 'linear', 'area'] },
|
|
2240
|
+
{ name: 'category', in: 'body', required: false, kind: 'string' },
|
|
2241
|
+
{ name: 'subcategory', in: 'body', required: false, kind: 'string' },
|
|
2242
|
+
{ name: 'customProperties', in: 'body', required: false, kind: 'object' }
|
|
2243
|
+
]
|
|
2244
|
+
},
|
|
2245
|
+
update_vendor: {
|
|
2246
|
+
method: 'PATCH',
|
|
2247
|
+
path: '/vendors/{id}',
|
|
2248
|
+
tag: 'Vendors',
|
|
2249
|
+
summary: 'Update a vendor',
|
|
2250
|
+
body: true,
|
|
2251
|
+
response: 'json',
|
|
2252
|
+
params: [
|
|
2253
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex vendor ID' },
|
|
2254
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
2255
|
+
{ name: 'name', in: 'body', required: false, kind: 'string' },
|
|
2256
|
+
{ name: 'type', in: 'body', required: false, kind: 'string', enum: ['supplier', 'subcontractor', 'rental'] },
|
|
2257
|
+
{ name: 'kind', in: 'body', required: false, kind: 'string', enum: ['sub', 'supplier', 'surety', 'insurer', 'agency', 'owner', 'architect', 'engineer', 'other', null] },
|
|
2258
|
+
{ name: 'contactName', in: 'body', required: false, kind: 'string' },
|
|
2259
|
+
{ name: 'email', in: 'body', required: false, kind: 'string' },
|
|
2260
|
+
{ name: 'phone', in: 'body', required: false, kind: 'string' },
|
|
2261
|
+
{ name: 'website', in: 'body', required: false, kind: 'string' },
|
|
2262
|
+
{ name: 'address', in: 'body', required: false, kind: 'object' },
|
|
2263
|
+
{ name: 'paymentTerms', in: 'body', required: false, kind: 'string' },
|
|
2264
|
+
{ name: 'accountNumber', in: 'body', required: false, kind: 'string' },
|
|
2265
|
+
{ name: 'rating', in: 'body', required: false, kind: 'number' },
|
|
2266
|
+
{ name: 'notes', in: 'body', required: false, kind: 'string' },
|
|
2267
|
+
{ name: 'tags', in: 'body', required: false, kind: 'array' },
|
|
2268
|
+
{ name: 'isPreferred', in: 'body', required: false, kind: 'boolean' }
|
|
2269
|
+
]
|
|
2270
|
+
},
|
|
2271
|
+
update_vendor_quote_status: {
|
|
2272
|
+
method: 'PATCH',
|
|
2273
|
+
path: '/quotes/{id}/status',
|
|
2274
|
+
tag: 'Vendor quotes',
|
|
2275
|
+
summary: 'Accept, reject, or expire a vendor quote',
|
|
2276
|
+
body: true,
|
|
2277
|
+
response: 'json',
|
|
2278
|
+
params: [
|
|
2279
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
2280
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
2281
|
+
{ name: 'status', in: 'body', required: true, kind: 'string', enum: ['accepted', 'rejected', 'expired'] }
|
|
2282
|
+
]
|
|
2283
|
+
},
|
|
2284
|
+
update_webhook_endpoint: {
|
|
2285
|
+
method: 'PATCH',
|
|
2286
|
+
path: '/webhook_endpoints/{id}',
|
|
2287
|
+
tag: 'Webhooks',
|
|
2288
|
+
summary: 'Update a webhook endpoint',
|
|
2289
|
+
body: true,
|
|
2290
|
+
response: 'empty',
|
|
2291
|
+
params: [
|
|
2292
|
+
{ name: 'id', in: 'path', required: true, kind: 'string' },
|
|
2293
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
2294
|
+
{ name: 'url', in: 'body', required: false, kind: 'string' },
|
|
2295
|
+
{ name: 'events', in: 'body', required: false, kind: 'array' },
|
|
2296
|
+
{ name: 'description', in: 'body', required: false, kind: 'string' },
|
|
2297
|
+
{ name: 'status', in: 'body', required: false, kind: 'string', enum: ['active', 'paused'] }
|
|
2298
|
+
]
|
|
2299
|
+
},
|
|
2300
|
+
update_widget: {
|
|
2301
|
+
method: 'PATCH',
|
|
2302
|
+
path: '/widgets/{id}',
|
|
2303
|
+
tag: 'Widgets',
|
|
2304
|
+
summary: 'Update a widget',
|
|
2305
|
+
body: true,
|
|
2306
|
+
response: 'empty',
|
|
2307
|
+
params: [
|
|
2308
|
+
{ name: 'id', in: 'path', required: true, kind: 'string', description: 'Convex widget ID' },
|
|
2309
|
+
{ name: 'organizationId', in: 'body', required: false, kind: 'string', description: 'Convex organization ID — get it from GET /v1/me or the get_me tool (memberships[].orgId), not the organization name. Optional with a company key or an app\'s key: the key\'s company is used.' },
|
|
2310
|
+
{ name: 'name', in: 'body', required: false, kind: 'string' },
|
|
2311
|
+
{ name: 'isActive', in: 'body', required: false, kind: 'boolean' },
|
|
2312
|
+
{ name: 'config', in: 'body', required: false, kind: 'object' }
|
|
2313
|
+
]
|
|
2314
|
+
}
|
|
2315
|
+
};
|
|
2316
|
+
exports.OPERATION_METHODS = {
|
|
2317
|
+
addSymbolLineItem: 'add_symbol_line_item',
|
|
2318
|
+
archiveConversation: 'archive_conversation',
|
|
2319
|
+
archiveLaborCrew: 'archive_labor_crew',
|
|
2320
|
+
archiveLaborEquipment: 'archive_labor_equipment',
|
|
2321
|
+
archiveLaborRate: 'archive_labor_rate',
|
|
2322
|
+
archiveList: 'archive_list',
|
|
2323
|
+
archivePage: 'archive_page',
|
|
2324
|
+
archiveProduct: 'archive_product',
|
|
2325
|
+
archiveProject: 'archive_project',
|
|
2326
|
+
archiveVendor: 'archive_vendor',
|
|
2327
|
+
attachFileToProject: 'attach_file_to_project',
|
|
2328
|
+
batchCreateProducts: 'batch_create_products',
|
|
2329
|
+
cancelAssessment: 'cancel_assessment',
|
|
2330
|
+
confirmFileUpload: 'confirm_file_upload',
|
|
2331
|
+
createAgentSession: 'create_agent_session',
|
|
2332
|
+
createAssessment: 'create_assessment',
|
|
2333
|
+
createBid: 'create_bid',
|
|
2334
|
+
createConversation: 'create_conversation',
|
|
2335
|
+
createCustomProperty: 'create_custom_property',
|
|
2336
|
+
createEstimate: 'create_estimate',
|
|
2337
|
+
createFolder: 'create_folder',
|
|
2338
|
+
createGroup: 'create_group',
|
|
2339
|
+
createLaborCrew: 'create_labor_crew',
|
|
2340
|
+
createLaborEquipment: 'create_labor_equipment',
|
|
2341
|
+
createLaborRate: 'create_labor_rate',
|
|
2342
|
+
createLayer: 'create_layer',
|
|
2343
|
+
createList: 'create_list',
|
|
2344
|
+
createMeasurement: 'create_measurement',
|
|
2345
|
+
createMessage: 'create_message',
|
|
2346
|
+
createOrganization: 'create_organization',
|
|
2347
|
+
createProduct: 'create_product',
|
|
2348
|
+
createProject: 'create_project',
|
|
2349
|
+
createSymbol: 'create_symbol',
|
|
2350
|
+
createVendor: 'create_vendor',
|
|
2351
|
+
createVendorQuote: 'create_vendor_quote',
|
|
2352
|
+
createWebhookEndpoint: 'create_webhook_endpoint',
|
|
2353
|
+
createWidget: 'create_widget',
|
|
2354
|
+
deleteOrganization: 'delete_organization',
|
|
2355
|
+
deleteWebhookEndpoint: 'delete_webhook_endpoint',
|
|
2356
|
+
disconnectIntegration: 'disconnect_integration',
|
|
2357
|
+
exportProject: 'export_project',
|
|
2358
|
+
findSymbolElements: 'find_symbol_elements',
|
|
2359
|
+
generateEstimate: 'generate_estimate',
|
|
2360
|
+
getAssessment: 'get_assessment',
|
|
2361
|
+
getBestPriceForProduct: 'get_best_price_for_product',
|
|
2362
|
+
getContact: 'get_contact',
|
|
2363
|
+
getConversation: 'get_conversation',
|
|
2364
|
+
getCreditBalance: 'get_credit_balance',
|
|
2365
|
+
getCreditUsageHistory: 'get_credit_usage_history',
|
|
2366
|
+
getCreditUsageStats: 'get_credit_usage_stats',
|
|
2367
|
+
getCustomProperty: 'get_custom_property',
|
|
2368
|
+
getDocument: 'get_document',
|
|
2369
|
+
getFile: 'get_file',
|
|
2370
|
+
getFileUrl: 'get_file_url',
|
|
2371
|
+
getFolder: 'get_folder',
|
|
2372
|
+
getLaborCrew: 'get_labor_crew',
|
|
2373
|
+
getLaborEquipment: 'get_labor_equipment',
|
|
2374
|
+
getLaborRate: 'get_labor_rate',
|
|
2375
|
+
getLatestAssessment: 'get_latest_assessment',
|
|
2376
|
+
getList: 'get_list',
|
|
2377
|
+
getMe: 'get_me',
|
|
2378
|
+
getMeasurement: 'get_measurement',
|
|
2379
|
+
getPage: 'get_page',
|
|
2380
|
+
getPageContent: 'get_page_content',
|
|
2381
|
+
getPricesForProduct: 'get_prices_for_product',
|
|
2382
|
+
getProduct: 'get_product',
|
|
2383
|
+
getProject: 'get_project',
|
|
2384
|
+
getProjectRelations: 'get_project_relations',
|
|
2385
|
+
getSpreadsheet: 'get_spreadsheet',
|
|
2386
|
+
getSymbol: 'get_symbol',
|
|
2387
|
+
getSymbolLineItem: 'get_symbol_line_item',
|
|
2388
|
+
getTakeoffSummary: 'get_takeoff_summary',
|
|
2389
|
+
getUnreadNotificationCount: 'get_unread_notification_count',
|
|
2390
|
+
getUsage: 'get_usage',
|
|
2391
|
+
getVendor: 'get_vendor',
|
|
2392
|
+
getVendorQuote: 'get_vendor_quote',
|
|
2393
|
+
getWidget: 'get_widget',
|
|
2394
|
+
listAssessments: 'list_assessments',
|
|
2395
|
+
listContacts: 'list_contacts',
|
|
2396
|
+
listConversationFiles: 'list_conversation_files',
|
|
2397
|
+
listConversations: 'list_conversations',
|
|
2398
|
+
listCustomProperties: 'list_custom_properties',
|
|
2399
|
+
listDocuments: 'list_documents',
|
|
2400
|
+
listFiles: 'list_files',
|
|
2401
|
+
listFolderContents: 'list_folder_contents',
|
|
2402
|
+
listFolders: 'list_folders',
|
|
2403
|
+
listGroups: 'list_groups',
|
|
2404
|
+
listInstallations: 'list_installations',
|
|
2405
|
+
listIntegrations: 'list_integrations',
|
|
2406
|
+
listLaborCrews: 'list_labor_crews',
|
|
2407
|
+
listLaborEquipment: 'list_labor_equipment',
|
|
2408
|
+
listLaborRates: 'list_labor_rates',
|
|
2409
|
+
listLayers: 'list_layers',
|
|
2410
|
+
listLists: 'list_lists',
|
|
2411
|
+
listMeasurementsByPage: 'list_measurements_by_page',
|
|
2412
|
+
listMeasurementsBySymbol: 'list_measurements_by_symbol',
|
|
2413
|
+
listMessages: 'list_messages',
|
|
2414
|
+
listNotifications: 'list_notifications',
|
|
2415
|
+
listOrgDocuments: 'list_org_documents',
|
|
2416
|
+
listOrganizations: 'list_organizations',
|
|
2417
|
+
listPages: 'list_pages',
|
|
2418
|
+
listProducts: 'list_products',
|
|
2419
|
+
listProductsInList: 'list_products_in_list',
|
|
2420
|
+
listProjectConversations: 'list_project_conversations',
|
|
2421
|
+
listProjects: 'list_projects',
|
|
2422
|
+
listSpreadsheets: 'list_spreadsheets',
|
|
2423
|
+
listSymbolLineItems: 'list_symbol_line_items',
|
|
2424
|
+
listSymbols: 'list_symbols',
|
|
2425
|
+
listVendorQuotes: 'list_vendor_quotes',
|
|
2426
|
+
listVendors: 'list_vendors',
|
|
2427
|
+
listWebhookDeliveries: 'list_webhook_deliveries',
|
|
2428
|
+
listWebhookEndpoints: 'list_webhook_endpoints',
|
|
2429
|
+
listWidgetConversations: 'list_widget_conversations',
|
|
2430
|
+
listWidgets: 'list_widgets',
|
|
2431
|
+
markAllNotificationsRead: 'mark_all_notifications_read',
|
|
2432
|
+
markNotificationRead: 'mark_notification_read',
|
|
2433
|
+
patchSymbolLineItem: 'patch_symbol_line_item',
|
|
2434
|
+
presignFileUpload: 'presign_file_upload',
|
|
2435
|
+
proposeAnalysis: 'propose_analysis',
|
|
2436
|
+
provisionCma: 'provision_cma',
|
|
2437
|
+
receiveVendorQuote: 'receive_vendor_quote',
|
|
2438
|
+
removeCustomProperty: 'remove_custom_property',
|
|
2439
|
+
removeFile: 'remove_file',
|
|
2440
|
+
removeFolder: 'remove_folder',
|
|
2441
|
+
removeGroup: 'remove_group',
|
|
2442
|
+
removeLayer: 'remove_layer',
|
|
2443
|
+
removeMeasurement: 'remove_measurement',
|
|
2444
|
+
removeMessage: 'remove_message',
|
|
2445
|
+
removeSymbol: 'remove_symbol',
|
|
2446
|
+
removeSymbolLineItem: 'remove_symbol_line_item',
|
|
2447
|
+
removeVendorPrice: 'remove_vendor_price',
|
|
2448
|
+
removeWidget: 'remove_widget',
|
|
2449
|
+
renameFile: 'rename_file',
|
|
2450
|
+
renameFolder: 'rename_folder',
|
|
2451
|
+
resendWebhookDelivery: 'resend_webhook_delivery',
|
|
2452
|
+
restoreList: 'restore_list',
|
|
2453
|
+
restorePage: 'restore_page',
|
|
2454
|
+
restoreProject: 'restore_project',
|
|
2455
|
+
runApprovedAnalysis: 'run_approved_analysis',
|
|
2456
|
+
searchHelpArticles: 'search_help_articles',
|
|
2457
|
+
searchProducts: 'search_products',
|
|
2458
|
+
searchProjectFiles: 'search_project_files',
|
|
2459
|
+
searchProjectLineItems: 'search_project_line_items',
|
|
2460
|
+
searchVendors: 'search_vendors',
|
|
2461
|
+
sendCmaMessage: 'send_cma_message',
|
|
2462
|
+
sendWebhookListenerTest: 'send_webhook_listener_test',
|
|
2463
|
+
sendWebhookTestEvent: 'send_webhook_test_event',
|
|
2464
|
+
setDocumentSharing: 'set_document_sharing',
|
|
2465
|
+
setVendorPrice: 'set_vendor_price',
|
|
2466
|
+
startWebhookListener: 'start_webhook_listener',
|
|
2467
|
+
stopWebhookListener: 'stop_webhook_listener',
|
|
2468
|
+
streamWebhookListenerEvents: 'stream_webhook_listener_events',
|
|
2469
|
+
updateContact: 'update_contact',
|
|
2470
|
+
updateConversationTitle: 'update_conversation_title',
|
|
2471
|
+
updateCustomProperty: 'update_custom_property',
|
|
2472
|
+
updateGroup: 'update_group',
|
|
2473
|
+
updateLaborCrew: 'update_labor_crew',
|
|
2474
|
+
updateLaborEquipment: 'update_labor_equipment',
|
|
2475
|
+
updateLaborRate: 'update_labor_rate',
|
|
2476
|
+
updateLayer: 'update_layer',
|
|
2477
|
+
updateList: 'update_list',
|
|
2478
|
+
updateMeasurement: 'update_measurement',
|
|
2479
|
+
updateMessage: 'update_message',
|
|
2480
|
+
updatePage: 'update_page',
|
|
2481
|
+
updateProduct: 'update_product',
|
|
2482
|
+
updateProject: 'update_project',
|
|
2483
|
+
updateProjectPrivacy: 'update_project_privacy',
|
|
2484
|
+
updateSymbol: 'update_symbol',
|
|
2485
|
+
updateVendor: 'update_vendor',
|
|
2486
|
+
updateVendorQuoteStatus: 'update_vendor_quote_status',
|
|
2487
|
+
updateWebhookEndpoint: 'update_webhook_endpoint',
|
|
2488
|
+
updateWidget: 'update_widget'
|
|
2489
|
+
};
|