@serviceai/api-spec 1.2.434 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/openapi.json +1915 -51
- package/openapi.yaml +1279 -11
- package/package.json +1 -1
- package/types.d.ts +696 -1
package/types.d.ts
CHANGED
|
@@ -129,6 +129,238 @@ export interface paths {
|
|
|
129
129
|
patch?: never;
|
|
130
130
|
trace?: never;
|
|
131
131
|
};
|
|
132
|
+
"/api/impersonate/native-read-ticket": {
|
|
133
|
+
parameters: {
|
|
134
|
+
query?: never;
|
|
135
|
+
header?: never;
|
|
136
|
+
path?: never;
|
|
137
|
+
cookie?: never;
|
|
138
|
+
};
|
|
139
|
+
get?: never;
|
|
140
|
+
put?: never;
|
|
141
|
+
/**
|
|
142
|
+
* Authorize an exact browser-native download URL for the current support session.
|
|
143
|
+
* @description Requires the current typed support session and X-Support-Impersonation: 1. A narrow fixed GET allowlist only; record permissions still run on every GET. Admission lasts at most 15 minutes and never outlives the original one-hour support grant. The same browser session is required; URL alone is insufficient. GET/Range retries recheck current authority. Response is no-store with no-referrer. No user bearer is issued.
|
|
144
|
+
*/
|
|
145
|
+
post: {
|
|
146
|
+
parameters: {
|
|
147
|
+
query?: never;
|
|
148
|
+
header: {
|
|
149
|
+
"X-Support-Impersonation": "1";
|
|
150
|
+
};
|
|
151
|
+
path?: never;
|
|
152
|
+
cookie?: never;
|
|
153
|
+
};
|
|
154
|
+
requestBody: {
|
|
155
|
+
content: {
|
|
156
|
+
"application/json": {
|
|
157
|
+
url: string;
|
|
158
|
+
};
|
|
159
|
+
};
|
|
160
|
+
};
|
|
161
|
+
responses: {
|
|
162
|
+
/** @description Exact relative URL and terminal admission deadline. */
|
|
163
|
+
200: {
|
|
164
|
+
headers: {
|
|
165
|
+
[name: string]: unknown;
|
|
166
|
+
};
|
|
167
|
+
content: {
|
|
168
|
+
"application/json": {
|
|
169
|
+
url: string;
|
|
170
|
+
expiresAt: number;
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
};
|
|
174
|
+
/** @description Unsupported destination or malformed request. */
|
|
175
|
+
400: {
|
|
176
|
+
headers: {
|
|
177
|
+
[name: string]: unknown;
|
|
178
|
+
};
|
|
179
|
+
content?: never;
|
|
180
|
+
};
|
|
181
|
+
/** @description No authenticated session. */
|
|
182
|
+
401: {
|
|
183
|
+
headers: {
|
|
184
|
+
[name: string]: unknown;
|
|
185
|
+
};
|
|
186
|
+
content?: never;
|
|
187
|
+
};
|
|
188
|
+
/** @description Support authority unavailable; explicit exit required. */
|
|
189
|
+
403: {
|
|
190
|
+
headers: {
|
|
191
|
+
[name: string]: unknown;
|
|
192
|
+
};
|
|
193
|
+
content: {
|
|
194
|
+
"application/json": components["schemas"]["StreamAuthenticationError"];
|
|
195
|
+
};
|
|
196
|
+
};
|
|
197
|
+
/** @description Authentication lookup temporarily unavailable. */
|
|
198
|
+
503: {
|
|
199
|
+
headers: {
|
|
200
|
+
[name: string]: unknown;
|
|
201
|
+
};
|
|
202
|
+
content: {
|
|
203
|
+
"application/json": components["schemas"]["StreamAuthenticationError"];
|
|
204
|
+
};
|
|
205
|
+
};
|
|
206
|
+
};
|
|
207
|
+
};
|
|
208
|
+
delete?: never;
|
|
209
|
+
options?: never;
|
|
210
|
+
head?: never;
|
|
211
|
+
patch?: never;
|
|
212
|
+
trace?: never;
|
|
213
|
+
};
|
|
214
|
+
"/api/events/ticket": {
|
|
215
|
+
parameters: {
|
|
216
|
+
query?: never;
|
|
217
|
+
header?: never;
|
|
218
|
+
path?: never;
|
|
219
|
+
cookie?: never;
|
|
220
|
+
};
|
|
221
|
+
get?: never;
|
|
222
|
+
put?: never;
|
|
223
|
+
/**
|
|
224
|
+
* Create a short-lived stream-only admission ticket from the current authenticated actor.
|
|
225
|
+
* @description Connect within at most 60 seconds using GET /api/events?ticket=.... The ticket preserves the real principal, effective target and original login/impersonation deadlines; it cannot authenticate ordinary API requests. It is never a target-user bearer token. Response Cache-Control is no-store. An invalid temporary context returns 403 and must be explicitly exited, without dropping the real login.
|
|
226
|
+
*/
|
|
227
|
+
post: {
|
|
228
|
+
parameters: {
|
|
229
|
+
query?: never;
|
|
230
|
+
header?: never;
|
|
231
|
+
path?: never;
|
|
232
|
+
cookie?: never;
|
|
233
|
+
};
|
|
234
|
+
requestBody?: {
|
|
235
|
+
content: {
|
|
236
|
+
"application/json": Record<string, never>;
|
|
237
|
+
};
|
|
238
|
+
};
|
|
239
|
+
responses: {
|
|
240
|
+
/** @description Opaque ticket, usable only for short-lived stream admission. */
|
|
241
|
+
200: {
|
|
242
|
+
headers: {
|
|
243
|
+
[name: string]: unknown;
|
|
244
|
+
};
|
|
245
|
+
content: {
|
|
246
|
+
"application/json": components["schemas"]["EventStreamTicketResponse"];
|
|
247
|
+
};
|
|
248
|
+
};
|
|
249
|
+
/** @description Unexpected request fields. */
|
|
250
|
+
400: {
|
|
251
|
+
headers: {
|
|
252
|
+
[name: string]: unknown;
|
|
253
|
+
};
|
|
254
|
+
content: {
|
|
255
|
+
"application/json": {
|
|
256
|
+
message: string;
|
|
257
|
+
errors: unknown[];
|
|
258
|
+
};
|
|
259
|
+
};
|
|
260
|
+
};
|
|
261
|
+
/** @description Real principal is missing, deleted, revoked or expired. */
|
|
262
|
+
401: {
|
|
263
|
+
headers: {
|
|
264
|
+
[name: string]: unknown;
|
|
265
|
+
};
|
|
266
|
+
content: {
|
|
267
|
+
"application/json": components["schemas"]["StreamAuthenticationError"];
|
|
268
|
+
};
|
|
269
|
+
};
|
|
270
|
+
/** @description Impersonation is unavailable; explicitly exit before continuing as the real principal. */
|
|
271
|
+
403: {
|
|
272
|
+
headers: {
|
|
273
|
+
[name: string]: unknown;
|
|
274
|
+
};
|
|
275
|
+
content: {
|
|
276
|
+
"application/json": components["schemas"]["StreamAuthenticationError"];
|
|
277
|
+
};
|
|
278
|
+
};
|
|
279
|
+
/** @description Authentication lookup unavailable; retry without discarding credentials. */
|
|
280
|
+
503: {
|
|
281
|
+
headers: {
|
|
282
|
+
[name: string]: unknown;
|
|
283
|
+
};
|
|
284
|
+
content: {
|
|
285
|
+
"application/json": components["schemas"]["StreamAuthenticationError"];
|
|
286
|
+
};
|
|
287
|
+
};
|
|
288
|
+
};
|
|
289
|
+
};
|
|
290
|
+
delete?: never;
|
|
291
|
+
options?: never;
|
|
292
|
+
head?: never;
|
|
293
|
+
patch?: never;
|
|
294
|
+
trace?: never;
|
|
295
|
+
};
|
|
296
|
+
"/api/events": {
|
|
297
|
+
parameters: {
|
|
298
|
+
query?: never;
|
|
299
|
+
header?: never;
|
|
300
|
+
path?: never;
|
|
301
|
+
cookie?: never;
|
|
302
|
+
};
|
|
303
|
+
/**
|
|
304
|
+
* Open the authenticated server-sent event stream.
|
|
305
|
+
* @description New clients use a stream-only ticket in the ticket query parameter. Legacy authenticated connections remain supported. A supplied invalid ticket never falls back to another credential. Current user, session and revocation state is rechecked before admission and each delivery batch/heartbeat. Original authority deadlines also close idle or blocked sockets. A stream:resync hint means refresh authorized snapshots; this stream is not a replay log.
|
|
306
|
+
*/
|
|
307
|
+
get: {
|
|
308
|
+
parameters: {
|
|
309
|
+
query?: {
|
|
310
|
+
ticket?: string;
|
|
311
|
+
};
|
|
312
|
+
header?: never;
|
|
313
|
+
path?: never;
|
|
314
|
+
cookie?: never;
|
|
315
|
+
};
|
|
316
|
+
requestBody?: never;
|
|
317
|
+
responses: {
|
|
318
|
+
/** @description Bounded SSE hints and heartbeat comments until disconnect or authority expiry. */
|
|
319
|
+
200: {
|
|
320
|
+
headers: {
|
|
321
|
+
[name: string]: unknown;
|
|
322
|
+
};
|
|
323
|
+
content: {
|
|
324
|
+
"text/event-stream": string;
|
|
325
|
+
};
|
|
326
|
+
};
|
|
327
|
+
/** @description Ticket/source authentication expired, revoked or invalid. */
|
|
328
|
+
401: {
|
|
329
|
+
headers: {
|
|
330
|
+
[name: string]: unknown;
|
|
331
|
+
};
|
|
332
|
+
content: {
|
|
333
|
+
"application/json": components["schemas"]["StreamAuthenticationError"];
|
|
334
|
+
};
|
|
335
|
+
};
|
|
336
|
+
/** @description Legacy temporary context is unavailable. */
|
|
337
|
+
403: {
|
|
338
|
+
headers: {
|
|
339
|
+
[name: string]: unknown;
|
|
340
|
+
};
|
|
341
|
+
content: {
|
|
342
|
+
"application/json": components["schemas"]["StreamAuthenticationError"];
|
|
343
|
+
};
|
|
344
|
+
};
|
|
345
|
+
/** @description Authorization temporarily unavailable; retry with backoff. */
|
|
346
|
+
503: {
|
|
347
|
+
headers: {
|
|
348
|
+
[name: string]: unknown;
|
|
349
|
+
};
|
|
350
|
+
content: {
|
|
351
|
+
"application/json": components["schemas"]["StreamAuthenticationError"];
|
|
352
|
+
};
|
|
353
|
+
};
|
|
354
|
+
};
|
|
355
|
+
};
|
|
356
|
+
put?: never;
|
|
357
|
+
post?: never;
|
|
358
|
+
delete?: never;
|
|
359
|
+
options?: never;
|
|
360
|
+
head?: never;
|
|
361
|
+
patch?: never;
|
|
362
|
+
trace?: never;
|
|
363
|
+
};
|
|
132
364
|
"/api/jobs/{jobId}/scans/mobile-upload": {
|
|
133
365
|
parameters: {
|
|
134
366
|
query?: never;
|
|
@@ -3832,6 +4064,179 @@ export interface paths {
|
|
|
3832
4064
|
patch?: never;
|
|
3833
4065
|
trace?: never;
|
|
3834
4066
|
};
|
|
4067
|
+
"/api/projects/{projectId}/documents/draft-from-walkthrough": {
|
|
4068
|
+
parameters: {
|
|
4069
|
+
query?: never;
|
|
4070
|
+
header?: never;
|
|
4071
|
+
path?: never;
|
|
4072
|
+
cookie?: never;
|
|
4073
|
+
};
|
|
4074
|
+
get?: never;
|
|
4075
|
+
put?: never;
|
|
4076
|
+
/**
|
|
4077
|
+
* Turn a voice walk-through (timed transcript + photos) into a checklist draft.
|
|
4078
|
+
* @description Returns a DRAFT only; nothing is saved to the job. The phone's review screen creates the checklist with POST /api/projects/{projectId}/documents (custom `items`, carrying `referenceMedia`). Sections come from, in order: the camera pose of a scan, the room the tech named (the item's words, the photo's room chip, a section opened), the AI Image Sort's room for the item's photo (add-on), then the last room mentioned; items with no signal go to Not sure. GPS is never used. Item types come from spoken hints only (checkbox unless "photo required", "yes or no" or a reading; "required" sets the flag). Reference photos are the shots taken from 10 s before a sentence to 20 s after it. 200 when the draft is ready at once; 202 with `runId` while the photos go through an AI vision sort (poll the runs route). Requires the job (404 otherwise) and the Create Checklists permission (403). Photos that are not the organization's assets are left out.
|
|
4079
|
+
*/
|
|
4080
|
+
post: {
|
|
4081
|
+
parameters: {
|
|
4082
|
+
query?: never;
|
|
4083
|
+
header?: never;
|
|
4084
|
+
path: {
|
|
4085
|
+
projectId: number;
|
|
4086
|
+
};
|
|
4087
|
+
cookie?: never;
|
|
4088
|
+
};
|
|
4089
|
+
requestBody: {
|
|
4090
|
+
content: {
|
|
4091
|
+
"application/json": components["schemas"]["WalkthroughDraftRequest"];
|
|
4092
|
+
};
|
|
4093
|
+
};
|
|
4094
|
+
responses: {
|
|
4095
|
+
/** @description The draft (status completed). */
|
|
4096
|
+
200: {
|
|
4097
|
+
headers: {
|
|
4098
|
+
[name: string]: unknown;
|
|
4099
|
+
};
|
|
4100
|
+
content: {
|
|
4101
|
+
"application/json": components["schemas"]["WalkthroughDraftResponse"];
|
|
4102
|
+
};
|
|
4103
|
+
};
|
|
4104
|
+
/** @description A vision sort runs first (status running); poll GET …/draft-from-walkthrough/runs/{runId}. */
|
|
4105
|
+
202: {
|
|
4106
|
+
headers: {
|
|
4107
|
+
[name: string]: unknown;
|
|
4108
|
+
};
|
|
4109
|
+
content: {
|
|
4110
|
+
"application/json": components["schemas"]["WalkthroughDraftResponse"];
|
|
4111
|
+
};
|
|
4112
|
+
};
|
|
4113
|
+
/** @description No transcript, or a wrong shape. */
|
|
4114
|
+
400: {
|
|
4115
|
+
headers: {
|
|
4116
|
+
[name: string]: unknown;
|
|
4117
|
+
};
|
|
4118
|
+
content: {
|
|
4119
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4120
|
+
};
|
|
4121
|
+
};
|
|
4122
|
+
/** @description Authentication required. */
|
|
4123
|
+
401: {
|
|
4124
|
+
headers: {
|
|
4125
|
+
[name: string]: unknown;
|
|
4126
|
+
};
|
|
4127
|
+
content?: never;
|
|
4128
|
+
};
|
|
4129
|
+
/** @description The role cannot create checklists. */
|
|
4130
|
+
403: {
|
|
4131
|
+
headers: {
|
|
4132
|
+
[name: string]: unknown;
|
|
4133
|
+
};
|
|
4134
|
+
content: {
|
|
4135
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4136
|
+
};
|
|
4137
|
+
};
|
|
4138
|
+
/** @description Job not found. */
|
|
4139
|
+
404: {
|
|
4140
|
+
headers: {
|
|
4141
|
+
[name: string]: unknown;
|
|
4142
|
+
};
|
|
4143
|
+
content: {
|
|
4144
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4145
|
+
};
|
|
4146
|
+
};
|
|
4147
|
+
/** @description The AI's answer could not be used. */
|
|
4148
|
+
502: {
|
|
4149
|
+
headers: {
|
|
4150
|
+
[name: string]: unknown;
|
|
4151
|
+
};
|
|
4152
|
+
content: {
|
|
4153
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4154
|
+
};
|
|
4155
|
+
};
|
|
4156
|
+
/** @description AI is not configured. */
|
|
4157
|
+
503: {
|
|
4158
|
+
headers: {
|
|
4159
|
+
[name: string]: unknown;
|
|
4160
|
+
};
|
|
4161
|
+
content: {
|
|
4162
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4163
|
+
};
|
|
4164
|
+
};
|
|
4165
|
+
};
|
|
4166
|
+
};
|
|
4167
|
+
delete?: never;
|
|
4168
|
+
options?: never;
|
|
4169
|
+
head?: never;
|
|
4170
|
+
patch?: never;
|
|
4171
|
+
trace?: never;
|
|
4172
|
+
};
|
|
4173
|
+
"/api/projects/{projectId}/documents/draft-from-walkthrough/runs/{runId}": {
|
|
4174
|
+
parameters: {
|
|
4175
|
+
query?: never;
|
|
4176
|
+
header?: never;
|
|
4177
|
+
path?: never;
|
|
4178
|
+
cookie?: never;
|
|
4179
|
+
};
|
|
4180
|
+
/**
|
|
4181
|
+
* Poll a walk-through draft that waits for an AI vision sort.
|
|
4182
|
+
* @description Status `running` (with the sort's progress in `sortRun`) until the draft is ready, then `completed` with `draft`, or `failed` with `message`. A run that stops making progress is marked failed on the next poll and never re-run.
|
|
4183
|
+
*/
|
|
4184
|
+
get: {
|
|
4185
|
+
parameters: {
|
|
4186
|
+
query?: never;
|
|
4187
|
+
header?: never;
|
|
4188
|
+
path: {
|
|
4189
|
+
projectId: number;
|
|
4190
|
+
runId: number;
|
|
4191
|
+
};
|
|
4192
|
+
cookie?: never;
|
|
4193
|
+
};
|
|
4194
|
+
requestBody?: never;
|
|
4195
|
+
responses: {
|
|
4196
|
+
/** @description The run's envelope. */
|
|
4197
|
+
200: {
|
|
4198
|
+
headers: {
|
|
4199
|
+
[name: string]: unknown;
|
|
4200
|
+
};
|
|
4201
|
+
content: {
|
|
4202
|
+
"application/json": components["schemas"]["WalkthroughDraftResponse"];
|
|
4203
|
+
};
|
|
4204
|
+
};
|
|
4205
|
+
/** @description Authentication required. */
|
|
4206
|
+
401: {
|
|
4207
|
+
headers: {
|
|
4208
|
+
[name: string]: unknown;
|
|
4209
|
+
};
|
|
4210
|
+
content?: never;
|
|
4211
|
+
};
|
|
4212
|
+
/** @description The role cannot create checklists. */
|
|
4213
|
+
403: {
|
|
4214
|
+
headers: {
|
|
4215
|
+
[name: string]: unknown;
|
|
4216
|
+
};
|
|
4217
|
+
content: {
|
|
4218
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4219
|
+
};
|
|
4220
|
+
};
|
|
4221
|
+
/** @description Job or run not found. */
|
|
4222
|
+
404: {
|
|
4223
|
+
headers: {
|
|
4224
|
+
[name: string]: unknown;
|
|
4225
|
+
};
|
|
4226
|
+
content: {
|
|
4227
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4228
|
+
};
|
|
4229
|
+
};
|
|
4230
|
+
};
|
|
4231
|
+
};
|
|
4232
|
+
put?: never;
|
|
4233
|
+
post?: never;
|
|
4234
|
+
delete?: never;
|
|
4235
|
+
options?: never;
|
|
4236
|
+
head?: never;
|
|
4237
|
+
patch?: never;
|
|
4238
|
+
trace?: never;
|
|
4239
|
+
};
|
|
3835
4240
|
}
|
|
3836
4241
|
export type webhooks = Record<string, never>;
|
|
3837
4242
|
export interface components {
|
|
@@ -3856,7 +4261,7 @@ export interface components {
|
|
|
3856
4261
|
};
|
|
3857
4262
|
/** @description Cross-platform version handshake manifest. See docs/api-versioning.md. */
|
|
3858
4263
|
VersionManifest: {
|
|
3859
|
-
/** @example 1.
|
|
4264
|
+
/** @example 1.6.1 */
|
|
3860
4265
|
apiVersion: string;
|
|
3861
4266
|
/** @example 1.0.0 */
|
|
3862
4267
|
minClientVersion: string;
|
|
@@ -4376,6 +4781,14 @@ export interface components {
|
|
|
4376
4781
|
scanRoomSnapshots: boolean;
|
|
4377
4782
|
roomConnections: boolean;
|
|
4378
4783
|
};
|
|
4784
|
+
EventStreamTicketResponse: {
|
|
4785
|
+
ticket: string;
|
|
4786
|
+
};
|
|
4787
|
+
StreamAuthenticationError: {
|
|
4788
|
+
message: string;
|
|
4789
|
+
/** @enum {string} */
|
|
4790
|
+
code?: "IMPERSONATION_UNAVAILABLE" | "SUPPORT_IMPERSONATION_UNAVAILABLE" | "auth_unavailable";
|
|
4791
|
+
};
|
|
4379
4792
|
JobSummary: {
|
|
4380
4793
|
id: number;
|
|
4381
4794
|
name: string;
|
|
@@ -5029,6 +5442,288 @@ export interface components {
|
|
|
5029
5442
|
token: string;
|
|
5030
5443
|
roomIds: number[];
|
|
5031
5444
|
};
|
|
5445
|
+
WalkthroughDraftRequest: {
|
|
5446
|
+
transcript: {
|
|
5447
|
+
text: string;
|
|
5448
|
+
/** Format: date-time */
|
|
5449
|
+
startedAt: string;
|
|
5450
|
+
/** Format: date-time */
|
|
5451
|
+
endedAt: string;
|
|
5452
|
+
}[];
|
|
5453
|
+
photos?: {
|
|
5454
|
+
assetId: string;
|
|
5455
|
+
/** Format: date-time */
|
|
5456
|
+
capturedAt: string;
|
|
5457
|
+
roomHint?: string | null;
|
|
5458
|
+
sketchRoomId?: number | null;
|
|
5459
|
+
capturePose?: {
|
|
5460
|
+
x?: number;
|
|
5461
|
+
y?: number;
|
|
5462
|
+
z?: number;
|
|
5463
|
+
floorId?: number | null;
|
|
5464
|
+
sketchId?: number | null;
|
|
5465
|
+
scanSessionId?: string;
|
|
5466
|
+
scanRoomLocalId?: string;
|
|
5467
|
+
scanRoomName?: string;
|
|
5468
|
+
} | null;
|
|
5469
|
+
}[];
|
|
5470
|
+
sections?: {
|
|
5471
|
+
name: string;
|
|
5472
|
+
/** Format: date-time */
|
|
5473
|
+
startedAt: string;
|
|
5474
|
+
sketchRoomId?: number | null;
|
|
5475
|
+
}[];
|
|
5476
|
+
/** @enum {string} */
|
|
5477
|
+
roomsFrom?: "speech" | "scan";
|
|
5478
|
+
};
|
|
5479
|
+
ChecklistDraft: {
|
|
5480
|
+
name: string;
|
|
5481
|
+
sections: {
|
|
5482
|
+
key: string;
|
|
5483
|
+
title: string;
|
|
5484
|
+
sketchRoomId: number | null;
|
|
5485
|
+
/** @enum {string} */
|
|
5486
|
+
kind: "room" | "custom" | "not_sure";
|
|
5487
|
+
items: {
|
|
5488
|
+
key: string;
|
|
5489
|
+
itemText: string;
|
|
5490
|
+
description: string | null;
|
|
5491
|
+
/** @enum {string} */
|
|
5492
|
+
itemType: "checkbox" | "yes/no" | "text" | "number" | "date" | "dropdown" | "multi-select" | "photo" | "signature";
|
|
5493
|
+
required: boolean;
|
|
5494
|
+
options: {
|
|
5495
|
+
[key: string]: unknown;
|
|
5496
|
+
} | null;
|
|
5497
|
+
referenceMedia: {
|
|
5498
|
+
assetId: string;
|
|
5499
|
+
caption?: string | null;
|
|
5500
|
+
order?: number;
|
|
5501
|
+
}[];
|
|
5502
|
+
hints: ("photo_required" | "yes_no" | "required" | "reading")[];
|
|
5503
|
+
/** @enum {string} */
|
|
5504
|
+
roomSource: "pose" | "named" | "vision" | "time" | "none";
|
|
5505
|
+
spokenAt: string;
|
|
5506
|
+
quote: string | null;
|
|
5507
|
+
}[];
|
|
5508
|
+
}[];
|
|
5509
|
+
photos: {
|
|
5510
|
+
assetId: string;
|
|
5511
|
+
capturedAt: string;
|
|
5512
|
+
sectionKey: string | null;
|
|
5513
|
+
/** @enum {string} */
|
|
5514
|
+
roomSource: "pose" | "named" | "vision" | "time" | "none";
|
|
5515
|
+
itemKeys: string[];
|
|
5516
|
+
}[];
|
|
5517
|
+
visionUsed: boolean;
|
|
5518
|
+
model: string | null;
|
|
5519
|
+
promptVersion: string;
|
|
5520
|
+
};
|
|
5521
|
+
WalkthroughDraftResponse: {
|
|
5522
|
+
/** @enum {string} */
|
|
5523
|
+
status: "completed" | "running" | "failed";
|
|
5524
|
+
runId: number | null;
|
|
5525
|
+
draft: {
|
|
5526
|
+
name: string;
|
|
5527
|
+
sections: {
|
|
5528
|
+
key: string;
|
|
5529
|
+
title: string;
|
|
5530
|
+
sketchRoomId: number | null;
|
|
5531
|
+
/** @enum {string} */
|
|
5532
|
+
kind: "room" | "custom" | "not_sure";
|
|
5533
|
+
items: {
|
|
5534
|
+
key: string;
|
|
5535
|
+
itemText: string;
|
|
5536
|
+
description: string | null;
|
|
5537
|
+
/** @enum {string} */
|
|
5538
|
+
itemType: "checkbox" | "yes/no" | "text" | "number" | "date" | "dropdown" | "multi-select" | "photo" | "signature";
|
|
5539
|
+
required: boolean;
|
|
5540
|
+
options: {
|
|
5541
|
+
[key: string]: unknown;
|
|
5542
|
+
} | null;
|
|
5543
|
+
referenceMedia: {
|
|
5544
|
+
assetId: string;
|
|
5545
|
+
caption?: string | null;
|
|
5546
|
+
order?: number;
|
|
5547
|
+
}[];
|
|
5548
|
+
hints: ("photo_required" | "yes_no" | "required" | "reading")[];
|
|
5549
|
+
/** @enum {string} */
|
|
5550
|
+
roomSource: "pose" | "named" | "vision" | "time" | "none";
|
|
5551
|
+
spokenAt: string;
|
|
5552
|
+
quote: string | null;
|
|
5553
|
+
}[];
|
|
5554
|
+
}[];
|
|
5555
|
+
photos: {
|
|
5556
|
+
assetId: string;
|
|
5557
|
+
capturedAt: string;
|
|
5558
|
+
sectionKey: string | null;
|
|
5559
|
+
/** @enum {string} */
|
|
5560
|
+
roomSource: "pose" | "named" | "vision" | "time" | "none";
|
|
5561
|
+
itemKeys: string[];
|
|
5562
|
+
}[];
|
|
5563
|
+
visionUsed: boolean;
|
|
5564
|
+
model: string | null;
|
|
5565
|
+
promptVersion: string;
|
|
5566
|
+
} | null;
|
|
5567
|
+
sortRun: {
|
|
5568
|
+
/** @enum {string} */
|
|
5569
|
+
status: "running" | "completed" | "failed";
|
|
5570
|
+
total: number;
|
|
5571
|
+
done: number;
|
|
5572
|
+
} | null;
|
|
5573
|
+
message: string | null;
|
|
5574
|
+
};
|
|
5575
|
+
/** @description `arguments` of the Chatty tool `list_job_checklists` (POST /api/chatty-voice/tools/execute). */
|
|
5576
|
+
ChattyListJobChecklistsArguments: {
|
|
5577
|
+
jobId?: number | string;
|
|
5578
|
+
};
|
|
5579
|
+
/** @description `data` of a successful `list_job_checklists` call (`success: true`). */
|
|
5580
|
+
ChattyListJobChecklistsData: {
|
|
5581
|
+
id: number;
|
|
5582
|
+
name: string;
|
|
5583
|
+
status: string | null;
|
|
5584
|
+
completionPercentage: number;
|
|
5585
|
+
templateId: number | null;
|
|
5586
|
+
}[];
|
|
5587
|
+
/** @description `arguments` of the Chatty tool `get_checklist` (POST /api/chatty-voice/tools/execute). */
|
|
5588
|
+
ChattyGetChecklistArguments: {
|
|
5589
|
+
checklistId?: number | string;
|
|
5590
|
+
checklistName?: string;
|
|
5591
|
+
jobId?: number | string;
|
|
5592
|
+
};
|
|
5593
|
+
/** @description `data` of a successful `get_checklist` call (`success: true`). */
|
|
5594
|
+
ChattyGetChecklistData: {
|
|
5595
|
+
id: number;
|
|
5596
|
+
name: string;
|
|
5597
|
+
status: string | null;
|
|
5598
|
+
completionPercentage: number;
|
|
5599
|
+
jobId: number | null;
|
|
5600
|
+
items: {
|
|
5601
|
+
id: number;
|
|
5602
|
+
itemText: string;
|
|
5603
|
+
itemType: string;
|
|
5604
|
+
required: boolean;
|
|
5605
|
+
done: boolean;
|
|
5606
|
+
value: string | null;
|
|
5607
|
+
section: string | null;
|
|
5608
|
+
referencePhotos: number;
|
|
5609
|
+
}[];
|
|
5610
|
+
};
|
|
5611
|
+
/** @description `arguments` of the Chatty tool `create_checklist` (POST /api/chatty-voice/tools/execute). */
|
|
5612
|
+
ChattyCreateChecklistArguments: {
|
|
5613
|
+
jobId?: number | string;
|
|
5614
|
+
name?: string;
|
|
5615
|
+
templateId?: number | string;
|
|
5616
|
+
templateName?: string;
|
|
5617
|
+
notes?: string;
|
|
5618
|
+
items?: string[];
|
|
5619
|
+
};
|
|
5620
|
+
/** @description `data` of a successful `create_checklist` call (`success: true`). */
|
|
5621
|
+
ChattyCreateChecklistData: {
|
|
5622
|
+
id: number;
|
|
5623
|
+
name: string;
|
|
5624
|
+
jobId: number;
|
|
5625
|
+
itemCount: number;
|
|
5626
|
+
templateId?: number;
|
|
5627
|
+
sections?: {
|
|
5628
|
+
title: string;
|
|
5629
|
+
items: {
|
|
5630
|
+
itemText: string;
|
|
5631
|
+
/** @enum {string} */
|
|
5632
|
+
itemType: "checkbox" | "yes/no" | "text" | "number" | "date" | "dropdown" | "multi-select" | "photo" | "signature";
|
|
5633
|
+
required: boolean;
|
|
5634
|
+
}[];
|
|
5635
|
+
}[];
|
|
5636
|
+
};
|
|
5637
|
+
/** @description `arguments` of the Chatty tool `add_checklist_item` (POST /api/chatty-voice/tools/execute). */
|
|
5638
|
+
ChattyAddChecklistItemArguments: {
|
|
5639
|
+
checklistId?: number | string;
|
|
5640
|
+
checklistName?: string;
|
|
5641
|
+
jobId?: number | string;
|
|
5642
|
+
itemText: string;
|
|
5643
|
+
/** @enum {string} */
|
|
5644
|
+
itemType?: "checkbox" | "yes/no" | "text" | "number" | "date" | "dropdown" | "multi-select" | "photo" | "signature";
|
|
5645
|
+
required?: boolean;
|
|
5646
|
+
description?: string;
|
|
5647
|
+
sectionName?: string;
|
|
5648
|
+
};
|
|
5649
|
+
/** @description `data` of a successful `add_checklist_item` call (`success: true`). */
|
|
5650
|
+
ChattyAddChecklistItemData: {
|
|
5651
|
+
id: number;
|
|
5652
|
+
checklistId: number;
|
|
5653
|
+
itemText: string;
|
|
5654
|
+
/** @enum {string} */
|
|
5655
|
+
itemType: "checkbox" | "yes/no" | "text" | "number" | "date" | "dropdown" | "multi-select" | "photo" | "signature";
|
|
5656
|
+
required: boolean;
|
|
5657
|
+
section: string | null;
|
|
5658
|
+
};
|
|
5659
|
+
/** @description `arguments` of the Chatty tool `complete_checklist_item` (POST /api/chatty-voice/tools/execute). */
|
|
5660
|
+
ChattyCompleteChecklistItemArguments: {
|
|
5661
|
+
checklistId?: number | string;
|
|
5662
|
+
checklistName?: string;
|
|
5663
|
+
jobId?: number | string;
|
|
5664
|
+
itemId?: number | string;
|
|
5665
|
+
itemText?: string;
|
|
5666
|
+
completed?: boolean;
|
|
5667
|
+
};
|
|
5668
|
+
/** @description `data` of a successful `complete_checklist_item` call (`success: true`). */
|
|
5669
|
+
ChattyCompleteChecklistItemData: {
|
|
5670
|
+
checklistId: number;
|
|
5671
|
+
itemId: number;
|
|
5672
|
+
completed: boolean;
|
|
5673
|
+
};
|
|
5674
|
+
/** @description `arguments` of the Chatty tool `set_checklist_item_answer` (POST /api/chatty-voice/tools/execute). */
|
|
5675
|
+
ChattySetChecklistItemAnswerArguments: {
|
|
5676
|
+
checklistId?: number | string;
|
|
5677
|
+
checklistName?: string;
|
|
5678
|
+
jobId?: number | string;
|
|
5679
|
+
itemId?: number | string;
|
|
5680
|
+
itemText?: string;
|
|
5681
|
+
value: string;
|
|
5682
|
+
};
|
|
5683
|
+
/** @description `data` of a successful `set_checklist_item_answer` call (`success: true`). */
|
|
5684
|
+
ChattySetChecklistItemAnswerData: {
|
|
5685
|
+
checklistId: number;
|
|
5686
|
+
itemId: number;
|
|
5687
|
+
value: string;
|
|
5688
|
+
};
|
|
5689
|
+
/** @description `arguments` of the Chatty tool `attach_reference_photo_to_item` (POST /api/chatty-voice/tools/execute). */
|
|
5690
|
+
ChattyAttachReferencePhotoToItemArguments: {
|
|
5691
|
+
checklistId?: number | string;
|
|
5692
|
+
checklistName?: string;
|
|
5693
|
+
jobId?: number | string;
|
|
5694
|
+
itemId?: number | string;
|
|
5695
|
+
itemText?: string;
|
|
5696
|
+
photoId: number | string;
|
|
5697
|
+
caption?: string;
|
|
5698
|
+
};
|
|
5699
|
+
/** @description `data` of a successful `attach_reference_photo_to_item` call (`success: true`). */
|
|
5700
|
+
ChattyAttachReferencePhotoToItemData: {
|
|
5701
|
+
checklistId: number;
|
|
5702
|
+
itemId: number;
|
|
5703
|
+
referenceMedia: {
|
|
5704
|
+
assetId: string;
|
|
5705
|
+
caption?: string | null;
|
|
5706
|
+
order?: number;
|
|
5707
|
+
}[];
|
|
5708
|
+
};
|
|
5709
|
+
/** @description `arguments` of the Chatty tool `draft_checklist_from_job_photos` (POST /api/chatty-voice/tools/execute). */
|
|
5710
|
+
ChattyDraftChecklistFromJobPhotosArguments: {
|
|
5711
|
+
jobId?: number | string;
|
|
5712
|
+
name?: string;
|
|
5713
|
+
create?: boolean;
|
|
5714
|
+
};
|
|
5715
|
+
/** @description `data` of a successful `draft_checklist_from_job_photos` call (`success: true`). */
|
|
5716
|
+
ChattyDraftChecklistFromJobPhotosData: {
|
|
5717
|
+
id?: number;
|
|
5718
|
+
jobId?: number;
|
|
5719
|
+
name: string;
|
|
5720
|
+
items: {
|
|
5721
|
+
itemText: string;
|
|
5722
|
+
photos: number;
|
|
5723
|
+
}[];
|
|
5724
|
+
unsortedPhotos: number;
|
|
5725
|
+
created: boolean;
|
|
5726
|
+
};
|
|
5032
5727
|
};
|
|
5033
5728
|
responses: never;
|
|
5034
5729
|
parameters: never;
|