@celigo/api-specs 0.2.220 → 0.2.222

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.
@@ -149,8 +149,13 @@ paths:
149
149
 
150
150
  Use `fileType` with a dated window (`startDate`/`endDate`) to keep
151
151
  result sets bounded. `faStatus` must be passed as an array when
152
- filtering. Unknown filter fields are silently ignored. To fetch the
153
- raw EDI file for a returned record, use
152
+ filtering. Unknown filter fields are silently ignored. The dashboard's
153
+ `filters` object narrows server-side by document type, direction,
154
+ acknowledgement status, trading partner, lifecycle status, MDN status
155
+ and date range; `view: lifecycle` with `mode: browse` groups the
156
+ documents by order lifecycle (one collapsed row per group, newest
157
+ activity first) and `mode: expand` opens one group. To fetch the raw
158
+ EDI file for a returned record, use
154
159
  `POST /v1/jobs/{_flowJobId}/files/signedURL` with the record's
155
160
  `s3Key`.
156
161
  requestBody:
@@ -190,6 +195,34 @@ paths:
190
195
  order: desc
191
196
  limit: 100
192
197
  startDate: 1742774400000
198
+ dashboard_filters:
199
+ summary: Server-side dashboard filters (dual-view response)
200
+ value:
201
+ fileType: X12
202
+ filters:
203
+ lifecycleStatus:
204
+ - Invoice received
205
+ partner:
206
+ - Acme Foods
207
+ dateRange:
208
+ from: '2026-11-01'
209
+ to: '2026-11-03'
210
+ lifecycle_browse:
211
+ summary: Collapsed lifecycle groups, newest activity first
212
+ value:
213
+ fileType: X12
214
+ view: lifecycle
215
+ mode: browse
216
+ limit: 20
217
+ filters: {}
218
+ lifecycle_expand:
219
+ summary: Every document of one lifecycle group
220
+ value:
221
+ fileType: X12
222
+ view: lifecycle
223
+ mode: expand
224
+ referenceDocumentNumber: PO P129-ORDER-0001
225
+ partnerPairKey: 'ACMEFOODS :CELIGOTEST '
193
226
  responses:
194
227
  '200':
195
228
  description: |-
@@ -222,7 +255,7 @@ paths:
222
255
  _integrationId: 66cc9b31f2be816bf9377036
223
256
  _flowJobId: 6a05fe1675bab7047b42f047
224
257
  fileType: X12
225
- documentType: '850'
258
+ documentType: PO 850
226
259
  documentNumber: PO03302026A
227
260
  direction: Inbound
228
261
  faStatus: inProgress
@@ -236,7 +269,13 @@ paths:
236
269
  interchange: '000000005'
237
270
  group: '1'
238
271
  transactionSet: '0004'
272
+ lifecycleStatus: PO received
273
+ referenceDocumentNumber:
274
+ - PO PO03302026A
275
+ tradingPartnerName: Globex Retail
276
+ partnerPairKey: '1234567890 :CELIGOLABZ '
239
277
  lastModified: '2026-05-14T16:53:44.624Z'
278
+ totalCount: 1
240
279
  edifact_record:
241
280
  summary: EDIFACT ORDERS inbound
242
281
  value:
@@ -258,6 +297,147 @@ paths:
258
297
  unb: '1'
259
298
  unh: '100001'
260
299
  lastModified: '2026-05-14T16:52:19.677Z'
300
+ lifecycle_browse:
301
+ summary: Lifecycle browse — one collapsed row per order
302
+ value:
303
+ view: lifecycle
304
+ mode: browse
305
+ groups:
306
+ - groupKey:
307
+ referenceDocumentNumber: PO P129-ORDER-0001
308
+ partnerPairKey: 'ACMEFOODS :CELIGOTEST '
309
+ fileType: X12
310
+ hasChildren: true
311
+ latestTransaction:
312
+ _id: 6ae8902e8f6a1c2d3e4f5a6b
313
+ fileType: X12
314
+ _userId: 5e58483b68b52e5827d56a86
315
+ sandbox: false
316
+ s3Key: 4f0c2c1e8e9d4b7a9a1f3e5d7c9b2a10
317
+ isaSenderId: 'ACMEFOODS '
318
+ isaReceiverId: 'CELIGOTEST '
319
+ gsSenderId: ACMEFOODS
320
+ gsReceiverId: CELIGOTEST
321
+ controlNumber:
322
+ interchange: '000000305'
323
+ group: '305'
324
+ transactionSet: '0001'
325
+ documentType: IN 810
326
+ documentNumber: INV-P129-0001
327
+ direction: Inbound
328
+ faStatus: notApplicable
329
+ lifecycleStatus: Invoice received
330
+ referenceDocumentNumber:
331
+ - PO P129-ORDER-0001
332
+ tradingPartnerName: Acme Foods
333
+ partnerPairKey: 'ACMEFOODS :CELIGOTEST '
334
+ lastModified: '2026-11-02T13:29:28.376Z'
335
+ relationshipMetadata:
336
+ hasPurchaseOrderAnchor: true
337
+ - groupKey:
338
+ referenceDocumentNumber: null
339
+ partnerPairKey: 'ACMEFOODS :CELIGOTEST '
340
+ fileType: X12
341
+ hasChildren: false
342
+ latestTransaction:
343
+ _id: 6ae88e49fbb635a43997e82d
344
+ fileType: X12
345
+ _userId: 5e58483b68b52e5827d56a86
346
+ sandbox: false
347
+ s3Key: 4f0c2c1e8e9d4b7a9a1f3e5d7c9b2a10
348
+ isaSenderId: 'ACMEFOODS '
349
+ isaReceiverId: 'CELIGOTEST '
350
+ gsSenderId: ACMEFOODS
351
+ gsReceiverId: CELIGOTEST
352
+ controlNumber:
353
+ interchange: '000000305'
354
+ group: '305'
355
+ transactionSet: '0001'
356
+ documentType: PO 850
357
+ direction: Inbound
358
+ faStatus: notApplicable
359
+ lifecycleStatus: PO received
360
+ tradingPartnerName: Acme Foods
361
+ partnerPairKey: 'ACMEFOODS :CELIGOTEST '
362
+ lastModified: '2026-11-02T13:21:13.376Z'
363
+ relationshipMetadata: null
364
+ lifecycle_expand:
365
+ summary: Lifecycle expand — the newest document and the rest of the group
366
+ value:
367
+ view: lifecycle
368
+ mode: expand
369
+ group:
370
+ latestTransaction:
371
+ _id: 6ae8902e8f6a1c2d3e4f5a6b
372
+ fileType: X12
373
+ _userId: 5e58483b68b52e5827d56a86
374
+ sandbox: false
375
+ s3Key: 4f0c2c1e8e9d4b7a9a1f3e5d7c9b2a10
376
+ isaSenderId: 'ACMEFOODS '
377
+ isaReceiverId: 'CELIGOTEST '
378
+ gsSenderId: ACMEFOODS
379
+ gsReceiverId: CELIGOTEST
380
+ controlNumber:
381
+ interchange: '000000305'
382
+ group: '305'
383
+ transactionSet: '0001'
384
+ documentType: IN 810
385
+ documentNumber: INV-P129-0001
386
+ direction: Inbound
387
+ faStatus: notApplicable
388
+ lifecycleStatus: Invoice received
389
+ referenceDocumentNumber:
390
+ - PO P129-ORDER-0001
391
+ tradingPartnerName: Acme Foods
392
+ partnerPairKey: 'ACMEFOODS :CELIGOTEST '
393
+ lastModified: '2026-11-02T13:29:28.376Z'
394
+ ediTransactions:
395
+ - _id: 6ae88faf1e2d3c4b5a697889
396
+ fileType: X12
397
+ _userId: 5e58483b68b52e5827d56a86
398
+ sandbox: false
399
+ s3Key: 4f0c2c1e8e9d4b7a9a1f3e5d7c9b2a10
400
+ isaSenderId: 'ACMEFOODS '
401
+ isaReceiverId: 'CELIGOTEST '
402
+ gsSenderId: ACMEFOODS
403
+ gsReceiverId: CELIGOTEST
404
+ controlNumber:
405
+ interchange: '000000305'
406
+ group: '305'
407
+ transactionSet: '0001'
408
+ documentType: SH 856
409
+ documentNumber: ASN-P129-0001
410
+ direction: Inbound
411
+ faStatus: notApplicable
412
+ lifecycleStatus: ASN received
413
+ referenceDocumentNumber:
414
+ - PO P129-ORDER-0001
415
+ tradingPartnerName: Acme Foods
416
+ partnerPairKey: 'ACMEFOODS :CELIGOTEST '
417
+ lastModified: '2026-11-02T13:27:14.020Z'
418
+ - _id: 6ae88f8a2b3c4d5e6f708192
419
+ fileType: X12
420
+ _userId: 5e58483b68b52e5827d56a86
421
+ sandbox: false
422
+ s3Key: 4f0c2c1e8e9d4b7a9a1f3e5d7c9b2a10
423
+ isaSenderId: 'ACMEFOODS '
424
+ isaReceiverId: 'CELIGOTEST '
425
+ gsSenderId: ACMEFOODS
426
+ gsReceiverId: CELIGOTEST
427
+ controlNumber:
428
+ interchange: '000000305'
429
+ group: '305'
430
+ transactionSet: '0001'
431
+ documentType: PO 850
432
+ documentNumber: P129-ORDER-0001
433
+ direction: Inbound
434
+ faStatus: notApplicable
435
+ lifecycleStatus: PO received
436
+ referenceDocumentNumber:
437
+ - PO P129-ORDER-0001
438
+ tradingPartnerName: Acme Foods
439
+ partnerPairKey: 'ACMEFOODS :CELIGOTEST '
440
+ lastModified: '2026-11-02T13:26:29.963Z'
261
441
  '400':
