@epilot/cli 0.1.26 → 0.1.28
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/README.md +1 -1
- package/definitions/app.json +539 -31
- package/definitions/automation.json +42 -0
- package/definitions/configuration-hub.json +757 -7
- package/definitions/customer-portal.json +1063 -63
- package/definitions/email-settings.json +86 -4
- package/definitions/entity.json +568 -4
- package/definitions/event-catalog.json +256 -1
- package/definitions/file.json +262 -4
- package/definitions/integration-toolkit.json +480 -4
- package/definitions/journey.json +21 -1
- package/definitions/kanban.json +2 -1
- package/definitions/metering.json +728 -64
- package/definitions/notes.json +175 -130
- package/definitions/pricing.json +163 -84
- package/definitions/webhooks.json +149 -4
- package/definitions/workflow-definition.json +52 -0
- package/definitions/workflow.json +24 -0
- package/dist/bin/epilot.js +6 -6
- package/dist/{chunk-QSYX2PUB.js → chunk-OBSR3RKB.js} +51 -15
- package/dist/{completion-AZYWK6IZ.js → completion-AUP6EFBO.js} +1 -1
- package/dist/{upgrade-O5G6HRVY.js → upgrade-C6AGEAVE.js} +1 -1
- package/package.json +1 -1
|
@@ -261,6 +261,118 @@
|
|
|
261
261
|
}
|
|
262
262
|
}
|
|
263
263
|
},
|
|
264
|
+
"/v2/events/{event_name}:history": {
|
|
265
|
+
"post": {
|
|
266
|
+
"operationId": "searchEventHistoryV2",
|
|
267
|
+
"summary": "searchEventHistoryV2",
|
|
268
|
+
"description": "Paginated history of events with projected/lightweight payload (v2).\n\nReturns `EventSummary` objects instead of fully hydrated `Event` objects:\nnested entity graphs (objects/arrays-of-objects carrying `_schema`/`_id`)\nare stripped. Use GET /v2/events/{event_name}/history/{event_id} to fetch\nthe full hydrated event for a single result.\n",
|
|
269
|
+
"tags": [
|
|
270
|
+
"Event Catalog"
|
|
271
|
+
],
|
|
272
|
+
"parameters": [
|
|
273
|
+
{
|
|
274
|
+
"name": "event_name",
|
|
275
|
+
"in": "path",
|
|
276
|
+
"required": true,
|
|
277
|
+
"description": "Unique human readable name of the event",
|
|
278
|
+
"schema": {
|
|
279
|
+
"type": "string"
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
],
|
|
283
|
+
"requestBody": {
|
|
284
|
+
"content": {
|
|
285
|
+
"application/json": {
|
|
286
|
+
"schema": {
|
|
287
|
+
"$ref": "#/components/schemas/SearchOptionsV2"
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
"responses": {
|
|
293
|
+
"200": {
|
|
294
|
+
"description": "List of event summaries in the event history",
|
|
295
|
+
"content": {
|
|
296
|
+
"application/json": {
|
|
297
|
+
"schema": {
|
|
298
|
+
"type": "object",
|
|
299
|
+
"properties": {
|
|
300
|
+
"results": {
|
|
301
|
+
"type": "array",
|
|
302
|
+
"items": {
|
|
303
|
+
"$ref": "#/components/schemas/EventSummary"
|
|
304
|
+
}
|
|
305
|
+
},
|
|
306
|
+
"next_cursor": {
|
|
307
|
+
"type": "object",
|
|
308
|
+
"description": "Cursor for pagination. Use this to get the next page of results.",
|
|
309
|
+
"nullable": true,
|
|
310
|
+
"properties": {
|
|
311
|
+
"event_time": {
|
|
312
|
+
"type": "string",
|
|
313
|
+
"description": "Timestamp from the last event in the current page",
|
|
314
|
+
"example": "2025-10-31T12:34:56Z"
|
|
315
|
+
},
|
|
316
|
+
"event_id": {
|
|
317
|
+
"type": "string",
|
|
318
|
+
"description": "Event ID from the last event in the current page",
|
|
319
|
+
"example": "evt_1234567890abcdef"
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
},
|
|
331
|
+
"/v2/events/{event_name}/history/{event_id}": {
|
|
332
|
+
"get": {
|
|
333
|
+
"operationId": "getHistoricalEvent",
|
|
334
|
+
"summary": "getHistoricalEvent",
|
|
335
|
+
"description": "Fetch a single historical event by id with full hydration",
|
|
336
|
+
"tags": [
|
|
337
|
+
"Event Catalog"
|
|
338
|
+
],
|
|
339
|
+
"parameters": [
|
|
340
|
+
{
|
|
341
|
+
"name": "event_name",
|
|
342
|
+
"in": "path",
|
|
343
|
+
"required": true,
|
|
344
|
+
"description": "Unique human readable name of the event",
|
|
345
|
+
"schema": {
|
|
346
|
+
"type": "string"
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"name": "event_id",
|
|
351
|
+
"in": "path",
|
|
352
|
+
"required": true,
|
|
353
|
+
"description": "Unique event identifier (ULID)",
|
|
354
|
+
"schema": {
|
|
355
|
+
"type": "string"
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
],
|
|
359
|
+
"responses": {
|
|
360
|
+
"200": {
|
|
361
|
+
"description": "The fully hydrated historical event",
|
|
362
|
+
"content": {
|
|
363
|
+
"application/json": {
|
|
364
|
+
"schema": {
|
|
365
|
+
"$ref": "#/components/schemas/Event"
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
},
|
|
370
|
+
"404": {
|
|
371
|
+
"description": "Event not found"
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
},
|
|
264
376
|
"/v1/events/{event_name}:trigger": {
|
|
265
377
|
"post": {
|
|
266
378
|
"operationId": "triggerEvent",
|
|
@@ -441,7 +553,7 @@
|
|
|
441
553
|
]
|
|
442
554
|
},
|
|
443
555
|
"UpdateEventPayload": {
|
|
444
|
-
"description": "Payload for updating an event configuration.\nAccepts the same fields as EventConfig (all optional for PATCH).\nCurrently
|
|
556
|
+
"description": "Payload for updating an event configuration.\nAccepts the same fields as EventConfig (all optional for PATCH).\nCurrently `enabled` and `auto_trigger` fields are processed.\n",
|
|
445
557
|
"allOf": [
|
|
446
558
|
{
|
|
447
559
|
"$ref": "#/components/schemas/EventConfigBase"
|
|
@@ -495,6 +607,22 @@
|
|
|
495
607
|
"entity_schema"
|
|
496
608
|
]
|
|
497
609
|
},
|
|
610
|
+
"AttachmentField": {
|
|
611
|
+
"type": "object",
|
|
612
|
+
"description": "A schema field representing file attachments associated with the event.\nPresent in schema_fields for events tagged with \"attachment\".\n",
|
|
613
|
+
"properties": {
|
|
614
|
+
"items": {
|
|
615
|
+
"$ref": "#/components/schemas/EventAttachment"
|
|
616
|
+
},
|
|
617
|
+
"required": {
|
|
618
|
+
"type": "boolean",
|
|
619
|
+
"description": "Whether this field is required in the event payload"
|
|
620
|
+
}
|
|
621
|
+
},
|
|
622
|
+
"required": [
|
|
623
|
+
"items"
|
|
624
|
+
]
|
|
625
|
+
},
|
|
498
626
|
"SchemaField": {
|
|
499
627
|
"oneOf": [
|
|
500
628
|
{
|
|
@@ -502,6 +630,9 @@
|
|
|
502
630
|
},
|
|
503
631
|
{
|
|
504
632
|
"$ref": "#/components/schemas/ContextEntity"
|
|
633
|
+
},
|
|
634
|
+
{
|
|
635
|
+
"$ref": "#/components/schemas/AttachmentField"
|
|
505
636
|
}
|
|
506
637
|
]
|
|
507
638
|
},
|
|
@@ -764,6 +895,60 @@
|
|
|
764
895
|
"contract_id": "880e8400-e29b-41d4-a716-446655440000"
|
|
765
896
|
}
|
|
766
897
|
},
|
|
898
|
+
"EventSummary": {
|
|
899
|
+
"type": "object",
|
|
900
|
+
"description": "A lightweight event summary returned by the v2 history endpoint.\n\nIncludes the standard `_*` metadata fields plus a projected subset of the\nevent payload. Hydrated entity objects (values carrying `_schema` or `_id`\nand arrays of such objects) are stripped — fetch via\n`GET /v2/events/{event_name}/history/{event_id}` for full hydration.\n\nProjected scalar payload fields appear as additional top-level properties.\n",
|
|
901
|
+
"properties": {
|
|
902
|
+
"_org_id": {
|
|
903
|
+
"type": "string",
|
|
904
|
+
"description": "epilot tenant/organization ID"
|
|
905
|
+
},
|
|
906
|
+
"_event_time": {
|
|
907
|
+
"type": "string",
|
|
908
|
+
"format": "date-time",
|
|
909
|
+
"description": "ISO 8601 timestamp when event occurred"
|
|
910
|
+
},
|
|
911
|
+
"_event_id": {
|
|
912
|
+
"type": "string",
|
|
913
|
+
"description": "Unique event identifier (ULID)"
|
|
914
|
+
},
|
|
915
|
+
"_event_name": {
|
|
916
|
+
"type": "string",
|
|
917
|
+
"description": "Event name from catalog"
|
|
918
|
+
},
|
|
919
|
+
"_event_version": {
|
|
920
|
+
"type": "string",
|
|
921
|
+
"description": "Event version (semver)",
|
|
922
|
+
"example": "1.0.0"
|
|
923
|
+
},
|
|
924
|
+
"_event_source": {
|
|
925
|
+
"type": "string",
|
|
926
|
+
"description": "Source that triggered the event"
|
|
927
|
+
},
|
|
928
|
+
"_trigger_source_type": {
|
|
929
|
+
"type": "string",
|
|
930
|
+
"description": "The type of system that triggered the event.\nCommon values: api, automation, operation, portal_user\n",
|
|
931
|
+
"example": "api"
|
|
932
|
+
},
|
|
933
|
+
"_trigger_source": {
|
|
934
|
+
"type": "string",
|
|
935
|
+
"description": "Identifier of the specific trigger source.\n"
|
|
936
|
+
},
|
|
937
|
+
"_ack_id": {
|
|
938
|
+
"type": "string",
|
|
939
|
+
"description": "Unique acknowledgment tracking ID for the event.\n"
|
|
940
|
+
}
|
|
941
|
+
},
|
|
942
|
+
"required": [
|
|
943
|
+
"_org_id",
|
|
944
|
+
"_event_time",
|
|
945
|
+
"_event_id",
|
|
946
|
+
"_event_name",
|
|
947
|
+
"_event_version",
|
|
948
|
+
"_event_source"
|
|
949
|
+
],
|
|
950
|
+
"additionalProperties": true
|
|
951
|
+
},
|
|
767
952
|
"GraphDefinition": {
|
|
768
953
|
"type": "object",
|
|
769
954
|
"description": "Entity graph definition for resolving related entities",
|
|
@@ -959,6 +1144,22 @@
|
|
|
959
1144
|
}
|
|
960
1145
|
}
|
|
961
1146
|
},
|
|
1147
|
+
"SearchOptionsV2": {
|
|
1148
|
+
"description": "Search options for the v2 history endpoint.\n\nExtends `SearchOptions` with an optional `fields` projection. When `fields`\nis omitted, the response includes all `_*` metadata plus all scalar payload\nfields (and primitive arrays / empty objects/arrays) after entity stripping.\nWhen `fields` is provided, glob/exclusion semantics from `FieldsParam` apply\nagainst `payload.*` paths; `_*` metadata is always included. Entity stripping\nruns AFTER selection.\n",
|
|
1149
|
+
"allOf": [
|
|
1150
|
+
{
|
|
1151
|
+
"$ref": "#/components/schemas/SearchOptions"
|
|
1152
|
+
},
|
|
1153
|
+
{
|
|
1154
|
+
"type": "object",
|
|
1155
|
+
"properties": {
|
|
1156
|
+
"fields": {
|
|
1157
|
+
"$ref": "#/components/schemas/FieldsParam"
|
|
1158
|
+
}
|
|
1159
|
+
}
|
|
1160
|
+
}
|
|
1161
|
+
]
|
|
1162
|
+
},
|
|
962
1163
|
"FieldsParam": {
|
|
963
1164
|
"type": "array",
|
|
964
1165
|
"description": "List of entity fields to include or exclude in the response\n\nUse ! to exclude fields, e.g. `!_id` to exclude the `_id` field.\n\nGlobbing and globstart (**) is supported for nested fields.\n",
|
|
@@ -1040,6 +1241,60 @@
|
|
|
1040
1241
|
"success",
|
|
1041
1242
|
"event_id"
|
|
1042
1243
|
]
|
|
1244
|
+
},
|
|
1245
|
+
"EventAttachment": {
|
|
1246
|
+
"type": "object",
|
|
1247
|
+
"description": "A file attachment associated with an event",
|
|
1248
|
+
"properties": {
|
|
1249
|
+
"entity_id": {
|
|
1250
|
+
"type": "string",
|
|
1251
|
+
"format": "uuid",
|
|
1252
|
+
"description": "Entity ID of the file"
|
|
1253
|
+
},
|
|
1254
|
+
"filename": {
|
|
1255
|
+
"type": "string",
|
|
1256
|
+
"description": "Name of the file"
|
|
1257
|
+
},
|
|
1258
|
+
"mime_type": {
|
|
1259
|
+
"type": "string",
|
|
1260
|
+
"description": "MIME type of the file (e.g., application/pdf)"
|
|
1261
|
+
},
|
|
1262
|
+
"size_bytes": {
|
|
1263
|
+
"type": "integer",
|
|
1264
|
+
"minimum": 0,
|
|
1265
|
+
"description": "File size in bytes"
|
|
1266
|
+
},
|
|
1267
|
+
"s3ref": {
|
|
1268
|
+
"type": "object",
|
|
1269
|
+
"description": "S3 reference for the file content",
|
|
1270
|
+
"properties": {
|
|
1271
|
+
"bucket": {
|
|
1272
|
+
"type": "string",
|
|
1273
|
+
"description": "S3 bucket name"
|
|
1274
|
+
},
|
|
1275
|
+
"key": {
|
|
1276
|
+
"type": "string",
|
|
1277
|
+
"description": "S3 object key"
|
|
1278
|
+
}
|
|
1279
|
+
},
|
|
1280
|
+
"required": [
|
|
1281
|
+
"bucket",
|
|
1282
|
+
"key"
|
|
1283
|
+
]
|
|
1284
|
+
},
|
|
1285
|
+
"version_index": {
|
|
1286
|
+
"type": "integer",
|
|
1287
|
+
"description": "File version index (always 0 for newly created files)"
|
|
1288
|
+
},
|
|
1289
|
+
"readable_size": {
|
|
1290
|
+
"type": "string",
|
|
1291
|
+
"description": "Human-readable file size (e.g., \"200 KB\")"
|
|
1292
|
+
}
|
|
1293
|
+
},
|
|
1294
|
+
"required": [
|
|
1295
|
+
"entity_id",
|
|
1296
|
+
"version_index"
|
|
1297
|
+
]
|
|
1043
1298
|
}
|
|
1044
1299
|
}
|
|
1045
1300
|
},
|
package/definitions/file.json
CHANGED
|
@@ -780,6 +780,101 @@
|
|
|
780
780
|
}
|
|
781
781
|
}
|
|
782
782
|
},
|
|
783
|
+
"/v1/files:zipJob": {
|
|
784
|
+
"post": {
|
|
785
|
+
"operationId": "createZipJob",
|
|
786
|
+
"summary": "createZipJob",
|
|
787
|
+
"description": "Create a background job to ZIP multiple files and send a download link via email.\n\nFor bulk downloads of more than 50 files, use this async endpoint instead of client-side zipping.\nThe job will:\n1. Download all requested files from S3\n2. Create a ZIP archive\n3. Upload the ZIP to temporary storage\n4. Send an email notification with the download link\n\nThe ZIP file will be available for 7 days.\n",
|
|
788
|
+
"tags": [
|
|
789
|
+
"File"
|
|
790
|
+
],
|
|
791
|
+
"requestBody": {
|
|
792
|
+
"content": {
|
|
793
|
+
"application/json": {
|
|
794
|
+
"schema": {
|
|
795
|
+
"$ref": "#/components/schemas/CreateZipJobPayload"
|
|
796
|
+
},
|
|
797
|
+
"examples": {
|
|
798
|
+
"Zip multiple files": {
|
|
799
|
+
"value": {
|
|
800
|
+
"file_entity_ids": [
|
|
801
|
+
"ef7d985c-2385-44f4-9c71-ae06a52264f8",
|
|
802
|
+
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
|
|
803
|
+
],
|
|
804
|
+
"zip_filename": "Documents.zip",
|
|
805
|
+
"notify_email": true
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
},
|
|
812
|
+
"responses": {
|
|
813
|
+
"202": {
|
|
814
|
+
"description": "Job created, processing in background",
|
|
815
|
+
"content": {
|
|
816
|
+
"application/json": {
|
|
817
|
+
"schema": {
|
|
818
|
+
"$ref": "#/components/schemas/ZipJob"
|
|
819
|
+
}
|
|
820
|
+
}
|
|
821
|
+
}
|
|
822
|
+
},
|
|
823
|
+
"400": {
|
|
824
|
+
"$ref": "#/components/responses/BadRequestError"
|
|
825
|
+
},
|
|
826
|
+
"401": {
|
|
827
|
+
"$ref": "#/components/responses/UnauthorizedError"
|
|
828
|
+
},
|
|
829
|
+
"500": {
|
|
830
|
+
"$ref": "#/components/responses/InternalServerError"
|
|
831
|
+
}
|
|
832
|
+
}
|
|
833
|
+
}
|
|
834
|
+
},
|
|
835
|
+
"/v1/files:zipJob/{job_id}": {
|
|
836
|
+
"get": {
|
|
837
|
+
"operationId": "getZipJob",
|
|
838
|
+
"summary": "getZipJob",
|
|
839
|
+
"description": "Get the status of a ZIP job",
|
|
840
|
+
"tags": [
|
|
841
|
+
"File"
|
|
842
|
+
],
|
|
843
|
+
"parameters": [
|
|
844
|
+
{
|
|
845
|
+
"name": "job_id",
|
|
846
|
+
"in": "path",
|
|
847
|
+
"required": true,
|
|
848
|
+
"description": "The UUID of the ZIP job",
|
|
849
|
+
"schema": {
|
|
850
|
+
"type": "string",
|
|
851
|
+
"format": "uuid"
|
|
852
|
+
}
|
|
853
|
+
}
|
|
854
|
+
],
|
|
855
|
+
"responses": {
|
|
856
|
+
"200": {
|
|
857
|
+
"description": "ZIP job status",
|
|
858
|
+
"content": {
|
|
859
|
+
"application/json": {
|
|
860
|
+
"schema": {
|
|
861
|
+
"$ref": "#/components/schemas/ZipJob"
|
|
862
|
+
}
|
|
863
|
+
}
|
|
864
|
+
}
|
|
865
|
+
},
|
|
866
|
+
"401": {
|
|
867
|
+
"$ref": "#/components/responses/UnauthorizedError"
|
|
868
|
+
},
|
|
869
|
+
"404": {
|
|
870
|
+
"$ref": "#/components/responses/NotFoundError"
|
|
871
|
+
},
|
|
872
|
+
"500": {
|
|
873
|
+
"$ref": "#/components/responses/InternalServerError"
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
},
|
|
783
878
|
"/v1/files/{id}/preview": {
|
|
784
879
|
"get": {
|
|
785
880
|
"operationId": "previewFile",
|
|
@@ -1199,8 +1294,7 @@
|
|
|
1199
1294
|
"get": {
|
|
1200
1295
|
"operationId": "listPublicLinksForFile",
|
|
1201
1296
|
"summary": "listPublicLinksForFile",
|
|
1202
|
-
"description": "
|
|
1203
|
-
"x-not-implemented": true,
|
|
1297
|
+
"description": "Fetches all public links previously generated for a file",
|
|
1204
1298
|
"parameters": [
|
|
1205
1299
|
{
|
|
1206
1300
|
"name": "id",
|
|
@@ -1340,8 +1434,7 @@
|
|
|
1340
1434
|
"delete": {
|
|
1341
1435
|
"operationId": "revokePublicLink",
|
|
1342
1436
|
"summary": "revokePublicLink",
|
|
1343
|
-
"description": "
|
|
1344
|
-
"x-not-implemented": true,
|
|
1437
|
+
"description": "Revokes a given public link by ID",
|
|
1345
1438
|
"parameters": [
|
|
1346
1439
|
{
|
|
1347
1440
|
"name": "id",
|
|
@@ -2378,6 +2471,171 @@
|
|
|
2378
2471
|
]
|
|
2379
2472
|
}
|
|
2380
2473
|
},
|
|
2474
|
+
"CreateZipJobPayload": {
|
|
2475
|
+
"type": "object",
|
|
2476
|
+
"description": "Request payload to create a ZIP job for bulk file download.\nProvide either an explicit list of `file_entity_ids` (up to 1000) or an\n`entity_query` that resolves to file entities (up to 10000).\n",
|
|
2477
|
+
"properties": {
|
|
2478
|
+
"file_entity_ids": {
|
|
2479
|
+
"type": "array",
|
|
2480
|
+
"description": "List of file entity IDs to include in the ZIP",
|
|
2481
|
+
"items": {
|
|
2482
|
+
"type": "string",
|
|
2483
|
+
"format": "uuid"
|
|
2484
|
+
},
|
|
2485
|
+
"minItems": 1,
|
|
2486
|
+
"maxItems": 1000,
|
|
2487
|
+
"example": [
|
|
2488
|
+
"ef7d985c-2385-44f4-9c71-ae06a52264f8",
|
|
2489
|
+
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
|
|
2490
|
+
]
|
|
2491
|
+
},
|
|
2492
|
+
"entity_query": {
|
|
2493
|
+
"type": "object",
|
|
2494
|
+
"description": "Entity search query used to resolve files to include in the ZIP",
|
|
2495
|
+
"properties": {
|
|
2496
|
+
"q": {
|
|
2497
|
+
"type": "string",
|
|
2498
|
+
"description": "Lucene-style search query (same syntax as entity search)",
|
|
2499
|
+
"example": "_schema:file AND _tags:invoice"
|
|
2500
|
+
},
|
|
2501
|
+
"sort": {
|
|
2502
|
+
"type": "string",
|
|
2503
|
+
"description": "Sort expression forwarded to the entity search",
|
|
2504
|
+
"example": "_created_at:desc"
|
|
2505
|
+
}
|
|
2506
|
+
},
|
|
2507
|
+
"required": [
|
|
2508
|
+
"q"
|
|
2509
|
+
]
|
|
2510
|
+
},
|
|
2511
|
+
"zip_filename": {
|
|
2512
|
+
"type": "string",
|
|
2513
|
+
"description": "Name of the generated ZIP file",
|
|
2514
|
+
"default": "Files.zip",
|
|
2515
|
+
"example": "Documents.zip"
|
|
2516
|
+
},
|
|
2517
|
+
"notify_email": {
|
|
2518
|
+
"type": "boolean",
|
|
2519
|
+
"description": "Send email notification when ZIP is ready",
|
|
2520
|
+
"default": true
|
|
2521
|
+
}
|
|
2522
|
+
},
|
|
2523
|
+
"oneOf": [
|
|
2524
|
+
{
|
|
2525
|
+
"required": [
|
|
2526
|
+
"file_entity_ids"
|
|
2527
|
+
]
|
|
2528
|
+
},
|
|
2529
|
+
{
|
|
2530
|
+
"required": [
|
|
2531
|
+
"entity_query"
|
|
2532
|
+
]
|
|
2533
|
+
}
|
|
2534
|
+
]
|
|
2535
|
+
},
|
|
2536
|
+
"ZipJob": {
|
|
2537
|
+
"type": "object",
|
|
2538
|
+
"description": "ZIP job status and result",
|
|
2539
|
+
"properties": {
|
|
2540
|
+
"job_id": {
|
|
2541
|
+
"type": "string",
|
|
2542
|
+
"format": "uuid",
|
|
2543
|
+
"description": "Unique identifier for the ZIP job",
|
|
2544
|
+
"example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
|
|
2545
|
+
},
|
|
2546
|
+
"status": {
|
|
2547
|
+
"type": "string",
|
|
2548
|
+
"description": "Current status of the ZIP job",
|
|
2549
|
+
"enum": [
|
|
2550
|
+
"queued",
|
|
2551
|
+
"downloading",
|
|
2552
|
+
"zipping",
|
|
2553
|
+
"uploading",
|
|
2554
|
+
"sending_notification",
|
|
2555
|
+
"completed",
|
|
2556
|
+
"failed"
|
|
2557
|
+
],
|
|
2558
|
+
"example": "completed"
|
|
2559
|
+
},
|
|
2560
|
+
"progress": {
|
|
2561
|
+
"type": "object",
|
|
2562
|
+
"description": "Progress information for the job",
|
|
2563
|
+
"properties": {
|
|
2564
|
+
"total_files": {
|
|
2565
|
+
"type": "integer",
|
|
2566
|
+
"description": "Total number of files to process",
|
|
2567
|
+
"example": 100
|
|
2568
|
+
},
|
|
2569
|
+
"downloaded_files": {
|
|
2570
|
+
"type": "integer",
|
|
2571
|
+
"description": "Number of files successfully downloaded",
|
|
2572
|
+
"example": 75
|
|
2573
|
+
},
|
|
2574
|
+
"failed_files": {
|
|
2575
|
+
"type": "integer",
|
|
2576
|
+
"description": "Number of files that failed to download",
|
|
2577
|
+
"example": 2
|
|
2578
|
+
}
|
|
2579
|
+
}
|
|
2580
|
+
},
|
|
2581
|
+
"result": {
|
|
2582
|
+
"type": "object",
|
|
2583
|
+
"description": "Result of the completed ZIP job",
|
|
2584
|
+
"properties": {
|
|
2585
|
+
"file_entity_id": {
|
|
2586
|
+
"type": "string",
|
|
2587
|
+
"format": "uuid",
|
|
2588
|
+
"description": "File entity ID of the generated ZIP",
|
|
2589
|
+
"example": "ef7d985c-2385-44f4-9c71-ae06a52264f8"
|
|
2590
|
+
},
|
|
2591
|
+
"download_url": {
|
|
2592
|
+
"type": "string",
|
|
2593
|
+
"format": "uri",
|
|
2594
|
+
"description": "Presigned download URL (expires in 24 hours)",
|
|
2595
|
+
"example": "https://epilot-prod-user-content.s3.eu-central-1.amazonaws.com/123/files.zip?X-Amz-..."
|
|
2596
|
+
},
|
|
2597
|
+
"expires_at": {
|
|
2598
|
+
"type": "string",
|
|
2599
|
+
"format": "date-time",
|
|
2600
|
+
"description": "When the download URL expires",
|
|
2601
|
+
"example": "2024-01-02T12:00:00Z"
|
|
2602
|
+
},
|
|
2603
|
+
"zip_size_bytes": {
|
|
2604
|
+
"type": "integer",
|
|
2605
|
+
"description": "Size of the generated ZIP file in bytes",
|
|
2606
|
+
"example": 104857600
|
|
2607
|
+
}
|
|
2608
|
+
}
|
|
2609
|
+
},
|
|
2610
|
+
"error": {
|
|
2611
|
+
"type": "string",
|
|
2612
|
+
"description": "Error message if job failed",
|
|
2613
|
+
"example": "Failed to download file: access denied"
|
|
2614
|
+
},
|
|
2615
|
+
"created_at": {
|
|
2616
|
+
"type": "string",
|
|
2617
|
+
"format": "date-time",
|
|
2618
|
+
"description": "When the job was created",
|
|
2619
|
+
"example": "2024-01-01T12:00:00Z"
|
|
2620
|
+
},
|
|
2621
|
+
"created_by": {
|
|
2622
|
+
"type": "string",
|
|
2623
|
+
"description": "User ID who created the job",
|
|
2624
|
+
"example": "10234"
|
|
2625
|
+
},
|
|
2626
|
+
"org_id": {
|
|
2627
|
+
"type": "string",
|
|
2628
|
+
"description": "Organization ID",
|
|
2629
|
+
"example": "123"
|
|
2630
|
+
},
|
|
2631
|
+
"updated_at": {
|
|
2632
|
+
"type": "string",
|
|
2633
|
+
"format": "date-time",
|
|
2634
|
+
"description": "When the job was last updated",
|
|
2635
|
+
"example": "2024-01-01T12:05:00Z"
|
|
2636
|
+
}
|
|
2637
|
+
}
|
|
2638
|
+
},
|
|
2381
2639
|
"VerifyCustomDownloadUrlPayload": {
|
|
2382
2640
|
"type": "object",
|
|
2383
2641
|
"properties": {
|