@celigo/api-specs 0.2.157 → 0.2.159

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/dist/api.yml CHANGED
@@ -3038,7 +3038,13 @@ components:
3038
3038
  - Premium customers
3039
3039
  inputFilter:
3040
3040
  type: object
3041
- description: Filter criteria for branch selection.
3041
+ description: |-
3042
+ Filter criteria for branch selection. Send `version` and `rules` directly on
3043
+ `inputFilter` — not inside the `{type: "expression", expression: {...}}` wrapper
3044
+ that export and import filters use. A wrapped filter is saved without an error,
3045
+ but the branch is stored with no `inputFilter` and takes every request.
3046
+ x-celigo-ai-guidance:
3047
+ - Read the API back after saving a branching router and check that each filtered branch still has its `inputFilter`; a filter sent in the export-filter wrapper is dropped on save without an error.
3042
3048
  properties:
3043
3049
  version:
3044
3050
  type: string
@@ -3073,12 +3079,22 @@ components:
3073
3079
  followed by operands which can be nested expressions.
3074
3080
  nextRouterId:
3075
3081
  type: string
3076
- description: Next router to chain to (or "apiRouter" for final routing)
3082
+ description: |-
3083
+ Next router to chain to, or "apiRouter" for the response router. Every branch needs
3084
+ one: a branch without it is saved, but every test run of the API is then refused
3085
+ with 400 "One or more branches are not merged back. Review the setup to ensure all
3086
+ branches converge.", whichever branch the request takes. An id that names no router
3087
+ fails the save with 422 "Invalid nextRouterId is defined on the branch. Please
3088
+ correct the branch configuration."
3077
3089
  examples:
3078
3090
  - apiRouter
3079
3091
  pageProcessors:
3080
3092
  type: array
3081
- description: Processing steps to execute in this branch
3093
+ description: |-
3094
+ Processing steps to execute in this branch. An export is a step at most once in an
3095
+ API: using it again, on another branch or in the same one, fails the save with 422
3096
+ "The export <id> is already included as a lookup in your API and cannot be added
3097
+ again."
3082
3098
  items:
3083
3099
  type: object
3084
3100
  properties:
@@ -3344,6 +3360,11 @@ components:
3344
3360
  matches; the typed `context.success` filter doesn't prevent that, because
3345
3361
  `context.success` is true whenever no step failed, including when a lookup found nothing.
3346
3362
  A step that fails with `proceedOnFailure` off selects the `fail` response.
3363
+
3364
+ Send `version` and `rules` directly on `inputFilter`, not inside the
3365
+ `{type: "expression", expression: {...}}` wrapper that export and import filters use. A
3366
+ wrapped filter is saved without an error, but the response is stored with no
3367
+ `inputFilter`, so it matches every request that reaches it.
3347
3368
  properties:
3348
3369
  version:
3349
3370
  type: string
@@ -561,6 +561,145 @@ paths:
561
561
  errors:
562
562
  - code: invalid_ref
563
563
  message: EdiTransaction not found.