262
442
  description: The request body failed validation.
263
443
  content:
@@ -290,8 +470,255 @@ paths:
290
470
  errors:
291
471
  - code: invalid_sort_order
292
472
  message: order must be asc or desc
473
+ invalid_lifecycle_browse_limit:
474
+ value:
475
+ errors:
476
+ - code: invalid_lifecycle_browse_limit
477
+ message: limit must be an integer between 1 and 50 for lifecycle browse
478
+ invalid_lifecycle_scan_batch_size:
479
+ value:
480
+ errors:
481
+ - code: invalid_lifecycle_scan_batch_size
482
+ message: scanBatchSize must be an integer between 1 and 1000 for lifecycle browse
483
+ invalid_lifecycle_expand_group_key:
484
+ value:
485
+ errors:
486
+ - code: invalid_lifecycle_expand_group_key
487
+ message: referenceDocumentNumber and partnerPairKey are required for lifecycle expand mode
488
+ invalid_query_views:
489
+ value:
490
+ errors:
491
+ - code: invalid_query_views
492
+ message: views must contain list and lifecycle
493
+ invalid_query_dual_page_token:
494
+ value:
495
+ errors:
496
+ - code: invalid_query_dual_page_token
497
+ message: dual query pageToken must contain list and lifecycle cursors
498
+ invalid_search_filters:
499
+ summary: a filter dimension is malformed (here `direction` spelled as on the record, not lowercase)
500
+ value:
501
+ errors:
502
+ - code: invalid_search_filters
503
+ message: Invalid filters for field direction
504
+ invalid_fa_status:
505
+ value:
506
+ errors:
507
+ - code: invalid_fa_status
508
+ message: 'Invalid fa status, only accepted values: notReceived,accepted,acceptedWithErrors,rejected,failed,notApplicable'
509
+ '401':
510
+ $ref: '#/components/responses/401-unauthorized'
511
+ '404':
512
+ description: The lifecycle group named by an expand request does not exist in this environment.
513
+ content:
514
+ application/json:
515
+ schema:
516
+ $ref: '#/components/schemas/Error'
517
+ examples:
518
+ lifecycle_group_not_found:
519
+ value:
520
+ errors:
521
+ - code: lifecycle_group_not_found
522
+ message: No accessible lifecycle group found for the given referenceDocumentNumber and partnerPairKey
523
+ '422':
524
+ description: The lifecycle view and mode fields contradict each other.
525
+ content:
526
+ application/json:
527
+ schema:
528
+ $ref: '#/components/schemas/Error'
529
+ examples:
530
+ invalid_lifecycle_mode:
531
+ value:
532
+ errors:
533
+ - code: invalid_lifecycle_mode
534
+ message: mode must be browse or expand
535
+ invalid_query_view:
536
+ summary: mode sent without view lifecycle
537
+ value:
538
+ errors:
539
+ - code: invalid_query_view
540
+ message: view must be lifecycle when mode is provided
541
+ /v1/ediTransactions/search:
542
+ post:
543
+ x-internal: false
544
+ operationId: searchEDITransactions
545
+ tags:
546
+ - EDI Transactions
547
+ summary: Search EDI transactions by keyword
548
+ description: |-
549
+ Searches one EDI standard's transactions for a keyword, optionally
550
+ narrowed by the B2B Manager dashboard filters. By default the response
551
+ carries a list window and a lifecycle window side by side, which is what
552
+ the dashboard renders; a lifecycle group that contains a match comes back
553
+ whole — its newest member as `latestTransaction` and every other member
554
+ in `ediTransactions`, matched or not, each matched row naming the fields
555
+ it matched in `matchedFields`.
556
+
557
+ X12 `documentType` values come back labeled with the functional group
558
+ code, for example `PO 850`. Requires a B2B / EDI license and permission to
559
+ read EDI transactions.
560
+ requestBody:
561
+ required: true
562
+ content:
563
+ application/json:
564
+ schema:
565
+ $ref: '#/components/schemas/EDITransactionsSearchRequest'
566
+ examples:
567
+ dual_default:
568
+ summary: Search X12 transactions in both views
569
+ value:
570
+ keyword: PO03302026A
571
+ source: X12
572
+ list_rejected:
573
+ summary: List view, rejected only, newest first
574
+ value:
575
+ keyword: Globex
576
+ source: X12
577
+ viewMode: list
578
+ pageSize: 50
579
+ sortBy: lastModified
580
+ order: desc
581
+ filters:
582
+ faStatus:
583
+ - rejected
584
+ responses:
585
+ '200':
586
+ description: |-
587
+ One page of matches. `ediTransactions` is an empty array (or empty
588
+ windows) when nothing matches.
589
+ content:
590
+ application/json:
591
+ schema:
592
+ $ref: '#/components/schemas/EDITransactionsSearchResponse'
593
+ '400':
594
+ description: The request body failed validation.
595
+ content:
596
+ application/json:
597
+ schema:
598
+ $ref: '#/components/schemas/Error'
599
+ examples:
600
+ keyword_required:
601
+ value:
602
+ errors:
603
+ - code: keyword_required
604
+ message: keyword is required for search
605
+ keyword_too_short:
606
+ value:
607
+ errors:
608
+ - code: keyword_too_short
609
+ message: keyword must be at least 3 characters
610
+ keyword_too_long:
611
+ value:
612
+ errors:
613
+ - code: keyword_too_long
614
+ message: keyword must not exceed 100 characters
615
+ invalid_keyword:
616
+ summary: keyword contains control characters
617
+ value:
618
+ errors:
619
+ - code: invalid_keyword
620
+ message: keyword contains invalid characters
621
+ invalid_source:
622
+ value:
623
+ errors:
624
+ - code: invalid_source
625
+ message: source must be X12 or EDIFACT
626
+ invalid_view_mode:
627
+ value:
628
+ errors:
629
+ - code: invalid_view_mode
630
+ message: viewMode must be list, lifecycle, or dual
631
+ invalid_page_size:
632
+ value:
633
+ errors:
634
+ - code: invalid_page_size
635
+ message: pageSize must be an integer between 1 and 100
636
+ invalid_page_token:
637
+ value:
638
+ errors:
639
+ - code: invalid_page_token
640
+ message: pageToken is invalid or malformed
641
+ invalid_search_filters:
642
+ value:
643
+ errors:
644
+ - code: invalid_search_filters
645
+ message: Invalid filters for field faStatus
646
+ invalid_fa_status:
647
+ summary: filters.faStatus holds an unknown value
648
+ value:
649
+ errors:
650
+ - code: invalid_fa_status
651
+ message: 'Invalid fa status, only accepted values: notReceived,accepted,acceptedWithErrors,rejected,failed,notApplicable,inProgress'
652
+ invalid_filter_lifecycle_status:
653
+ summary: filters.lifecycleStatus holds an unknown value (message shortened)
654
+ value:
655
+ errors:
656
+ - code: invalid_filter_lifecycle_status
657
+ message: 'Invalid lifecycleStatus filter. Accepted values: PO received, PO sent, PO Ack received, PO Ack sent, …'
658
+ invalid_date_range:
659
+ summary: filters.dateRange is malformed or reversed
660
+ value:
661
+ errors:
662
+ - code: invalid_date_range
663
+ message: please provide a valid date range
664
+ invalid_search_columns:
665
+ value:
666
+ errors:
667
+ - code: invalid_search_columns
668
+ message: Invalid columns for field visibleColumns.list
669
+ invalid_sandbox:
670
+ value:
671
+ errors:
672
+ - code: invalid_sandbox
673
+ message: sandbox must be a boolean
674
+ unsupported_sort_field:
675
+ value:
676
+ errors:
677
+ - code: unsupported_sort_field
678
+ message: 'sortBy must be one of: relevance, lastModified, tradingPartnerName'
679
+ invalid_sort_order:
680
+ value:
681
+ errors:
682
+ - code: invalid_sort_order
683
+ message: order must be asc or desc
684
+ sort_not_supported_for_lifecycle:
685
+ value:
686
+ errors:
687
+ - code: sort_not_supported_for_lifecycle
688
+ message: Lifecycle view supports only the default sort (sortBy=lastModified, order=desc)
293
689
  '401':