564
+ /v1/ediTransactions/{_ediTransactionId}/ediFile:
565
+ get:
566
+ x-internal: false
567
+ operationId: getEdiTransactionFileSignedUrl
568
+ tags:
569
+ - EDI Transactions
570
+ summary: Get a signed URL to download an EDI transaction file
571
+ description: |-
572
+ Returns a short-lived pre-signed S3 URL for the primary EDI document
573
+ (`type=nonFa`) or the functional-acknowledgement file (`type=fa`) of
574
+ one EDI transaction record. Fetch the URL with a plain GET right away
575
+ and never store it — request a new URL for a later download.
576
+
577
+ Get `_id` from a record returned by `POST /v1/ediTransactions/query`.
578
+ The id alone identifies the record for both X12 and EDIFACT; `type` is
579
+ the only query parameter.
580
+
581
+ The acknowledgement file exists only once the trading partner's 997
582
+ (X12) or CONTRL (EDIFACT) was ingested — a record whose `faStatus` is
583
+ `notReceived`, `inProgress` or `notApplicable` has none. Files are kept
584
+ for the account's data retention period; afterwards the record is still
585
+ listed but the download answers `edi_transaction_file_unavailable`.
586
+
587
+ This is the only file-download route that an application acting for a
588
+ signed-in user can also reach; the document-number downloads under
589
+ `/v1/edi/documents` are public-API only.
590
+
591
+ Downloads are rate limited per user.
592
+ parameters:
593
+ - name: _ediTransactionId
594
+ in: path
595
+ required: true
596
+ schema:
597
+ type: string
598
+ format: objectId
599
+ examples:
600
+ - 6a0377fcbfecf34a362e9be2
601
+ description: The EDI transaction ID.
602
+ - name: type
603
+ in: query
604
+ required: true
605
+ schema:
606
+ type: string
607
+ enum:
608
+ - nonFa
609
+ - fa
610
+ x-enumDescriptions:
611
+ nonFa: Primary business document (850, 810, ORDERS, etc.)
612
+ fa: Functional acknowledgement file (997 for X12, CONTRL for EDIFACT)
613
+ description: |-
614
+ Which file to download — the original EDI business document or the
615
+ functional acknowledgement the trading partner returned for it.
616
+ responses:
617
+ '200':
618
+ description: Pre-signed download URL for the requested file.
619
+ content:
620
+ application/json:
621
+ schema:
622
+ $ref: '#/components/schemas/EDITransactionFileSignedUrlResponse'
623
+ examples:
624
+ non_fa:
625
+ summary: Signed URL for a primary business document
626
+ value:
627
+ signedURL: https://integrator-files.s3.us-east-1.amazonaws.com/26338886c17c45e1840e0a7ec81a1a2d?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAEXAMPLE%2F20261021%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20261021T165300Z&X-Amz-Security-Token=EXAMPLE-STS-TOKEN&X-Amz-SignedHeaders=host&X-Amz-Signature=4f9b2c1e8a3d7f0b5c6e9a2d4f8b1c3e7a0d5f2b9c4e6a8d1f3b7c0e5a9d2f4b
628
+ fa:
629
+ summary: Signed URL for a functional-acknowledgement file
630
+ value:
631
+ signedURL: https://integrator-files.s3.us-east-1.amazonaws.com/9a7c3e14b2af45d8bc0e6090c5be6afa?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAEXAMPLE%2F20261021%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20261021T165300Z&X-Amz-Security-Token=EXAMPLE-STS-TOKEN&X-Amz-SignedHeaders=host&X-Amz-Signature=7d0e5a9d2f4b6c8e1a3f7b0c5e9a2d4f8b1c3e7a0d5f2b9c4e6a8d1f3b7c0e5a
632
+ '400':
633
+ description: The request failed validation.
634
+ content:
635
+ application/json:
636
+ schema:
637
+ $ref: '#/components/schemas/Error'
638
+ examples:
639
+ missing_type:
640
+ summary: type query parameter missing
641
+ value:
642
+ errors:
643
+ - code: invalid_type
644
+ message: The "type" query parameter must be either "nonFa" or "fa".
645
+ invalid_type:
646
+ summary: Invalid type value
647
+ value:
648
+ errors:
649
+ - code: invalid_type
650
+ message: The "type" query parameter must be either "nonFa" or "fa".
651
+ invalid_id:
652
+ summary: Invalid transaction ID
653
+ value:
654
+ errors:
655
+ - code: invalid_ref
656
+ message: Please provide a valid _transactionId.
657
+ '401':
658
+ $ref: '#/components/responses/401-unauthorized'
659
+ '404':
660
+ description: |-
661
+ The EDI transaction was not found, or the requested file is not
662
+ available for it — no acknowledgement was ingested, the record
663
+ carries no file reference, or the object aged out of storage.
664
+ content:
665
+ application/json:
666
+ schema:
667
+ $ref: '#/components/schemas/Error'
668
+ examples:
669
+ transaction_not_found:
670
+ value:
671
+ errors:
672
+ - code: transaction_not_found_for_id
673
+ message: No transaction found for the given ID.
674
+ file_unavailable:
675
+ value:
676
+ errors:
677
+ - code: edi_transaction_file_unavailable
678
+ message: The requested file for this transaction is not available or has expired.
679
+ '422':
680
+ description: The account has no B2B Manager (EDI) license.
681
+ content:
682
+ application/json:
683
+ schema:
684
+ $ref: '#/components/schemas/Error'
685
+ examples:
686
+ license:
687
+ value:
688
+ errors:
689
+ - code: edi_subscription_required
690
+ message: EDI is a premium feature that is not included in your account's current subscription plan. Please upgrade your account to get access to B2B Manager.
691
+ '500':
692
+ description: An unexpected error occurred while generating the signed URL.
693
+ content:
694
+ application/json:
695
+ schema:
696
+ $ref: '#/components/schemas/Error'
697
+ examples:
698
+ download_error:
699
+ value:
700
+ errors:
701
+ - code: edi_file_download_error
702
+ message: An error occurred while retrieving the EDI file. Please try again later.
564
703
  /v1/ediTransactions/{_ediTransactionId}/mdn:
565
704
  get:
566
705
  x-internal: false
@@ -683,22 +822,30 @@ paths:
683
822
  operationId: downloadEdiFile
684
823
  tags:
685
824
  - EDI Transactions
686
- summary: Download an EDI file
825
+ summary: Download an EDI file by document number
687
826
  description: |-
688
- Downloads the raw EDI file content for a specific document number.
689
-
690
- The `documentType` query parameter is required and must be the EDI
691
- document type code — for X12, the numeric transaction-set ID as a
692
- string (e.g. `850`, `810`, `856`, `997`); for EDIFACT, the UNH01
693
- message type (e.g. `ORDERS`, `INVOIC`, `DESADV`, `CONTRL`).
827
+ Streams the raw EDI document whose business document number and
828
+ document type match — the file an export parsed or an import
829
+ generated. Acknowledgement files are not served here; use
830
+ `GET /v1/ediTransactions/{_ediTransactionId}/ediFile?type=fa`.
694
831
 
695
- The server uses `documentType` + `documentNumber` together to locate
696
- the transaction record and return the associated raw EDI file.
832
+ A document number is not unique: the same purchase-order number can
833
+ exist for several trading partners, in both directions, in sandbox and
834
+ production, or across integrations. Add lookup filters to pick one —
835
+ they AND together — and when several records still match, the latest
836
+ by `lastModified` is returned. Partner ids use the same names as
837
+ `POST /v1/ediTransactions/query`: `interchangeSenderId` /
838
+ `interchangeReceiverId` for X12, `unbSenderId` / `unbReceiverId` for
839
+ EDIFACT. When no document number is known, use
840
+ `GET /v1/edi/documents/ediFile` with filters alone.
697
841
 
698
842
  Get `documentNumber` and `documentType` from a transaction record
699
- returned by `POST /v1/ediTransactions/query`. Alternatively,
700
- download via `POST /v1/jobs/{_flowJobId}/files/signedURL` using
701
- the `s3Key` from the transaction record.
843
+ returned by `POST /v1/ediTransactions/query`; a record's `_id` is the
844
+ unambiguous alternative through
845
+ `GET /v1/ediTransactions/{_ediTransactionId}/ediFile`.
846
+
847
+ Public-API route only: there is no equivalent for applications acting
848
+ with a signed-in user's session. Downloads are rate limited per user.
702
849
  parameters:
703
850
  - name: documentNumber
704
851
  in: path
@@ -710,20 +857,20 @@ paths:
710
857
  description: |-
711
858
  The business document number that identifies the EDI transaction