294
690
  $ref: '#/components/responses/401-unauthorized'
691
+ '408':
692
+ description: The search took too long.
693
+ content:
694
+ application/json:
695
+ schema:
696
+ $ref: '#/components/schemas/Error'
697
+ examples:
698
+ search_timeout:
699
+ value:
700
+ errors:
701
+ - code: search_timeout
702
+ message: search request timed out
703
+ '503':
704
+ description: |-
705
+ Search, or the requested sort, is temporarily unavailable. For the
706
+ sort codes, retry without `sortBy` and `order`.
707
+ content:
708
+ application/json:
709
+ schema:
710
+ $ref: '#/components/schemas/Error'
711
+ examples:
712
+ search_unavailable:
713
+ value:
714
+ errors:
715
+ - code: search_unavailable
716
+ message: Atlas Search is temporarily unavailable
717
+ sort_disabled:
718
+ value:
719
+ errors:
720
+ - code: sort_disabled
721
+ message: Sorting is temporarily unavailable. Retry without sortBy and order to use the default sort.
295
722
  /v1/ediTransactions/download:
296
723
  post:
297
724
  x-internal: false
@@ -1475,14 +1902,17 @@ components:
1475
1902
  documentType:
1476
1903
  type: string
1477
1904
  description: |-
1478
- EDI document type. X12: usually the numeric transaction-set ID as a
1479
- string (`"850"`, `"810"`, `"856"`, `"997"`). EDIFACT: UNH01 message
1480
- type (`"ORDERS"`, `"INVOIC"`, `"DESADV"`, `"CONTRL"`). Not a closed
1481
- set — file definitions can supply partner-specific document codes
1482
- instead (e.g. `"PO"`, `"SH"`, `"IB"`, `"OSTRPT"`), so treat this as a
1483
- free-form label.
1905
+ EDI document type. X12: the transaction-set ID labeled with its GS01
1906
+ functional-group code — `"PO 850"`, `"IN 810"`, `"SH 856"`, `"PR 855"`
1907
+ — on every read path (`/query`, `/search`, lifecycle browse and
1908
+ expand, `/filter-options`, the download CSV); `filters.documentType`
1909
+ accepts the labeled form or the bare code. EDIFACT:
1910
+ the UNH01 message type (`"ORDERS"`, `"INVOIC"`, `"DESADV"`,
1911
+ `"CONTRL"`). Not a closed set — file definitions can supply
1912
+ partner-specific document codes instead (e.g. `"PO"`, `"SH"`,
1913
+ `"IB"`, `"OSTRPT"`), so treat this as a free-form label.
1484
1914
  examples:
1485
- - '850'
1915
+ - PO 850
1486
1916
  documentNumber:
1487
1917
  type: string
1488
1918
  description: |-
@@ -1555,10 +1985,23 @@ components:
1555
1985
  Upper-cased key identifying the trading-partner pair that exchanged
1556
1986
  the document, shared by every document of that pair so an order
1557
1987
  lifecycle can be followed across documents together with
1558
- `referenceDocumentNumber`. Present only when the flow resolved the
1559
- partner.
1988
+ `referenceDocumentNumber`. The two interchange ids keep the padding
1989
+ they were stored with (fixed-width ISA fields keep their trailing
1990
+ spaces); pass the key back exactly as returned when expanding a
1991
+ lifecycle group. Present only when the flow resolved the partner.
1992
+ examples:
1993
+ - 'ACMEFOODS :CELIGOTEST '
1994
+ matchedFields:
1995
+ type: array
1996
+ items:
1997
+ type: string
1998
+ description: |-
1999
+ Record fields the keyword matched, as field paths
2000
+ (`referenceDocumentNumber`, `controlNumber.interchange`, …). Present
2001
+ only on rows returned by `POST /v1/ediTransactions/search`.
1560
2002
  examples:
1561
- - ACME:GLOBEX
2003
+ - - documentNumber
2004
+ - referenceDocumentNumber
1562
2005
  direction:
1563
2006
  type: string
1564
2007
  enum:
@@ -1767,62 +2210,190 @@ components:
1767
2210
  - message
1768
2211
  required:
1769
2212
  - errors
1770
- EDITransactionsQueryRequest:
2213
+ EDIDashboardDirection:
2214
+ type: string
2215
+ enum:
2216
+ - inbound
2217
+ - outbound
2218
+ x-enumDescriptions:
2219
+ inbound: Documents received from a trading partner.
2220
+ outbound: Documents sent to a trading partner.
2221
+ description: Transaction direction as the dashboard filters spell it.
2222
+ EDIDashboardFAStatus:
2223
+ type: string
2224
+ enum:
2225
+ - inProgress
2226
+ - notApplicable
2227
+ - notReceived
2228
+ - accepted
2229
+ - acceptedWithErrors
2230
+ - rejected
2231
+ - failed
2232
+ x-enumDescriptions:
2233
+ inProgress: Awaiting functional acknowledgment from the trading partner.
2234
+ notApplicable: No functional acknowledgment expected.
2235
+ notReceived: Functional acknowledgment expected but not yet received.
2236
+ accepted: Functional acknowledgment received and the transaction was accepted.
2237
+ acceptedWithErrors: Functional acknowledgment received with errors, but the transaction was accepted.
2238
+ rejected: Functional acknowledgment received and the transaction was rejected.
2239
+ failed: Functional acknowledgment processing failed.
2240
+ description: Functional acknowledgment status of a transaction.
2241
+ EDIDashboardMDNStatus:
2242
+ type: string
2243
+ enum:
2244
+ - sent
2245
+ - received
2246
+ x-enumDescriptions:
2247
+ sent: An AS2 MDN was sent for the document.
2248
+ received: An AS2 MDN was received for the document.
2249
+ description: AS2 MDN status of a transaction.
2250
+ EDIDashboardFilters:
1771
2251
  type: object
1772
2252
  description: |-
1773
- Filter for `POST /v1/ediTransactions/query`. All fields are optional.
1774
- Results are narrowed by `fileType`, `interchangeSenderId`,
1775
- `interchangeReceiverId`, `documentNumber`, `faStatus`, and the
1776
- `startDate`/`endDate` window. `direction`, `documentType`, and
1777
- `_integrationId` are accepted but not applied server-side (filter on those
1778
- client-side). Records come back newest-first by `lastModified` unless
1779
- `sortBy` or `order` is set, and are cursor-paginated via `pageToken`.
2253
+ B2B Manager dashboard filter dimensions. An empty object, or one whose
2254
+ arrays are all empty, applies no filter.
1780
2255
  properties:
1781
- fileType:
1782
- type: string
1783
- enum:
1784
- - X12
1785
- - EDIFACT
1786
- x-enumDescriptions:
1787
- X12: ANSI X12 EDI standard.
1788
- EDIFACT: UN/EDIFACT EDI standard.
1789
- description: |-
1790
- EDI standard family. Defaults to `X12` when omitted — set
1791
- `fileType: EDIFACT` explicitly to query EDIFACT records.
1792
- interchangeSenderId:
1793
- type: string
1794
- description: |-
1795
- Filter by interchange sender ID — exact match against the record's
1796
- `isaSenderId` (X12 ISA06). Applied server-side.
1797
- examples:
1798
- - '1234567890'
1799
- interchangeReceiverId:
1800
- type: string
2256
+ documentType:
2257
+ type: array
2258
+ items:
2259
+ type: string
1801
2260
  description: |-
1802
- Filter by interchange receiver ID — exact match against the record's
1803
- `isaReceiverId` (X12 ISA08). Applied server-side.
2261
+ Document types to match, as the X12 transaction-set code or the
2262
+ EDIFACT message type (`850`, `ORDERS`). An X12 code labeled with its
2263
+ functional group (`PO 850`) is read as the bare code.
1804
2264
  examples:
1805
- - CELIGOLABZ
2265
+ - - '850'
2266
+ - PO 810
1806
2267
  direction:
1807
- type: string
1808
- enum:
1809
- - Inbound
1810
- - Outbound
1811
- x-enumDescriptions:
1812
- Inbound: Document received from a trading partner.
1813
- Outbound: Document sent to a trading partner.
1814
- description: |-
1815
- Transaction direction. Accepted by the endpoint but not applied as a
1816
- server-side filter — the result set is unaffected; filter client-side.
1817
- documentType:
1818
- type: string
2268
+ type: array
2269
+ items:
2270
+ $ref: '#/components/schemas/EDIDashboardDirection'
1819
2271
  description: |-
1820
- EDI document type code. For X12 this is the numeric transaction-set ID
1821
- as a string (e.g. `"850"`, `"810"`, `"856"`, `"997"`); for EDIFACT the
1822
- UNH01 message type (e.g. `"ORDERS"`, `"INVOIC"`, `"DESADV"`, `"CONTRL"`).
1823
- Accepted but not applied as a server-side filter — the result set is
1824
- unaffected; filter client-side.
1825
- examples:
2272
+ Directions to match. Lowercase here, unlike the capitalized
2273
+ `direction` values on the returned records.
2274
+ faStatus:
2275
+ type: array
2276
+ items:
2277
+ $ref: '#/components/schemas/EDIDashboardFAStatus'
2278
+ description: Functional acknowledgment statuses to match.
2279
+ partner:
2280
+ type: array
2281
+ items:
2282
+ type: string
2283
+ description: |-
2284
+ Trading partner names to match against each record's
2285
+ `tradingPartnerName`. Use the values `GET /v1/ediTransactions/filter-options`
2286
+ returns in `partner`.
2287
+ examples:
2288
+ - - Globex Retail
2289
+ lifecycleStatus:
2290
+ type: array
2291
+ items:
2292
+ type: string
2293
+ description: |-
2294
+ Order-lifecycle steps to match against each record's
2295
+ `lifecycleStatus`. Takes the values
2296
+ `GET /v1/ediTransactions/filter-options` returns in `lifecycleStatus`;
2297
+ anything else is rejected.
2298
+ examples:
2299
+ - - PO received
2300
+ - Invoice sent
2301
+ mdnStatus:
2302
+ type: array
2303
+ items:
2304
+ $ref: '#/components/schemas/EDIDashboardMDNStatus'
2305
+ description: AS2 MDN statuses to match.
2306
+ dateRange:
2307
+ type: object
2308
+ required:
2309
+ - from
2310
+ - to
2311
+ description: Window on each record's `lastModified`.
2312
+ properties:
2313
+ from:
2314
+ type: string
2315
+ format: date
2316
+ description: First day of the window.
2317
+ examples:
2318
+ - '2026-10-01'
2319
+ to:
2320
+ type: string
2321
+ format: date
2322
+ description: Last day of the window. Can equal `from`; a `to` before `from` is rejected.
2323
+ examples:
2324
+ - '2026-10-22'
2325
+ fromTime:
2326
+ type: string
2327
+ pattern: ^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$
2328
+ description: Start time on the `from` day, so the window can begin mid-day.
2329
+ examples:
2330
+ - '08:30:00'
2331
+ toTime:
2332
+ type: string
2333
+ pattern: ^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$
2334
+ description: End time on the `to` day, so the window can end mid-day.
2335
+ examples:
2336
+ - '17:45:00'
2337
+ EDITransactionsQueryRequest:
2338
+ type: object
2339
+ description: |-
2340
+ Filter for `POST /v1/ediTransactions/query`. All fields are optional.
2341
+ Results are narrowed by `fileType`, `interchangeSenderId`,
2342
+ `interchangeReceiverId`, `documentNumber`, `faStatus`, the
2343
+ `startDate`/`endDate` window, and the dashboard's `filters` object, which
2344
+ the server applies in full. The top-level `direction`, `documentType`, and
2345
+ `_integrationId` are accepted but not applied server-side (filter on those
2346
+ client-side, or use `filters`). Records come back newest-first by
2347
+ `lastModified` unless `sortBy` or `order` is set, and are cursor-paginated
2348
+ via `pageToken`. `view: lifecycle` with `mode` returns the documents
2349
+ grouped by order lifecycle instead of flat rows.
2350
+ properties:
2351
+ fileType:
2352
+ type: string
2353
+ enum:
2354
+ - X12
2355
+ - EDIFACT
2356
+ x-enumDescriptions:
2357
+ X12: ANSI X12 EDI standard.
2358
+ EDIFACT: UN/EDIFACT EDI standard.
2359
+ description: |-
2360
+ EDI standard family. Defaults to `X12` when omitted — set
2361
+ `fileType: EDIFACT` explicitly to query EDIFACT records.
2362
+ interchangeSenderId:
2363
+ type: string
2364
+ description: |-
2365
+ Filter by interchange sender ID — exact match against the record's
2366
+ `isaSenderId` (X12 ISA06). Applied server-side.
2367
+ examples:
2368
+ - '1234567890'
2369
+ interchangeReceiverId:
2370
+ type: string
2371
+ description: |-
2372
+ Filter by interchange receiver ID — exact match against the record's
2373
+ `isaReceiverId` (X12 ISA08). Applied server-side.
2374
+ examples:
2375
+ - CELIGOLABZ
2376
+ direction:
2377
+ type: string
2378
+ enum:
2379
+ - Inbound
2380
+ - Outbound
2381
+ x-enumDescriptions:
2382
+ Inbound: Document received from a trading partner.
2383
+ Outbound: Document sent to a trading partner.
2384
+ description: |-
2385
+ Transaction direction. Accepted by the endpoint but not applied as a
2386
+ server-side filter — the result set is unaffected; filter client-side.
2387
+ documentType:
2388
+ type: string
2389
+ description: |-
2390
+ EDI document type code. For X12 this is the numeric transaction-set ID
2391
+ as a string (e.g. `"850"`, `"810"`, `"856"`, `"997"`); for EDIFACT the
2392
+ UNH01 message type (e.g. `"ORDERS"`, `"INVOIC"`, `"DESADV"`, `"CONTRL"`).
2393
+ Accepted but not applied as a server-side filter — the result set is
2394
+ unaffected; use `filters.documentType` for a server-side match, or
2395
+ filter client-side.
2396
+ examples:
1826
2397
  - '850'
1827
2398
  documentNumber:
1828
2399
  type: string
@@ -1872,7 +2443,11 @@ components:
1872
2443
  description: |-
1873
2444
  Lower bound of the `lastModified` window, as epoch milliseconds.
1874
2445
  The CLI converts ISO-8601 date strings to epoch-ms before calling.
1875
- When omitted, the server applies an internal default window.
2446
+ When omitted on a request that carries no `filters` key, the server
2447
+ applies its legacy default window of the last 24 hours. The presence
2448
+ of `filters` — an empty object included — lifts that window, so the
2449
+ whole history is read newest-first; a non-empty `filters` object
2450
+ additionally answers in the dual-view shape (see `filters`).
1876
2451
  examples:
1877
2452
  - 1742774400000
1878
2453
  endDate:
@@ -1884,22 +2459,147 @@ components:
1884
2459
  examples:
1885
2460
  - 1745452800000
1886
2461
  limit:
1887
- type: integer
2462
+ type:
2463
+ - integer
2464
+ - object
1888
2465
  minimum: 1
1889
2466
  maximum: 1000
1890
2467
  description: |-
1891
- Maximum number of records to return per page. Server-enforced
1892
- range is 1–1000.
1893
- When more records exist beyond the limit, the response includes a
2468
+ Page size. An integer on a flat request (records per page,
2469
+ 1–1000) and on a lifecycle browse (groups per page, 1–50, default
2470
+ 20 — `invalid_lifecycle_browse_limit` otherwise); expand ignores it.
2471
+ On a dual-view request (`views`, or a non-empty `filters`) an object
2472
+ sizing each window — an integer is ignored there, and an object on
2473
+ any other request fails with `invalid_limit_value`. When more
2474
+ records exist beyond the limit, the response includes a
1894
2475
  `pageToken.next` cursor for the next page.
2476
+ properties:
2477
+ list:
2478
+ type: integer
2479
+ minimum: 1
2480
+ maximum: 1000
2481
+ description: Rows in the list window, default 50. Out of range fails with `invalid_limit_value`.
2482
+ lifecycle:
2483
+ type: integer
2484
+ minimum: 1
2485
+ maximum: 50
2486
+ description: Groups in the lifecycle window, default 20. Above 50 fails with `invalid_lifecycle_browse_limit`.
1895
2487
  examples:
1896
2488
  - 100
1897
2489
  pageToken:
1898
- type: string
2490
+ type:
2491
+ - string
2492
+ - object
1899
2493
  description: |-
1900
2494
  Opaque cursor from a previous response's `pageToken.next`. Pass