712
859
  (e.g. a purchase-order number from an 850's BEG03). Matches the
713
- `documentNumber` field on an EDI transaction record.
860
+ `documentNumber` field on an EDI transaction record; letters are
861
+ uppercased.
714
862
  - name: documentType
715
863
  in: query
716
864
  required: true
717
865
  schema:
718
866
  type: string
719
867
  description: |-
720
- The EDI document type code. For X12, this is the numeric
721
- transaction-set ID as a string (e.g. `850`, `810`, `856`, `997`).
722
- For EDIFACT, this is the UNH01 message type (e.g. `ORDERS`,
723
- `INVOIC`, `DESADV`, `CONTRL`).
724
-
725
- Values like `X12` or `EDIFACT` are **not** valid here — those
726
- identify the EDI standard family, not the document type.
868
+ EDI document type code — for X12 the numeric transaction-set ID as
869
+ a string (`850`, `810`, `856`, `997`); for EDIFACT the UNH01 message
870
+ type (`ORDERS`, `INVOIC`, `DESADV`, `CONTRL`). Case-insensitive. It
871
+ also selects the EDI standard the lookup runs against. `X12` and
872
+ `EDIFACT` name the standard, not a document type, and are rejected
873
+ here.
727
874
  examples:
728
875
  x12_850:
729
876
  value: '850'
@@ -734,13 +881,25 @@ paths:
734
881
  edifact_orders:
735
882
  value: ORDERS
736
883
  summary: EDIFACT Purchase Order
884
+ - $ref: '#/components/parameters/FileType'
885
+ - $ref: '#/components/parameters/Direction'
886
+ - $ref: '#/components/parameters/Sandbox'
887
+ - $ref: '#/components/parameters/FaStatus'
888
+ - $ref: '#/components/parameters/StartDate'
889
+ - $ref: '#/components/parameters/EndDate'
890
+ - $ref: '#/components/parameters/IntegrationId'
891
+ - $ref: '#/components/parameters/InterchangeSenderId'
892
+ - $ref: '#/components/parameters/InterchangeReceiverId'
893
+ - $ref: '#/components/parameters/UnbSenderId'
894
+ - $ref: '#/components/parameters/UnbReceiverId'
737
895
  responses:
738
896
  '200':
739
- description: Raw EDI file content.
897
+ description: The raw EDI file, streamed as the response body.
740
898
  content:
741
- text/plain:
899
+ application/octet-stream:
742
900
  schema:
743
901
  type: string
902
+ format: binary
744
903
  '400':
745
904
  description: The request failed validation.
746
905
  content:
@@ -755,17 +914,42 @@ paths:
755
914
  - code: document_type_required
756
915
  message: The "documentType" query parameter is required to process this request.
757
916
  invalid:
758
- summary: Invalid document type value
917
+ summary: documentType names the standard (`X12` here; `EDIFACT` answers the same way), or fileType disagrees with documentType
759
918
  value:
760
919
  errors:
761
920
  - code: edi_invalid_document_type
762
921
  message: X12 is not a valid document type. Please verify the value and try again.
922
+ partner_id_for_other_standard:
923
+ summary: EDIFACT partner id on an X12 lookup
924
+ value:
925
+ errors:
926
+ - code: invalid_search_param_for_X12
927
+ message: invalid search param unbSenderId for filetype X12
928
+ half_window:
929
+ summary: Only one of startDate / endDate sent
930
+ value:
931
+ errors:
932
+ - code: start_time_or_end_time_missing
933
+ message: start time or end time missing
934
+ invalid_direction:
935
+ summary: direction outside inbound / outbound
936
+ value:
937
+ errors:
938
+ - code: invalid_direction
939
+ message: 'direction is invalid. direction should be one of the following: inbound, outbound'
940
+ invalid_fa_status:
941
+ summary: faStatus outside the status set
942
+ value:
943
+ errors:
944
+ - code: invalid_fa_status
945
+ message: 'Invalid fa status, only accepted values: notReceived,accepted,acceptedWithErrors,rejected,failed,notApplicable,inProgress'
763
946
  '401':
764
947
  $ref: '#/components/responses/401-unauthorized'
765
948
  '404':
766
949
  description: |-
767
- No transaction was found matching the provided document type and
768
- document number combination.
950
+ No transaction matched the document number, type and filters — or
951
+ one did, but its file is no longer in storage (it aged out of the
952
+ account's data retention period, or was never captured).
769
953
  content:
770
954
  application/json:
771
955
  schema:
@@ -776,6 +960,159 @@ paths:
776
960
  errors:
777
961
  - code: edi_transaction_not_found
778
962
  message: No transaction was found matching the provided document type and document number.
963
+ file_unavailable:
964
+ value:
965
+ errors:
966
+ - code: edi_file_unavailable
967
+ message: The EDI file for this transaction is not available.
968
+ '422':
969
+ description: The account has no B2B Manager (EDI) license.
970
+ content:
971
+ application/json:
972
+ schema:
973
+ $ref: '#/components/schemas/Error'
974
+ examples:
975
+ license:
976
+ value:
977
+ errors:
978
+ - code: edi_subscription_required
979
+ message: EDI is a premium feature that is not included in your account's current subscription plan. Please upgrade your account to get access to B2B Manager.
980
+ /v1/edi/documents/ediFile:
981
+ get:
982
+ x-internal: false
983
+ operationId: downloadEdiFileByLookup
984
+ tags:
985
+ - EDI Transactions
986
+ summary: Download the latest EDI file matching filters
987
+ description: |-
988
+ Streams the raw EDI document of the latest transaction (by
989
+ `lastModified`) that matches the lookup filters — for callers that
990
+ hold trading-partner context but no document number. The filters AND
991
+ together and at least one must be sent. Acknowledgement files are not
992
+ served here; use `GET /v1/ediTransactions/{_ediTransactionId}/ediFile?type=fa`.
993
+
994
+ `documentNumber` may be passed as a query parameter here; when it is,
995
+ `documentType` becomes required — the same contract as
996
+ `GET /v1/edi/documents/{documentNumber}/ediFile`. When `documentNumber`
997
+ and `documentType` are both omitted, the lookup runs against X12 unless
998
+ `fileType` says `EDIFACT` — `unbSenderId` sent on its own is refused
999
+ with `invalid_search_param_for_X12`. Partner ids
1000
+ use the same names as `POST /v1/ediTransactions/query`:
1001
+ `interchangeSenderId` / `interchangeReceiverId` for X12,
1002
+ `unbSenderId` / `unbReceiverId` for EDIFACT.
1003
+
1004
+ Public-API route only: there is no equivalent for applications acting
1005
+ with a signed-in user's session. Downloads are rate limited per user.
1006
+ parameters:
1007
+ - name: documentNumber
1008
+ in: query
1009
+ required: false
1010
+ schema:
1011
+ type: string
1012
+ examples:
1013
+ - PO03302026A
1014
+ description: |-
1015
+ Business document number to match (e.g. a purchase-order number from
1016
+ an 850's BEG03); letters are uppercased. Requires `documentType`.
1017
+ - $ref: '#/components/parameters/DocumentType'
1018
+ - $ref: '#/components/parameters/FileType'
1019
+ - $ref: '#/components/parameters/Direction'
1020
+ - $ref: '#/components/parameters/Sandbox'
1021
+ - $ref: '#/components/parameters/FaStatus'
1022
+ - $ref: '#/components/parameters/StartDate'
1023
+ - $ref: '#/components/parameters/EndDate'
1024
+ - $ref: '#/components/parameters/IntegrationId'
1025
+ - $ref: '#/components/parameters/InterchangeSenderId'
1026
+ - $ref: '#/components/parameters/InterchangeReceiverId'
1027
+ - $ref: '#/components/parameters/UnbSenderId'
1028
+ - $ref: '#/components/parameters/UnbReceiverId'
1029
+ responses:
1030
+ '200':
1031
+ description: |-
1032
+ The raw EDI file of the latest matching transaction, streamed as the
1033
+ response body.
1034
+ content:
1035
+ application/octet-stream:
1036
+ schema:
1037
+ type: string
1038
+ format: binary
1039
+ '400':
1040
+ description: The request failed validation.
1041
+ content:
1042
+ application/json:
1043
+ schema:
1044
+ $ref: '#/components/schemas/Error'
1045
+ examples:
1046
+ no_filter:
1047
+ summary: No lookup filter at all
1048
+ value:
1049
+ errors:
1050
+ - code: lookup_filter_required
1051
+ message: At least one lookup parameter is required when documentNumber is not provided (documentType, partner IDs, direction, faStatus, dates, sandbox, or _integrationId).
1052
+ missing_type:
1053
+ summary: documentNumber sent without documentType
1054
+ value:
1055
+ errors:
1056
+ - code: document_type_required
1057
+ message: The "documentType" query parameter is required to process this request.
1058
+ partner_id_for_other_standard:
1059
+ summary: X12 partner id on an EDIFACT lookup
1060
+ value:
1061
+ errors:
1062
+ - code: invalid_search_param_for_EDIFACT
1063
+ message: invalid search param interchangeSenderId for filetype EDIFACT
1064
+ partner_id_without_a_standard:
1065
+ summary: unbSenderId with neither documentType nor fileType — the lookup ran against X12
1066
+ value:
1067
+ errors:
1068
+ - code: invalid_search_param_for_X12
1069
+ message: invalid search param unbSenderId for filetype X12
1070
+ invalid_sandbox:
1071
+ summary: sandbox outside true / false
1072
+ value:
1073
+ errors:
1074
+ - code: invalid_sandbox
1075
+ message: sandbox is invalid. sandbox should be true or false
1076
+ invalid_integration_id:
1077
+ summary: Malformed _integrationId
1078
+ value:
1079
+ errors:
1080
+ - code: invalid_integration_id
1081
+ message: _integrationId is not a valid identifier.
1082
+ '401':
1083
+ $ref: '#/components/responses/401-unauthorized'
1084
+ '404':
1085
+ description: |-
1086
+ No transaction matched the filters — or one did, but its file is no
1087
+ longer in storage (it aged out of the account's data retention
1088
+ period, or was never captured).
1089
+ content:
1090
+ application/json:
1091
+ schema:
1092
+ $ref: '#/components/schemas/Error'
1093
+ examples:
1094
+ not_found:
1095
+ value:
1096
+ errors:
1097
+ - code: edi_transaction_not_found
1098
+ message: No transaction was found matching the provided lookup filters.
1099
+ file_unavailable:
1100
+ value:
1101
+ errors:
1102
+ - code: edi_file_unavailable
1103
+ message: The EDI file for this transaction is not available.
1104
+ '422':
1105
+ description: The account has no B2B Manager (EDI) license.
1106
+ content:
1107
+ application/json:
1108
+ schema:
1109
+ $ref: '#/components/schemas/Error'
1110
+ examples:
1111
+ license:
1112
+ value:
1113
+ errors:
1114
+ - code: edi_subscription_required
1115
+ message: EDI is a premium feature that is not included in your account's current subscription plan. Please upgrade your account to get access to B2B Manager.
779
1116
  components:
780
1117
  securitySchemes:
781
1118
  bearerAuth:
@@ -1351,6 +1688,23 @@ components:
1351
1688
  - https://integrator-userdata-delete-30.s3.us-east-1.amazonaws.com/ediTransactions/5e58483b68b52e5827d56a86/TransactionSummary_20260614_20260713_5e58483b68b52e5827d56a86.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-SignedHeaders=host&X-Amz-Signature=4f9b2c1e8a3d7f0b5c6e9a2d4f8b1c3e7a0d5f2b9c4e6a8d1f3b7c0e5a9d2f4b
1352
1689
  required:
1353
1690
  - url
1691
+ EDITransactionFileSignedUrlResponse:
1692
+ type: object
1693
+ description: |-
1694
+ Pre-signed S3 URL for downloading an EDI transaction file. The URL is
1695
+ short-lived — fetch it right away and request a new one for a later
1696
+ download rather than storing it.
1697
+ properties:
1698
+ signedURL:
1699
+ type: string
1700
+ format: uri
1701
+ description: |-
1702
+ Pre-signed S3 URL that streams the EDI file when fetched with a plain
1703
+ GET (no auth headers needed). Short-lived; never store it.
1704
+ examples:
1705
+ - https://integrator-files.s3.us-east-1.amazonaws.com/26338886c17c45e1840e0a7ec81a1a2d?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-SignedHeaders=host&X-Amz-Signature=4f9b2c1e8a3d7f0b5c6e9a2d4f8b1c3e7a0d5f2b9c4e6a8d1f3b7c0e5a9d2f4b
1706
+ required:
1707
+ - signedURL
1354
1708
  EDITransactionMdnResponse:
1355
1709
  type: object
1356
1710
  description: |-
@@ -1439,5 +1793,169 @@ components:
1439
1793
  summary: Bearer token invalid or revoked
1440
1794
  value:
1441
1795
  message: Bearer Authentication Failed
1796
+ parameters:
1797
+ FileType:
1798
+ name: fileType
1799
+ in: query
1800
+ required: false
1801
+ schema:
1802
+ type: string
1803
+ enum:
1804
+ - X12
1805
+ - EDIFACT
1806
+ x-enumDescriptions:
1807
+ X12: ANSI X12 EDI standard
1808
+ EDIFACT: UN/EDIFACT EDI standard
1809
+ description: |-
1810
+ EDI standard the lookup runs against. Inferred from `documentType` when
1811
+ one is sent, and must agree with it.
1812
+ Direction:
1813
+ name: direction
1814
+ in: query
1815
+ required: false
1816
+ schema:
1817
+ type: string
1818
+ enum:
1819
+ - inbound
1820
+ - outbound
1821
+ x-enumDescriptions:
1822
+ inbound: Document received from a trading partner
1823
+ outbound: Document sent to a trading partner
1824
+ description: Narrows the lookup to one transaction direction. Case-insensitive.
1825
+ Sandbox:
1826
+ name: sandbox
1827
+ in: query
1828
+ required: false
1829
+ schema:
1830
+ type: boolean
1831
+ description: |-
1832
+ When true, narrows the lookup to sandbox transactions; when false, to
1833
+ production ones.
1834
+ FaStatus:
1835
+ name: faStatus
1836
+ in: query
1837
+ required: false
1838
+ style: form
1839
+ explode: false
1840
+ schema:
1841
+ type: array
1842
+ items:
1843
+ type: string
1844
+ enum:
1845
+ - inProgress
1846
+ - notApplicable
1847
+ - notReceived
1848
+ - accepted
1849
+ - acceptedWithErrors
1850
+ - rejected
1851
+ - failed
1852
+ x-enumDescriptions:
1853
+ inProgress: Awaiting functional acknowledgment from the trading partner
1854
+ notApplicable: No functional acknowledgment expected
1855
+ notReceived: Functional acknowledgment expected but not yet received
1856
+ accepted: Acknowledged and accepted
1857
+ acceptedWithErrors: Acknowledged with errors but accepted
1858
+ rejected: Acknowledged and rejected
1859
+ failed: Functional acknowledgment processing failed
1860
+ description: |-
1861
+ Narrows the lookup to records in any of the given functional-acknowledgment
1862
+ statuses — one value, or several comma-separated (`faStatus=rejected,failed`).
1863
+ StartDate:
1864
+ name: startDate
1865
+ in: query
1866
+ required: false
1867
+ schema:
1868
+ type: string
1869
+ examples:
1870
+ - '2026-10-01T00:00:00Z'
1871
+ - '1759276800000'
1872
+ description: |-
1873
+ Lower bound of the `lastModified` window, as an ISO-8601 timestamp or
1874
+ epoch milliseconds. Must be sent together with `endDate` and lie before it.
1875
+ EndDate:
1876
+ name: endDate
1877
+ in: query
1878
+ required: false
1879
+ schema:
1880
+ type: string
1881
+ examples:
1882
+ - '2026-10-21T00:00:00Z'
1883
+ - '1761004800000'
1884
+ description: |-
1885
+ Upper bound of the `lastModified` window, as an ISO-8601 timestamp or
1886
+ epoch milliseconds. Must be sent together with `startDate`.
1887
+ IntegrationId:
1888
+ name: _integrationId
1889
+ in: query
1890
+ required: false
1891
+ schema:
1892
+ type: string
1893
+ format: objectId
1894
+ x-celigo-refModel: integrations
1895
+ examples:
1896
+ - 66cc9b31f2be816bf9377036
1897
+ description: |-
1898
+ Narrows the lookup to transactions processed by one integration. A
1899
+ malformed id is rejected with 400 `invalid_integration_id`.
1900
+ InterchangeSenderId:
1901
+ name: interchangeSenderId
1902
+ in: query
1903
+ required: false
1904
+ schema:
1905
+ type: string
1906
+ examples:
1907
+ - '1234567890'
1908
+ description: |-
1909
+ X12 only — the record's `isaSenderId` (ISA06), matched exactly or against
1910
+ the stored value padded with trailing spaces; letters are uppercased.
1911
+ Rejected when the lookup runs against EDIFACT.
1912
+ InterchangeReceiverId:
1913
+ name: interchangeReceiverId
1914
+ in: query
1915
+ required: false
1916
+ schema:
1917
+ type: string
1918
+ examples:
1919
+ - CELIGOLABZ
1920
+ description: |-
1921
+ X12 only — the record's `isaReceiverId` (ISA08), matched like
1922
+ `interchangeSenderId`. Rejected when the lookup runs against EDIFACT.
1923
+ UnbSenderId:
1924
+ name: unbSenderId
1925
+ in: query
1926
+ required: false
1927
+ schema:
1928
+ type: string
1929
+ examples:
1930
+ - PARTNERGLN
1931
+ description: |-
1932
+ EDIFACT only — the record's `unbSenderId` (UNB02), matched exactly or
1933
+ against the stored value padded with trailing spaces; letters are
1934
+ uppercased. Rejected when the lookup runs against X12.
1935
+ UnbReceiverId:
1936
+ name: unbReceiverId
1937
+ in: query
1938
+ required: false
1939
+ schema:
1940
+ type: string
1941
+ examples:
1942
+ - CELIGOGLN
1943
+ description: |-
1944
+ EDIFACT only — the record's `unbReceiverId` (UNB04), matched like
1945
+ `unbSenderId`. Rejected when the lookup runs against X12.
1946
+ DocumentType:
1947
+ name: documentType
1948
+ in: query
1949
+ required: false
1950
+ schema:
1951
+ type: string
1952
+ examples:
1953
+ - '850'
1954
+ description: |-
1955
+ EDI document type code — for X12 the numeric transaction-set ID as a
1956
+ string (`850`, `810`, `856`, `997`); for EDIFACT the UNH01 message type
1957
+ (`ORDERS`, `INVOIC`, `DESADV`, `CONTRL`). Case-insensitive. It also
1958
+ selects the EDI standard the lookup runs against. `X12` and `EDIFACT`
1959
+ name the standard, not a document type, and are rejected here.
1442
1960
  x-enable-proxy: true
1443
1961
  x-internal: false
package/dist/tool.yml CHANGED
@@ -460,9 +460,10 @@ paths:
460
460
  summary: Delete a tool
461
461
  description: |-
462
462
  Deletes a tool. Soft-deleted and retained in the recycle bin for 30 days.
463
- Fails with 422 if other resources (MCP servers, access tokens) still
464
- reference this tool — call `GET /v1/tools/{_id}/dependencies` first to
465
- check.
463
+ Fails with 422 if other resources (MCP servers, access tokens, or a
464
+ `ToolImport` import whose `tool._toolId` names it: "import <id> must be
465
+ deleted before you can delete tool <id>") still reference this tool — call
466
+ `GET /v1/tools/{_id}/dependencies` first to check; it lists those imports.
466
467
  operationId: deleteTool
467
468
  tags:
468
469
  - Tools
@@ -1231,8 +1232,12 @@ paths:
1231
1232
  '422':
1232
1233
  description: |-
1233
1234
  A step failed, or the Tool was refused before any step ran: a connection binding is
1234
- missing (`connection_not_overridden`) or has no `_id`, or its branches don't all merge
1235
- back (`tool_dangling_branch`). A failed step answers 422 even when it has
1235
+ missing (`connection_not_overridden`) or has no `_id`, its branches don't all merge
1236
+ back (`tool_dangling_branch`), or the input fails `input.schema` (a missing `required`
1237
+ property answers `tool_input_schema_validation_failed`). The output stage answers 422 too when the stored
1238
+ `output.schema` holds `additionalProperties: false` and the output mappings write a field
1239
+ it doesn't list ("Tool output validation failed: must NOT have additional properties").
1240
+ A failed step answers 422 even when it has
1236
1241
  `proceedOnFailure: true`: the later steps still run, but the response carries the error,
1237
1242
  not the output. Either way the response includes `invocationId` when logging is active,
1238
1243
  so the run can be opened in the run history.
@@ -6354,7 +6359,16 @@ components:
6354
6359
  JSON Schema describing the expected input data structure.
6355
6360
 
6356
6361
  Used for validation, documentation, and AI-assisted tooling.
6357
- Must be a valid JSON Schema document.
6362
+ Must be a valid JSON Schema document. Leave `$schema` out or name draft-07: a
6363
+ `$schema` naming draft 2020-12 fails the save with 422 "Invalid input.schema -
6364
+ no schema with key or ref ...". An `$id` saves.
6365
+
6366
+ Each invoke's input is validated against it. A missing `required` property
6367
+ refuses the call with 422 `tool_input_schema_validation_failed` ("Tool input
6368
+ validation failed: must have required property '<name>'"), and a failed
6369
+ `pattern` with 422 "Tool input validation failed: <field>: must match pattern
6370
+ ...". A property made required later therefore breaks callers that don't send
6371
+ it.
6358
6372
  additionalProperties: true
6359
6373
  examples:
6360
6374
  - type: object
@@ -6468,6 +6482,11 @@ components:
6468
6482
 
6469
6483
  Used for documentation and validation of the tool's output.
6470
6484
  Must be a valid JSON Schema document.
6485
+
6486
+ The mapped output is validated against it. While the stored schema holds
6487
+ `additionalProperties: false`, `POST /v1/tools/{_id}/invoke` answers 422 "Tool
6488
+ output validation failed: must NOT have additional properties" when the output
6489
+ mappings write a field the schema doesn't list.
6471
6490
  additionalProperties: true
6472
6491
  examples:
6473
6492
  - type: object
@@ -6760,7 +6779,12 @@ components:
6760
6779
  description: |
6761
6780
  Filter criteria to determine if this branch should be selected.
6762
6781
 
6763
- Uses Celigo's expression-based filter format.
6782
+ Uses Celigo's expression-based filter format. Send `version` and `rules`
6783
+ directly on `inputFilter` — not inside the `{type: "expression", expression: {...}}`
6784
+ wrapper that export and import filters use. A wrapped filter is saved without an
6785
+ error, but the branch is stored with no `inputFilter` and takes every input.
6786
+ x-celigo-ai-guidance:
6787
+ - Read the tool back after saving a branching router and check that each filtered branch still has its `inputFilter`; a filter sent in the export-filter wrapper is dropped on save without an error.
6764
6788
  properties:
6765
6789
  version:
6766
6790
  type: string
@@ -6800,6 +6824,13 @@ components:
6800
6824
 
6801
6825
  Use "outputRouter" as a special terminal value to exit the tool
6802
6826
  and return the processing results.
6827
+
6828
+ Every branch needs one. A branch without it is saved, but every invoke is
6829
+ then refused with 422 and every test run with 400 `tool_dangling_branch`
6830
+ ("One or more branches are not merged back. Review the setup to ensure all
6831
+ branches converge."), whichever branch the input takes. An id that names no
6832
+ router fails the save with 422 "Invalid nextRouterId is defined on the branch.
6833
+ Please correct the branch configuration."
6803
6834
  examples:
6804
6835
  - router_002
6805
6836
  - outputRouter
@@ -6809,7 +6840,10 @@ components:
6809
6840
  Processing steps to execute in this branch.
6810
6841
 
6811
6842
  Each processor references an export (lookup) or import resource
6812
- for data retrieval or submission.
6843
+ for data retrieval or submission. An export is a step at most once in a
6844
+ tool: using it again, on another branch or in the same one, fails the save
6845
+ with 422 "The export <id> is already included as a pageProcessor in your
6846
+ flow, and cannot be added again."
6813
6847
  items:
6814
6848
  type: object
6815
6849
  properties:
@@ -7064,6 +7098,12 @@ components:
7064
7098
 
7065
7099
  Branches can chain to other routers or use the special "outputRouter"
7066
7100
  terminal value to exit the tool.
7101
+
7102
+ A tool saves without `routers`, but it can't run: `POST /v1/tools/{_id}/invoke`
7103
+ and a test run answer 400 `tool_empty_router` ("Tool has no steps configured.
7104
+ Add at least one step before executing the tool."). A full PUT that omits
7105
+ `routers` removes the steps the same way. Put linear steps in one pass-through
7106
+ router with a single branch.
7067
7107
  items:
7068
7108
  $ref: '#/components/schemas/Router'
7069
7109
  aiDescription:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@celigo/api-specs",
3
- "version": "0.2.157",
3
+ "version": "0.2.159",
4
4
  "private": false,
5
5
  "description": "Public OpenAPI bundles (dist/) and the celigo-cli lint schema pack (schemas.json).",
6
6
  "keywords": [
package/schemas.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "provenance": {
3
3
  "repo": "celigo/integrator-api-specs",
4
- "iasCommit": "063d41cc",
4
+ "iasCommit": "d6523356",
5
5
  "generatedAt": "2026-10-21"
6
6
  },
7
7
  "roots": {