1901
- this value to retrieve the next page of results. Omit on the
1902
- first call.
2495
+ this value to retrieve the next page of results; omit it on the
2496
+ first call. On a dual-view request send an object carrying both
2497
+ windows' cursors — one missing either key fails with
2498
+ `invalid_query_dual_page_token`. A cursor fixes its own sort, so
2499
+ `sortBy` and `order` are ignored beside it.
2500
+ required:
2501
+ - list
2502
+ - lifecycle
2503
+ properties:
2504
+ list:
2505
+ type:
2506
+ - string
2507
+ - 'null'
2508
+ description: The list window's `pageToken.next`, or null once that window is exhausted.
2509
+ lifecycle:
2510
+ type:
2511
+ - string
2512
+ - 'null'
2513
+ description: The lifecycle window's `pageToken.next`, or null once that window is exhausted.
2514
+ filters:
2515
+ $ref: '#/components/schemas/EDIDashboardFilters'
2516
+ description: |-
2517
+ Dashboard filters. The presence of this key, even as `{}`, lifts the
2518
+ 24-hour default window on `startDate`, so set `dateRange` (or
2519
+ `startDate`) to keep the result set bounded. Any non-empty object,
2520
+ even one holding only unknown keys, also returns both views on every
2521
+ page, as `views` does. A malformed dimension or a `documentType`
2522
+ that is not a document type of `fileType` fails with
2523
+ `invalid_search_filters`, an unknown `faStatus` with
2524
+ `invalid_fa_status`, an unknown `lifecycleStatus` with
2525
+ `invalid_filter_lifecycle_status`, and a malformed or reversed
2526
+ `dateRange` with `invalid_date_range`.
2527
+ views:
2528
+ type: array
2529
+ minItems: 2
2530
+ maxItems: 2
2531
+ uniqueItems: true
2532
+ items:
2533
+ type: string
2534
+ enum:
2535
+ - list
2536
+ - lifecycle
2537
+ x-enumDescriptions:
2538
+ list: Flat transaction rows.
2539
+ lifecycle: Collapsed lifecycle groups.
2540
+ description: |-
2541
+ Asks the first unfiltered page for both views at once, in which case
2542
+ `ediTransactions` comes back as an object holding a `list` and a
2543
+ `lifecycle` window. Must contain both values
2544
+ (`invalid_query_views` otherwise). Omit it on later unfiltered pages.
2545
+ A request with non-empty `filters` returns both views on every page
2546
+ without it. A dual-view request takes `limit` and `pageToken` as
2547
+ objects.
2548
+ examples:
2549
+ - - list
2550
+ - lifecycle
2551
+ view:
2552
+ type: string
2553
+ enum:
2554
+ - list
2555
+ - lifecycle
2556
+ x-enumDescriptions:
2557
+ list: Flat transaction rows — the same result as omitting the field.
2558
+ lifecycle: Group documents by order lifecycle instead of returning flat rows.
2559
+ description: |-
2560
+ Set to `lifecycle`, together with `mode`, to get grouped results. Omit
2561
+ it, or send `list`, for the flat list.
2562
+ mode:
2563
+ type: string
2564
+ enum:
2565
+ - browse
2566
+ - expand
2567
+ x-enumDescriptions:
2568
+ browse: Return one collapsed row per lifecycle group in `groups`.
2569
+ expand: Return every member of the group named by `referenceDocumentNumber` and `partnerPairKey` in `group`.
2570
+ description: |-
2571
+ Lifecycle mode; required with `view: lifecycle`. Any other value fails
2572
+ with 422 `invalid_lifecycle_mode`, and `mode` without
2573
+ `view: lifecycle` fails with 422 `invalid_query_view`. For expand,
2574
+ send the same `sandbox` value as the browse request, because a group
2575
+ from the other environment returns 404 `lifecycle_group_not_found`.
2576
+ referenceDocumentNumber:
2577
+ type: string
2578
+ description: |-
2579
+ Expand only. The `groupKey.referenceDocumentNumber` of the browse
2580
+ group to load. Required with `mode: expand`, together with
2581
+ `partnerPairKey` (`invalid_lifecycle_expand_group_key` otherwise).
2582
+ examples:
2583
+ - PO 6P31195
2584
+ partnerPairKey:
2585
+ type: string
2586
+ description: |-
2587
+ Expand only. The `groupKey.partnerPairKey` of the browse group to
2588
+ load, exactly as returned — the interchange ids keep their stored
2589
+ padding and a trimmed key answers 404 `lifecycle_group_not_found`.
2590
+ Required with `mode: expand`.
2591
+ examples:
2592
+ - 'ACMEFOODS :CELIGOTEST '
2593
+ scanBatchSize:
2594
+ type: integer
2595
+ minimum: 1
2596
+ maximum: 1000
2597
+ default: 100
2598
+ description: |-
2599
+ Lifecycle browse only. Transactions read per batch while collecting
2600
+ distinct groups. Raise it when a page of groups comes back short
2601
+ because many recent documents share a few groups. Out of range fails
2602
+ with `invalid_lifecycle_scan_batch_size`.
1903
2603
  sortBy:
1904
2604
  type: string
1905
2605
  enum:
@@ -1923,6 +2623,137 @@ components:
1923
2623
  Sort direction. Defaults to `desc` for `lastModified` and `asc` for
1924
2624
  `tradingPartnerName`. Sending `order` alone sorts by `lastModified`.
1925
2625
  Any other value fails with `invalid_sort_order`.
2626
+ EDITransactionsQueryListWindow:
2627
+ type: object
2628
+ required:
2629
+ - ediTransactions
2630
+ description: The list window of a dual-view page.
2631
+ properties:
2632
+ ediTransactions:
2633
+ type: array
2634
+ description: Matching EDI transaction records for this window.
2635
+ items:
2636
+ $ref: '#/components/schemas/EDITransaction'
2637
+ totalCount:
2638
+ type:
2639
+ - integer
2640
+ - 'null'
2641
+ description: Number of matching records. First page only; capped when `isApproximate` is true, null when the count timed out.
2642
+ isApproximate:
2643
+ type: boolean
2644
+ description: When true, `totalCount` hit its cap or timed out.
2645
+ pageToken:
2646
+ type: object
2647
+ description: Present only when more rows exist in this window.
2648
+ properties:
2649
+ next:
2650
+ type: string
2651
+ description: Pass back as `pageToken.list` on the next dual-view request.
2652
+ EDILifecycleGroupKey:
2653
+ type: object
2654
+ description: |-
2655
+ Identifies one order lifecycle: the documents a trading-partner pair
2656
+ exchanged about one reference document. Pass `referenceDocumentNumber`
2657
+ and `partnerPairKey` back to `POST /v1/ediTransactions/query` with
2658
+ `view: lifecycle` and `mode: expand` to load every member.
2659
+ properties:
2660
+ referenceDocumentNumber:
2661
+ type:
2662
+ - string
2663
+ - 'null'
2664
+ description: |-
2665
+ Prefixed reference the group is anchored on (for example
2666
+ `PO 6P31195`). Null for a standalone document with no extractable
2667
+ reference.
2668
+ examples:
2669
+ - PO 6P31195
2670
+ partnerPairKey:
2671
+ type:
2672
+ - string
2673
+ - 'null'
2674
+ description: |-
2675
+ Trading-partner pair the group belongs to, with the interchange ids
2676
+ padded as stored. Pass it back exactly as returned — a trimmed key
2677
+ names no group (404 `lifecycle_group_not_found`). Null when the flow
2678
+ did not resolve the partner.
2679
+ examples:
2680
+ - 'ACMEFOODS :CELIGOTEST '
2681
+ fileType:
2682
+ type: string
2683
+ enum:
2684
+ - X12
2685
+ - EDIFACT
2686
+ x-enumDescriptions:
2687
+ X12: ANSI X12 EDI standard.
2688
+ EDIFACT: UN/EDIFACT EDI standard.
2689
+ description: EDI standard family of the group's documents.
2690
+ EDIRelationshipMetadata:
2691
+ type:
2692
+ - object
2693
+ - 'null'
2694
+ description: |-
2695
+ Facts about the documents in a lifecycle group. An object when the group
2696
+ has a reference document number; null for a group anchored on a document
2697
+ with no extractable reference. Omitted on expand responses.
2698
+ properties:
2699
+ hasPurchaseOrderAnchor:
2700
+ type: boolean
2701
+ description: |-
2702
+ When true, the group contains the purchase order itself (an X12 850
2703
+ or an EDIFACT ORDERS), not only downstream documents such as invoices
2704
+ or ship notices. Acknowledgements and change requests (855, 860, 865,
2705
+ ORDRSP, ORDCHG) do not count as an anchor.
2706
+ EDILifecycleBrowseGroup:
2707
+ type: object
2708
+ required:
2709
+ - groupKey
2710
+ - hasChildren
2711
+ - latestTransaction
2712
+ description: One collapsed lifecycle group on a lifecycle browse page.
2713
+ properties:
2714
+ groupKey:
2715
+ $ref: '#/components/schemas/EDILifecycleGroupKey'
2716
+ hasChildren:
2717
+ type: boolean
2718
+ description: When true, the group has two or more members and can be expanded.
2719
+ latestTransaction:
2720
+ $ref: '#/components/schemas/EDITransaction'
2721
+ relationshipMetadata:
2722
+ $ref: '#/components/schemas/EDIRelationshipMetadata'
2723
+ EDILifecycleBrowsePage:
2724
+ type: object
2725
+ required:
2726
+ - view
2727
+ - mode
2728
+ - groups
2729
+ description: One page of collapsed lifecycle groups, newest activity first.
2730
+ properties:
2731
+ view:
2732
+ type: string
2733
+ enum:
2734
+ - lifecycle
2735
+ x-enumDescriptions:
2736
+ lifecycle: Grouped lifecycle results.
2737
+ description: Echoes the requested view.
2738
+ mode:
2739
+ type: string
2740
+ enum:
2741
+ - browse
2742
+ x-enumDescriptions:
2743
+ browse: Collapsed groups, one row per lifecycle.
2744
+ description: Echoes the requested lifecycle mode.
2745
+ groups:
2746
+ type: array
2747
+ description: Lifecycle groups on this page.
2748
+ items:
2749
+ $ref: '#/components/schemas/EDILifecycleBrowseGroup'
2750
+ pageToken:
2751
+ type: object
2752
+ description: Present only when more groups exist beyond this page.
2753
+ properties:
2754
+ next:
2755
+ type: string
2756
+ description: Forward-only cursor. Pass it back as `pageToken` to get the next page of groups.
1926
2757
  EDITransactionsQuerySort:
1927
2758
  type: object
1928
2759
  required:
@@ -1948,21 +2779,70 @@ components:
1948
2779
  asc: Ascending.
1949
2780
  desc: Descending.
1950
2781
  description: Sort direction applied, including the default when the request set only `sortBy`.
2782
+ EDILifecycleExpandGroup:
2783
+ type: object
2784
+ required:
2785
+ - latestTransaction
2786
+ - ediTransactions
2787
+ description: |-
2788
+ One lifecycle group opened: its newest member as the parent row and the
2789
+ other members beneath it.
2790
+ properties:
2791
+ latestTransaction:
2792
+ $ref: '#/components/schemas/EDITransaction'
2793
+ ediTransactions:
2794
+ type: array
2795
+ maxItems: 50
2796
+ description: |-
2797
+ The group's other members, newest first — `latestTransaction` is not
2798
+ repeated, so a one-document group returns an empty array. Only the
2799
+ newest 50 are returned; check `truncated` to learn whether older
2800
+ members exist.
2801
+ items:
2802
+ $ref: '#/components/schemas/EDITransaction'
2803
+ truncated:
2804
+ type: boolean
2805
+ description: Present and true when the group has more than 50 other members.
1951
2806
  EDITransactionsQueryResponse:
1952
2807
  type: object
1953
2808
  description: |-
1954
2809
  One page of EDI transaction records matching the request filter. When
1955
2810
  more records exist beyond the `limit`, `pageToken.next` contains an
1956
- opaque cursor to pass back on the next request for the next page.
2811
+ opaque cursor to pass back on the next request for the next page. A
2812
+ lifecycle request (`view: lifecycle`) answers with `view`, `mode` and
2813
+ `groups` or `group` instead of `ediTransactions`.
1957
2814
  properties:
1958
2815
  ediTransactions:
1959
- type: array
2816
+ type:
2817
+ - array
2818
+ - object
1960
2819
  description: |-
1961
2820
  Matching EDI transaction records, newest first by `lastModified`
1962
2821
  unless the request sets `sortBy` or `order`. Empty array when no
1963
2822
  records match — the endpoint does not switch to 204 for empty results.
2823
+ On a dual-view page (`views` sent, or a non-empty `filters`) an object
2824
+ holding the `list` and `lifecycle` windows side by side instead.
1964
2825
  items:
1965
2826
  $ref: '#/components/schemas/EDITransaction'
2827
+ required:
2828
+ - list
2829
+ - lifecycle
2830
+ properties:
2831
+ list:
2832
+ $ref: '#/components/schemas/EDITransactionsQueryListWindow'
2833
+ lifecycle:
2834
+ $ref: '#/components/schemas/EDILifecycleBrowsePage'
2835
+ totalCount:
2836
+ type:
2837
+ - integer
2838
+ - 'null'
2839
+ description: |-
2840
+ Number of matching records. Present on the first page of a flat
2841
+ list request only. Capped when `isApproximate` is true; null when
2842
+ the count timed out.
2843
+ isApproximate:
2844
+ type: boolean
2845
+ description: When true, `totalCount` hit its cap or timed out. Omitted when the count is exact.
1966
2846
  pageToken:
1967
2847
  type: object
1968
2848
  description: |-
@@ -1976,130 +2856,420 @@ components:
1976
2856
  body to retrieve the next page.
1977
2857
  sort:
1978
2858
  $ref: '#/components/schemas/EDITransactionsQuerySort'
1979
- EDIDashboardDirection:
1980
- type: string
1981
- enum:
1982
- - inbound
1983
- - outbound
1984
- x-enumDescriptions:
1985
- inbound: Documents received from a trading partner.
1986
- outbound: Documents sent to a trading partner.
1987
- description: Transaction direction as the dashboard filters spell it.
1988
- EDIDashboardFAStatus:
1989
- type: string
1990
- enum:
1991
- - inProgress
1992
- - notApplicable
1993
- - notReceived
1994
- - accepted
1995
- - acceptedWithErrors
1996
- - rejected
1997
- - failed
1998
- x-enumDescriptions:
1999
- inProgress: Awaiting functional acknowledgment from the trading partner.
2000
- notApplicable: No functional acknowledgment expected.
2001
- notReceived: Functional acknowledgment expected but not yet received.
2002
- accepted: Functional acknowledgment received and the transaction was accepted.
2003
- acceptedWithErrors: Functional acknowledgment received with errors, but the transaction was accepted.
2004
- rejected: Functional acknowledgment received and the transaction was rejected.
2005
- failed: Functional acknowledgment processing failed.
2006
- description: Functional acknowledgment status of a transaction.
2007
- EDIDashboardMDNStatus:
2008
- type: string
2009
- enum:
2010
- - sent
2011
- - received
2012
- x-enumDescriptions:
2013
- sent: An AS2 MDN was sent for the document.
2014
- received: An AS2 MDN was received for the document.
2015
- description: AS2 MDN status of a transaction.
2016
- EDIDashboardFilters:
2859
+ view:
2860
+ type: string
2861
+ enum:
2862
+ - lifecycle
2863
+ x-enumDescriptions:
2864
+ lifecycle: Grouped lifecycle results.
2865
+ description: |-
2866
+ Present only on lifecycle responses (`view: lifecycle`), which carry
2867
+ `view`, `mode`, and `groups` or `group` instead of `ediTransactions`.
2868
+ mode:
2869
+ type: string
2870
+ enum:
2871
+ - browse
2872
+ - expand
2873
+ x-enumDescriptions:
2874
+ browse: The page carries collapsed groups in `groups`.
2875
+ expand: The page carries one group's members in `group`.
2876
+ description: Present only on lifecycle responses; says whether `groups` or `group` is set.
2877
+ groups:
2878
+ type: array
2879
+ description: Present when `mode` is `browse`. Collapsed lifecycle groups, newest activity first.
2880
+ items:
2881
+ $ref: '#/components/schemas/EDILifecycleBrowseGroup'
2882
+ group:
2883
+ $ref: '#/components/schemas/EDILifecycleExpandGroup'
2884
+ EDITransactionsSearchRequest:
2017
2885
  type: object
2886
+ required:
2887
+ - keyword
2888
+ - source
2018
2889
  description: |-
2019
- B2B Manager dashboard filter dimensions. An empty object, or one whose
2020
- arrays are all empty, applies no filter.
2890
+ Keyword search over one EDI standard's transactions, optionally narrowed by
2891
+ the dashboard filters. To continue a result set, send the same body with
2892
+ the previous response's `pageToken.next`. In `filters`, a malformed
2893
+ dimension or a `documentType` that is not a document type of `source`
2894
+ fails with `invalid_search_filters`, an unknown `faStatus` with
2895
+ `invalid_fa_status`, an unknown `lifecycleStatus` with
2896
+ `invalid_filter_lifecycle_status`, and a malformed or reversed
2897
+ `dateRange` with `invalid_date_range`; unknown filter keys are ignored.
2021
2898
  properties:
2022
- documentType:
2023
- type: array
2024
- items:
2025
- type: string
2899
+ keyword:
2900
+ type: string
2901
+ minLength: 3
2902
+ maxLength: 100
2026
2903
  description: |-
2027
- Document types to match, as the X12 transaction-set code or the
2028
- EDIFACT message type (`850`, `ORDERS`). An X12 code labeled with its
2029
- functional group (`PO 850`) is read as the bare code.
2904
+ Text matched against the transaction's document number, reference
2905
+ document numbers, interchange and group sender / receiver ids and
2906
+ control numbers, case-insensitively after trimming; each row names
2907
+ the fields it matched in `matchedFields`. A keyword of 3–12
2908
+ characters matches anywhere inside a value (`ORDER-0001` finds
2909
+ `P129-ORDER-0001`); 13 characters or more must equal a whole stored
2910
+ value (`P129-ORDER-0001`, or `PO P129-ORDER-0001` with its qualifier
2911
+ for a reference). The trading partner name and the lifecycle status
2912
+ are not searched — narrow those with `filters`. Shorter fails with
2913
+ `keyword_too_short`, longer with `keyword_too_long`, and control
2914
+ characters with `invalid_keyword`.
2030
2915
  examples:
2031
- - - '850'
2032
- - PO 810
2033
- direction:
2916
+ - PO03302026A
2917
+ source:
2918
+ type: string
2919
+ enum:
2920
+ - X12
2921
+ - EDIFACT
2922
+ x-enumDescriptions:
2923
+ X12: Search ANSI X12 transactions.
2924
+ EDIFACT: Search UN/EDIFACT transactions.
2925
+ description: EDI standard to search. Anything else fails with `invalid_source`.
2926
+ viewMode:
2927
+ type: string
2928
+ enum:
2929
+ - dual
2930
+ - list
2931
+ - lifecycle
2932
+ default: dual
2933
+ x-enumDescriptions:
2934
+ dual: Return a list window and a lifecycle window side by side in `ediTransactions.list` and `ediTransactions.lifecycle`.
2935
+ list: Return flat matching rows in `ediTransactions`.
2936
+ lifecycle: Return the lifecycle groups that contain a match in `ediTransactions`.
2937
+ description: |-
2938
+ Shape of the result. The dashboard uses the default, `dual`. Any other
2939
+ value fails with `invalid_view_mode`.
2940
+ pageSize:
2941
+ type: integer
2942
+ minimum: 1
2943
+ maximum: 100
2944
+ description: |-
2945
+ Results per page. On a `dual` request it sizes both windows. Defaults
2946
+ to 50 list rows and 20 lifecycle groups. Out-of-range values, and an
2947
+ object such as `{list, lifecycle}`, fail with `invalid_page_size`.
2948
+ examples:
2949
+ - 50
2950
+ pageToken:
2951
+ type:
2952
+ - string
2953
+ - object
2954
+ description: |-
2955
+ Cursor from a previous response's `pageToken.next`. It fixes its own
2956
+ page size, view, and sort, so `sortBy` and `order` are ignored when
2957
+ it is present. A tampered or stale token fails with
2958
+ `invalid_page_token`. To continue a `dual` result set, send an object
2959
+ with each window's cursor; an empty object starts from the first page.
2960
+ `list` and `lifecycle` requests take only the string form.
2961
+ properties:
2962
+ list:
2963
+ type:
2964
+ - string
2965
+ - 'null'
2966
+ description: The list window's `pageToken.next`. Omit it or send null once that window is exhausted.
2967
+ lifecycle:
2968
+ type:
2969
+ - string
2970
+ - 'null'
2971
+ description: The lifecycle window's `pageToken.next`. Omit it or send null once that window is exhausted.
2972
+ sandbox:
2973
+ type: boolean
2974
+ default: false
2975
+ description: |-
2976
+ When true, searches sandbox transactions instead of production ones.
2977
+ A non-boolean fails with `invalid_sandbox`.
2978
+ filters:
2979
+ $ref: '#/components/schemas/EDIDashboardFilters'
2980
+ visibleColumns:
2981
+ type: object
2982
+ description: |-
2983
+ Columns the caller currently shows, per view. Fields that matched the
2984
+ keyword but are not listed come back in `matchedHiddenColumns`, so the
2985
+ UI can tell the user why a row matched. Set at least one non-empty
2986
+ array of known field names (`invalid_search_columns` otherwise).
2987
+ properties:
2988
+ list:
2989
+ type: array
2990
+ items:
2991
+ type: string
2992
+ description: Field names shown in the list view.
2993
+ examples:
2994
+ - - documentNumber
2995
+ - tradingPartnerName
2996
+ - lastModified
2997
+ lifecycle:
2998
+ type: array
2999
+ items:
3000
+ type: string
3001
+ description: Field names shown in the lifecycle view.
3002
+ sortBy:
3003
+ type: string
3004
+ enum:
3005
+ - relevance
3006
+ - lastModified
3007
+ - tradingPartnerName
3008
+ default: relevance
3009
+ x-enumDescriptions:
3010
+ relevance: Best match first.
3011
+ lastModified: Sort by last activity.
3012
+ tradingPartnerName: Sort by trading partner name in byte order; rows without a partner come first ascending and last descending.
3013
+ description: |-
3014
+ Sort for the list window. Any other value fails with
3015
+ `unsupported_sort_field`. `viewMode: lifecycle` accepts only
3016
+ `relevance` or `lastModified` descending
3017
+ (`sort_not_supported_for_lifecycle`). A sort other than `relevance`
3018
+ can fail with 503 `sort_disabled`, `sort_index_not_ready`, or
3019
+ `query_sort_timeout`; retry without `sortBy` and `order`.
3020
+ order:
3021
+ type: string
3022
+ enum:
3023
+ - asc
3024
+ - desc
3025
+ x-enumDescriptions:
3026
+ asc: Ascending.
3027
+ desc: Descending.
3028
+ description: |-
3029
+ Sort direction. Defaults to `desc` for `relevance` and `lastModified`
3030
+ and `asc` for `tradingPartnerName`; `relevance` accepts only `desc`.
3031
+ Sending `order` alone sorts by `lastModified`. Any other value fails
3032
+ with `invalid_sort_order`.
3033
+ EDILifecycleSearchGroup:
3034
+ type: object
3035
+ required:
3036
+ - groupKey
3037
+ - hasChildren
3038
+ - latestTransaction
3039
+ - ediTransactions
3040
+ description: |-
3041
+ One lifecycle group that contains a keyword match, with its newest member
3042
+ as the parent row and every other member loaded beneath it.
3043
+ properties:
3044
+ groupKey:
3045
+ $ref: '#/components/schemas/EDILifecycleGroupKey'
3046
+ hasChildren:
3047
+ type: boolean
3048
+ description: When true, the group has two or more members.
3049
+ latestDateTime:
3050
+ type:
3051
+ - string
3052
+ - 'null'
3053
+ format: date-time
3054
+ description: Timestamp of the group's newest member.
3055
+ lifecycleStatus:
3056
+ type: string
3057
+ description: Lifecycle step of the group's newest member, one of the `lifecycleStatus` values on the EDI transaction.
3058
+ latestTransaction:
3059
+ $ref: '#/components/schemas/EDITransaction'
3060
+ ediTransactions:
2034
3061
  type: array
2035
- items:
2036
- $ref: '#/components/schemas/EDIDashboardDirection'
2037
3062
  description: |-
2038
- Directions to match. Lowercase here, unlike the capitalized
2039
- `direction` values on the returned records.
2040
- faStatus:
3063
+ The group's other members, newest first; empty for a one-document
3064
+ group. Each carries `matchedFields` when the keyword matched it.
3065
+ items:
3066
+ $ref: '#/components/schemas/EDITransaction'
3067
+ relationshipMetadata:
3068
+ $ref: '#/components/schemas/EDIRelationshipMetadata'
3069
+ EDITransactionsSearchPageToken:
3070
+ type: object
3071
+ description: Holds `next` while more results remain; empty on the last page.
3072
+ properties:
3073
+ next:
3074
+ type: string
3075
+ description: Pass back as `pageToken` with the same request body to get the next page.
3076
+ EDITransactionsSearchListWindow:
3077
+ type: object
3078
+ required:
3079
+ - ediTransactions
3080
+ - matchedHiddenColumns
3081
+ - pageToken
3082
+ description: The list window of a dual search page.
3083
+ properties:
3084
+ ediTransactions:
2041
3085
  type: array
3086
+ description: Matching transaction rows.
2042
3087
  items:
2043
- $ref: '#/components/schemas/EDIDashboardFAStatus'
2044
- description: Functional acknowledgment statuses to match.
2045
- partner:
3088
+ $ref: '#/components/schemas/EDITransaction'
3089
+ matchedHiddenColumns:
2046
3090
  type: array
2047
3091
  items:
2048
3092
  type: string
2049
- description: |-
2050
- Trading partner names to match against each record's
2051
- `tradingPartnerName`. Use the values `GET /v1/ediTransactions/filter-options`
2052
- returns in `partner`.
2053
- examples:
2054
- - - Globex Retail
2055
- lifecycleStatus:
3093
+ description: Fields that matched the keyword but are not in `visibleColumns.list`.
3094
+ totalCount:
3095
+ type:
3096
+ - integer
3097
+ - 'null'
3098
+ description: |-
3099
+ Number of matching transactions when `filters` narrows the search;
3100
+ null on an unfiltered keyword search, where the count is not
3101
+ computed. Omitted on continuation pages.
3102
+ isApproximate:
3103
+ type: boolean
3104
+ description: Present and true when the count hit its cap or was not computed (every unfiltered keyword search).
3105
+ pageToken:
3106
+ $ref: '#/components/schemas/EDITransactionsSearchPageToken'
3107
+ EDITransactionsSearchLifecycleWindow:
3108
+ type: object
3109
+ required:
3110
+ - ediTransactions
3111
+ - matchedHiddenColumns
3112
+ - pageToken
3113
+ description: The lifecycle window of a dual search page.
3114
+ properties:
3115
+ ediTransactions:
3116
+ type: array
3117
+ description: Lifecycle groups that contain a match, each with its members loaded.
3118
+ items:
3119
+ $ref: '#/components/schemas/EDILifecycleSearchGroup'
3120
+ matchedHiddenColumns:
2056
3121
  type: array
2057
3122
  items:
2058
3123
  type: string
3124
+ description: Fields that matched the keyword but are not in `visibleColumns.lifecycle`.
3125
+ totalCount:
3126
+ type:
3127
+ - integer
3128
+ - 'null'
3129
+ description: |-
3130
+ Number of matching transactions when `filters` narrows the search;
3131
+ null on an unfiltered keyword search, where the count is not
3132
+ computed. Omitted on continuation pages.
3133
+ totalGroups:
3134
+ type:
3135
+ - integer
3136
+ - 'null'
3137
+ description: Number of matching lifecycle groups. First page only.
3138
+ isApproximate:
3139
+ type: boolean
3140
+ description: Present and true when a count hit its cap or was not computed (every unfiltered keyword search).
3141
+ pageToken:
3142
+ $ref: '#/components/schemas/EDITransactionsSearchPageToken'
3143
+ EDITransactionsSearchSort:
3144
+ type: object
3145
+ required:
3146
+ - sortBy
3147
+ - order
3148
+ description: |-
3149
+ Effective list sort. Returned only when the request, or its `pageToken`,
3150
+ named a sort. On a dual response it sits at the top level, not inside
3151
+ the list window.
3152
+ properties:
3153
+ sortBy:
3154
+ type: string
3155
+ enum:
3156
+ - relevance
3157
+ - lastModified
3158
+ - tradingPartnerName
3159
+ x-enumDescriptions:
3160
+ relevance: Best match first.
3161
+ lastModified: Sorted by last activity.
3162
+ tradingPartnerName: Sorted by trading partner name.
3163
+ description: Sort applied to the list window.
3164
+ order:
3165
+ type: string
3166
+ enum:
3167
+ - asc
3168
+ - desc
3169
+ x-enumDescriptions:
3170
+ asc: Ascending.
3171
+ desc: Descending.
3172
+ description: Sort direction applied.
3173
+ EDITransactionsSearchResponse:
3174
+ type: object
3175
+ description: |-
3176
+ One page of keyword-search results. With `viewMode: dual` (the default),
3177
+ `ediTransactions` is an object holding a `list` window and a `lifecycle`
3178
+ window; with `list` or `lifecycle` it is an array and the window fields
3179
+ sit at the top level.
3180
+ properties:
3181
+ ediTransactions:
3182
+ type:
3183
+ - array
3184
+ - object
2059
3185
  description: |-
2060
- Order-lifecycle steps to match against each record's
2061
- `lifecycleStatus`. Takes the values
2062
- `GET /v1/ediTransactions/filter-options` returns in `lifecycleStatus`;
2063
- anything else is rejected.
2064
- examples:
2065
- - - PO received
2066
- - Invoice sent
2067
- mdnStatus:
3186
+ Matching rows (`viewMode: list`), matching lifecycle groups
3187
+ (`viewMode: lifecycle`), or both windows (`viewMode: dual`).
3188
+ required:
3189
+ - list
3190
+ - lifecycle
3191
+ properties:
3192
+ list:
3193
+ $ref: '#/components/schemas/EDITransactionsSearchListWindow'
3194
+ lifecycle:
3195
+ $ref: '#/components/schemas/EDITransactionsSearchLifecycleWindow'
3196
+ viewMode:
3197
+ type: string
3198
+ enum:
3199
+ - list
3200
+ - lifecycle
3201
+ x-enumDescriptions:
3202
+ list: The page carries flat rows.
3203
+ lifecycle: The page carries lifecycle groups.
3204
+ description: Present on single-view responses; omitted on dual responses.
3205
+ matchedHiddenColumns:
2068
3206
  type: array
2069
3207
  items:
2070
- $ref: '#/components/schemas/EDIDashboardMDNStatus'
2071
- description: AS2 MDN statuses to match.
2072
- dateRange:
2073
- type: object
3208
+ type: string
3209
+ description: |-
3210
+ Single-view responses. Fields that matched the keyword but are not in
3211
+ the request's `visibleColumns`, sorted by name. Empty when
3212
+ `visibleColumns` was not sent.
3213
+ totalCount:
3214
+ type:
3215
+ - integer
3216
+ - 'null'
3217
+ description: |-
3218
+ Single-view responses. Number of matching transactions when `filters`
3219
+ narrows the search; null on an unfiltered keyword search, where the
3220
+ count is not computed and `isApproximate` is true. Omitted on
3221
+ continuation pages.
3222
+ totalGroups:
3223
+ type:
3224
+ - integer
3225
+ - 'null'
3226
+ description: Lifecycle responses, first page only. Number of matching lifecycle groups.
3227
+ isApproximate:
3228
+ type: boolean
3229
+ description: Present and true when a count hit its cap or was not computed (every unfiltered keyword search).
3230
+ pageToken:
3231
+ $ref: '#/components/schemas/EDITransactionsSearchPageToken'
3232
+ sort:
3233
+ $ref: '#/components/schemas/EDITransactionsSearchSort'
3234
+ if:
3235
+ properties:
3236
+ viewMode:
3237
+ const: list
3238
+ required:
3239
+ - viewMode
3240
+ then:
3241
+ properties:
3242
+ ediTransactions:
3243
+ type: array
3244
+ items:
3245
+ $ref: '#/components/schemas/EDITransaction'
3246
+ required:
3247
+ - ediTransactions
3248
+ - matchedHiddenColumns
3249
+ - pageToken
3250
+ else:
3251
+ if:
3252
+ properties:
3253
+ viewMode:
3254
+ const: lifecycle
2074
3255
  required:
2075
- - from
2076
- - to
2077
- description: Window on each record's `lastModified`.
3256
+ - viewMode
3257
+ then:
2078
3258
  properties:
2079
- from:
2080
- type: string
2081
- format: date
2082
- description: First day of the window.
2083
- examples:
2084
- - '2026-10-01'
2085
- to:
2086
- type: string
2087
- format: date
2088
- description: Last day of the window. Can equal `from`; a `to` before `from` is rejected.
2089
- examples:
2090
- - '2026-10-22'
2091
- fromTime:
2092
- type: string
2093
- pattern: ^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$
2094
- description: Start time on the `from` day, so the window can begin mid-day.
2095
- examples:
2096
- - '08:30:00'
2097
- toTime:
2098
- type: string
2099
- pattern: ^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$
2100
- description: End time on the `to` day, so the window can end mid-day.
2101
- examples:
2102
- - '17:45:00'
3259
+ ediTransactions:
3260
+ type: array
3261
+ items:
3262
+ $ref: '#/components/schemas/EDILifecycleSearchGroup'
3263
+ required:
3264
+ - ediTransactions
3265
+ - matchedHiddenColumns
3266
+ - pageToken
3267
+ else:
3268
+ properties:
3269
+ ediTransactions:
3270
+ type: object
3271
+ required:
3272
+ - ediTransactions
2103
3273
  EDITransactionsDownloadRequest:
2104
3274
  type: object
2105
3275
  required: