@celigo/api-specs 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +119 -0
  3. package/dist/account.yml +592 -0
  4. package/dist/agent.yml +908 -0
  5. package/dist/ai-agent.yml +5471 -0
  6. package/dist/api.yml +4140 -0
  7. package/dist/apim.yml +1286 -0
  8. package/dist/asynchelper.yml +3391 -0
  9. package/dist/audit.yml +2006 -0
  10. package/dist/connection.yml +8665 -0
  11. package/dist/connector.yml +1406 -0
  12. package/dist/ediprofile.yml +911 -0
  13. package/dist/editransaction.yml +1210 -0
  14. package/dist/enduser.yml +1724 -0
  15. package/dist/environment.yml +568 -0
  16. package/dist/eventreport.yml +692 -0
  17. package/dist/export.yml +17610 -0
  18. package/dist/filedefinition.yml +1396 -0
  19. package/dist/filestorage.yml +3102 -0
  20. package/dist/flow.yml +7928 -0
  21. package/dist/guardrail.yml +2763 -0
  22. package/dist/httpconnector.yml +2277 -0
  23. package/dist/httpconnectorendpoint.yml +722 -0
  24. package/dist/httpconnectorresource.yml +396 -0
  25. package/dist/iclient.yml +4452 -0
  26. package/dist/import.yml +15381 -0
  27. package/dist/integration.yml +4406 -0
  28. package/dist/job.yml +2014 -0
  29. package/dist/lookupcache.yml +1325 -0
  30. package/dist/marketplace.yml +685 -0
  31. package/dist/mcp-oauth-provider.yml +590 -0
  32. package/dist/mcp-server.yml +2656 -0
  33. package/dist/notification.yml +488 -0
  34. package/dist/processor.yml +1253 -0
  35. package/dist/profile.yml +455 -0
  36. package/dist/recyclebin.yml +768 -0
  37. package/dist/script.yml +1128 -0
  38. package/dist/stack.yml +1291 -0
  39. package/dist/state.yml +894 -0
  40. package/dist/subscription.yml +1405 -0
  41. package/dist/sync.yml +4857 -0
  42. package/dist/tag.yml +553 -0
  43. package/dist/template.yml +897 -0
  44. package/dist/tool.yml +33656 -0
  45. package/dist/tradingpartnerconnector.yml +1490 -0
  46. package/dist/user.yml +831 -0
  47. package/package.json +41 -0
  48. package/schemas.json +8420 -0
@@ -0,0 +1,1253 @@
1
+ openapi: 3.2.0
2
+ info:
3
+ version: 1.0.0
4
+ title: Parsers & Generators
5
+ description: API for one-shot parse/generate calls that convert between raw formats (XML, CSV, EDI) and structured JSON.
6
+ servers:
7
+ - url: https://api.integrator.io
8
+ description: Production (US / default region)
9
+ - url: https://api.eu.integrator.io
10
+ description: Production (EU region)
11
+ - url: https://api.au.integrator.io
12
+ description: Production (AU region)
13
+ - url: https://api.ca.integrator.io
14
+ description: Production (CA region)
15
+ security:
16
+ - bearerAuth: []
17
+ tags:
18
+ - name: Parsers & Generators
19
+ description: |-
20
+ Stateless data transformation processors that convert between raw formats
21
+ (XML, CSV, EDI) and structured JSON. Parsers accept raw data and return
22
+ JSON records; generators accept JSON and produce formatted output.
23
+
24
+ These are one-shot transformation calls — they do not create or modify
25
+ any resources. Use them to test parsing rules, preview file definitions,
26
+ or transform data outside of a flow.
27
+
28
+ ## Processor descriptor schema
29
+
30
+ {% openapi-schemas spec="processor" schemas="ProcessorDescriptor" grouped="true" %}
31
+ paths:
32
+ /v1/processors:
33
+ get:
34
+ x-internal: false
35
+ operationId: listProcessorTypes
36
+ tags:
37
+ - Parsers & Generators
38
+ summary: List available flow processor types
39
+ description: |-
40
+ Returns the catalog of processor types the flow engine supports — filter,
41
+ transform, handlebars, javascript, mapper, CSV/XML parser / generator,
42
+ branch filter, merge, etc. Each entry carries a label, description, and
43
+ the input/output media types the processor accepts. The response is
44
+ keyed by processor name (not an array).
45
+ responses:
46
+ '200':
47
+ description: Processor catalog, keyed by processor name.
48
+ content:
49
+ application/json:
50
+ schema:
51
+ $ref: '#/components/schemas/ProcessorsResponse'
52
+ examples:
53
+ default:
54
+ value:
55
+ handlebars:
56
+ name: handlebars
57
+ label: Handlebars
58
+ description: Handlebars template processor.
59
+ ruleMediaType: text
60
+ dataMediaType: json
61
+ resultMediaType: text
62
+ javascript:
63
+ name: javascript
64
+ label: JavaScript
65
+ description: JavaScript hook processor.
66
+ ruleMediaType: javascript
67
+ dataMediaType: json
68
+ resultMediaType: json
69
+ '401':
70
+ $ref: '#/components/responses/401-unauthorized'
71
+ /v1/processors/xmlParser:
72
+ post:
73
+ x-internal: false
74
+ operationId: parseXml
75
+ tags:
76
+ - Parsers & Generators
77
+ summary: Convert XML to JSON
78
+ description: |-
79
+ Parses XML data into JSON records using the specified parsing rules
80
+ and resource path.
81
+
82
+ **Resource path format** — Use XPath-style slash-separated paths
83
+ (e.g. `/root/item`). Dot-separated paths (e.g. `root.item`) do not
84
+ work.
85
+
86
+ **Legacy vs modern output** — Without `doc.parsers` configured, or
87
+ with `V0_json: true`, the parser produces a legacy format where
88
+ element text appears as `[{"_": "value"}]` arrays and attributes
89
+ appear under a `$` key. Setting `V0_json: false` produces clean
90
+ key-value pairs and flattens attributes into the record.
91
+
92
+ When `groupByFields` is used the response shape changes: `data`
93
+ becomes an array of arrays and `dataRecordTraceKeys` /
94
+ `traceKeysDuplicate` are omitted.
95
+
96
+ Invalid XML returns a 422 with code `cannot_parse_xml`.
97
+ Namespaced XPath expressions (e.g. `ns:element`) return a 422
98
+ with code `invalid_xpath`.
99
+ requestBody:
100
+ required: true
101
+ content:
102
+ application/json:
103
+ schema:
104
+ type: object
105
+ properties:
106
+ data:
107
+ type: string
108
+ examples:
109
+ - <orders><order><id>101</id><item>Widget</item></order></orders>
110
+ description: The XML data to parse (as a string).
111
+ rules:
112
+ type: object
113
+ description: |-
114
+ Parsing rules. At minimum, provide `resourcePath` to select
115
+ which XML elements become records. Add `doc.parsers` to
116
+ control the output format.
117
+ properties:
118
+ resourcePath:
119
+ type: string
120
+ examples:
121
+ - /orders/order
122
+ description: |-
123
+ Slash-separated path to the repeating element in the XML
124
+ (e.g. `/root/items/item`). Each matching element becomes
125
+ one output record.
126
+ groupByFields:
127
+ type: array
128
+ items:
129
+ type: string
130
+ description: |-
131
+ Group parsed records by these field names. Changes the
132
+ response `data` to an array of arrays and omits
133
+ `dataRecordTraceKeys` and `traceKeysDuplicate`.
134
+ sortByFields:
135
+ type: array
136
+ items:
137
+ type: string
138
+ doc:
139
+ type: object
140
+ properties:
141
+ fileParser:
142
+ type: boolean
143
+ parsers:
144
+ type: array
145
+ description: |-
146
+ Array of parser configurations. Typically contains a
147
+ single XML parser entry.
148
+ items:
149
+ type: object
150
+ properties:
151
+ type:
152
+ type: string
153
+ enum:
154
+ - xml
155
+ x-enumDescriptions:
156
+ xml: XML parser configuration.
157
+ version:
158
+ type: integer
159
+ examples:
160
+ - 1
161
+ rules:
162
+ type: object
163
+ properties:
164
+ V0_json:
165
+ type: boolean
166
+ description: |-
167
+ When `false`, produces clean key-value output
168
+ and flattens XML attributes into the record.
169
+ When `true` (default), uses legacy format with
170
+ `_` and `$` keys.
171
+ trimSpaces:
172
+ type: boolean
173
+ description: Trim leading/trailing whitespace from text nodes.
174
+ stripNewLineChars:
175
+ type: boolean
176
+ description: Remove newline characters from text nodes.
177
+ attributePrefix:
178
+ type: string
179
+ examples:
180
+ - '@'
181
+ description: |-
182
+ Prefix prepended to XML attribute names in the
183
+ JSON output (e.g. `@` produces `@id`). Only
184
+ active when `V0_json` is `false`.
185
+ textNodeName:
186
+ type: string
187
+ examples:
188
+ - '&txt'
189
+ description: |-
190
+ Property name for text content in mixed-content
191
+ elements. Defaults to `&txt`. Only active when
192
+ `V0_json` is `false`.
193
+ listNodes:
194
+ type: array
195
+ items:
196
+ type: string
197
+ description: |-
198
+ Element names that should always be arrays in the
199
+ output, even when containing a single item. Only
200
+ active when `V0_json` is `false`.
201
+ includeNodes:
202
+ type: array
203
+ items:
204
+ type: string
205
+ description: |-
206
+ Only include these element names in the output.
207
+ All other elements are dropped. Only active when
208
+ `V0_json` is `false`.
209
+ excludeNodes:
210
+ type: array
211
+ items:
212
+ type: string
213
+ description: |-
214
+ Exclude these element names from the output. Only
215
+ active when `V0_json` is `false`.
216
+ mixedNodes:
217
+ type: array
218
+ items:
219
+ type: string
220
+ description: |-
221
+ Element names that contain mixed content (text
222
+ interleaved with child elements). Text is
223
+ extracted into the `textNodeName` property. Only
224
+ active when `V0_json` is `false`.
225
+ examples:
226
+ modern:
227
+ summary: Parse XML with clean output (V0_json false)
228
+ value:
229
+ data: <orders><order><id>101</id><item>Widget</item></order><order><id>102</id><item>Gadget</item></order></orders>
230
+ rules:
231
+ resourcePath: /orders/order
232
+ doc:
233
+ fileParser: true
234
+ parsers:
235
+ - type: xml
236
+ version: 1
237
+ rules:
238
+ V0_json: false
239
+ legacy:
240
+ summary: Parse XML with legacy output (default)
241
+ value:
242
+ data: <orders><order><id>101</id><item>Widget</item></order></orders>
243
+ rules:
244
+ resourcePath: /orders/order
245
+ responses:
246
+ '200':
247
+ description: Parsed JSON records.
248
+ content:
249
+ application/json:
250
+ schema:
251
+ $ref: '#/components/schemas/ParserResponse'
252
+ examples:
253
+ modern:
254
+ summary: Clean output (V0_json false)
255
+ value:
256
+ mediaType: json
257
+ data:
258
+ - id: '101'
259
+ item: Widget
260
+ - id: '102'
261
+ item: Gadget
262
+ duration: 1
263
+ dataRecordTraceKeys:
264
+ - null
265
+ - null
266
+ traceKeysDuplicate: false
267
+ legacy:
268
+ summary: Legacy output (default)
269
+ value:
270
+ mediaType: json
271
+ data:
272
+ - id:
273
+ - _: '101'
274
+ item:
275
+ - _: Widget
276
+ duration: 1
277
+ dataRecordTraceKeys:
278
+ - null
279
+ traceKeysDuplicate: false
280
+ '401':
281
+ $ref: '#/components/responses/401-unauthorized'
282
+ '422':
283
+ description: Invalid XPath expression or processing rule error.
284
+ content:
285
+ application/json:
286
+ schema:
287
+ type: object
288
+ properties:
289
+ code:
290
+ type: string
291
+ enum:
292
+ - invalid_xpath
293
+ - cannot_parse_xml
294
+ x-enumDescriptions:
295
+ invalid_xpath: The resourcePath contains an invalid or namespaced XPath expression.
296
+ cannot_parse_xml: The input data is not well-formed XML.
297
+ message:
298
+ type: string
299
+ source:
300
+ type: string
301
+ resolved:
302
+ type: boolean
303
+ occurredAt:
304
+ type: integer
305
+ path:
306
+ type: string
307
+ /v1/processors/csvParser:
308
+ post:
309
+ x-internal: false
310
+ operationId: parseCsv
311
+ tags:
312
+ - Parsers & Generators
313
+ summary: Convert CSV to JSON
314
+ description: |-
315
+ Parses CSV data into JSON records using the specified delimiter and
316
+ formatting rules.
317
+
318
+ Both `data` and `rules` are technically optional — omitting either
319
+ returns an empty result rather than an error. When `hasHeaderRow` is
320
+ false, columns are named `Column0`, `Column1`, etc. When
321
+ `includeEmptyValues` is true, missing values become JSON `null`
322
+ instead of being omitted from the record.
323
+
324
+ When `groupByFields` is used the response shape changes: `data`
325
+ becomes an array of arrays (grouped records) and the
326
+ `dataRecordTraceKeys` / `traceKeysDuplicate` fields are omitted.
327
+ This is a stateless transformation. All values are returned as
328
+ strings, even numeric CSV columns.
329
+ requestBody:
330
+ required: true
331
+ content:
332
+ application/json:
333
+ schema:
334
+ type: object
335
+ properties:
336
+ data:
337
+ type: string
338
+ examples:
339
+ - |-
340
+ name,email,age
341
+ Alice,alice@example.com,30
342
+ Bob,bob@example.com,25
343
+ description: The CSV data to parse.
344
+ rules:
345
+ type: object
346
+ description: Parsing rules controlling delimiters, headers, and grouping.
347
+ properties:
348
+ columnDelimiter:
349
+ type: string
350
+ examples:
351
+ - ','
352
+ description: Column delimiter character (e.g. `,`, `\t`).
353
+ rowDelimiter:
354
+ type: string
355
+ examples:
356
+ - |+
357
+
358
+ description: Row delimiter (e.g. `\n`, `|`).
359
+ trimSpaces:
360
+ type: boolean
361
+ description: When true, trims leading and trailing spaces from parsed values.
362
+ hasHeaderRow:
363
+ type: boolean
364
+ description: |-
365
+ When true, the first row is treated as column headers. When false,
366
+ columns are named Column0, Column1, etc.
367
+ rowsPerRecord:
368
+ type: boolean
369
+ rowsToSkip:
370
+ type: integer
371
+ examples:
372
+ - 0
373
+ description: Number of rows to skip before parsing begins.
374
+ multipleRowsPerRecord:
375
+ type: boolean
376
+ keyColumns:
377
+ type: array
378
+ items:
379
+ type: string
380
+ description: |-
381
+ Group consecutive rows into multi-row records by
382
+ these column names. When a new value appears in a
383
+ key column, a new record group starts. Changes the
384
+ response `data` to an array of arrays.
385
+ disableQuoteAndStripEnclosingQuotes:
386
+ type: boolean
387
+ description: |-
388
+ Disables CSV quote handling and strips enclosing
389
+ quotes from values.
390
+ groupByFields:
391
+ type: array
392
+ items:
393
+ type: string
394
+ description: |-
395
+ Group parsed records by these field names. Changes the
396
+ response `data` to an array of arrays and omits
397
+ `dataRecordTraceKeys` and `traceKeysDuplicate`.
398
+ sortByFields:
399
+ type: array
400
+ items:
401
+ type: string
402
+ options:
403
+ type: object
404
+ properties:
405
+ includeEmptyValues:
406
+ type: boolean
407
+ description: |-
408
+ When true, empty CSV values are returned as JSON `null`.
409
+ When false (default), empty values are omitted from the
410
+ record.
411
+ examples:
412
+ default:
413
+ summary: Parse a simple CSV with headers
414
+ value:
415
+ data: |-
416
+ name,email,age
417
+ Alice,alice@example.com,30
418
+ Bob,bob@example.com,25
419
+ rules:
420
+ columnDelimiter: ','
421
+ hasHeaderRow: true
422
+ options:
423
+ includeEmptyValues: false
424
+ responses:
425
+ '200':
426
+ description: Parsed JSON records.
427
+ content:
428
+ application/json:
429
+ schema:
430
+ $ref: '#/components/schemas/ParserResponse'
431
+ examples:
432
+ default:
433
+ value:
434
+ mediaType: json
435
+ data:
436
+ - name: Alice
437
+ email: alice@example.com
438
+ age: '30'
439
+ - name: Bob
440
+ email: bob@example.com
441
+ age: '25'
442
+ duration: 0
443
+ dataRecordTraceKeys:
444
+ - null
445
+ - null
446
+ traceKeysDuplicate: false
447
+ '401':
448
+ $ref: '#/components/responses/401-unauthorized'
449
+ /v1/processors/csvDataGenerator:
450
+ post:
451
+ x-internal: false
452
+ operationId: generateCsv
453
+ tags:
454
+ - Parsers & Generators
455
+ summary: Generate CSV from JSON
456
+ description: |-
457
+ Generates CSV output from JSON records using the specified delimiter
458
+ and formatting rules.
459
+
460
+ The response always has `mediaType: "text"` and does not include
461
+ `dataRecordTraceKeys` or `traceKeysDuplicate`. This is a stateless
462
+ transformation.
463
+ requestBody:
464
+ required: true
465
+ content:
466
+ application/json:
467
+ schema:
468
+ type: object
469
+ properties:
470
+ data:
471
+ description: |-
472
+ Records to convert to CSV. Accepts a flat array of objects
473
+ (e.g. `[{"a":"1"}, {"a":"2"}]`) or an array of arrays for
474
+ batch processing (e.g. `[[{"a":"1"}], [{"a":"2"}]]`). Each
475
+ object's keys become column names when `includeHeader` is
476
+ true.
477
+ oneOf:
478
+ - type: array
479
+ items:
480
+ type: object
481
+ additionalProperties: true
482
+ - type: array
483
+ items:
484
+ type: array
485
+ items:
486
+ type: object
487
+ additionalProperties: true
488
+ rules:
489
+ type: object
490
+ description: |-
491
+ Generation rules controlling delimiters, headers, and
492
+ formatting.
493
+ properties:
494
+ columnDelimiter:
495
+ type: string
496
+ examples:
497
+ - ','
498
+ description: Column delimiter character (e.g. `,`, `\t`).
499
+ rowDelimiter:
500
+ type: string
501
+ examples:
502
+ - |+
503
+
504
+ description: |-
505
+ Row delimiter character (default `\n`). Appended after
506
+ each row including the last unless
507
+ `truncateLastRowDelimiter` is true.
508
+ includeHeader:
509
+ type: boolean
510
+ description: When true, includes a header row with column names in the output.
511
+ truncateLastRowDelimiter:
512
+ type: boolean
513
+ description: |-
514
+ When true, omits the trailing row delimiter after the
515
+ last data row.
516
+ replaceTabWithSpace:
517
+ type: boolean
518
+ description: Replace tab characters in values with spaces.
519
+ replaceNewlineWithSpace:
520
+ type: boolean
521
+ description: Replace newline characters in values with spaces.
522
+ wrapWithQuotes:
523
+ type: boolean
524
+ description: Wrap every value (including headers) in double quotes.
525
+ customHeaderRows:
526
+ type: array
527
+ items:
528
+ type: string
529
+ description: |-
530
+ Custom header lines prepended before the column header
531
+ row and data rows. Each string becomes one line in the
532
+ output.
533
+ examples:
534
+ default:
535
+ summary: Generate CSV with header row
536
+ value:
537
+ data:
538
+ - name: Alice
539
+ email: alice@example.com
540
+ - name: Bob
541
+ email: bob@example.com
542
+ rules:
543
+ columnDelimiter: ','
544
+ rowDelimiter: |+
545
+
546
+ includeHeader: true
547
+ responses:
548
+ '200':
549
+ description: Generated CSV data.
550
+ content:
551
+ application/json:
552
+ schema:
553
+ $ref: '#/components/schemas/GeneratorResponse'
554
+ examples:
555
+ default:
556
+ value:
557
+ mediaType: text
558
+ data: |
559
+ name,email
560
+ Alice,alice@example.com
561
+ Bob,bob@example.com
562
+ duration: 0
563
+ '401':
564
+ $ref: '#/components/responses/401-unauthorized'
565
+ /v1/processors/structuredFileParser:
566
+ post:
567
+ x-internal: false
568
+ operationId: parseStructuredFile
569
+ tags:
570
+ - Parsers & Generators
571
+ summary: Parse structured file (EDI) to JSON
572
+ description: |-
573
+ Parses EDI or other structured/delimited file data into JSON using
574
+ a file definition (parsing rules). Commonly used for X12 and EDIFACT
575
+ documents.
576
+
577
+ The file definition must be provided inside a `rules.fileDefinition`
578
+ wrapper object, or referenced by ID via `rules._fileDefinitionId`.
579
+ This differs from the generator endpoint which places definition
580
+ fields directly in `rules`.
581
+
582
+ The response includes a `recordLevelErrors` array not present on
583
+ other processor responses. This is a stateless transformation.
584
+ Provide the file definition inline via `rules.fileDefinition` or
585
+ reference an existing one via `rules._fileDefinitionId` (not both).
586
+ The generator endpoint places definition fields directly in `rules`
587
+ (no `fileDefinition` wrapper).
588
+
589
+ **Required file definition fields** — `name`, `version` (string
590
+ `"1"` or `"2"`), `format` (`delimited`, `delimited/x12`,
591
+ `delimited/edifact`, or `fixed`), and the corresponding format
592
+ sub-object (`delimited` or `fixed`) with at least `rowDelimiter`
593
+ and `colDelimiter` (for delimited) or `rowDelimiter` and
594
+ `paddingChar` (for fixed). The `rules` property defines the
595
+ segment/element hierarchy.
596
+ requestBody:
597
+ required: true
598
+ content:
599
+ application/json:
600
+ schema:
601
+ type: object
602
+ required:
603
+ - data
604
+ - rules
605
+ properties:
606
+ data:
607
+ type: string
608
+ examples:
609
+ - |-
610
+ HDR~John~Doe
611
+ DTL~100~USD
612
+ description: The raw structured file content to parse.
613
+ rules:
614
+ type: object
615
+ description: |-
616
+ Provide either a `fileDefinition` object with the full
617
+ definition inline, or a `_fileDefinitionId` to reference
618
+ an existing file definition resource.
619
+ properties:
620
+ fileDefinition:
621
+ type: object
622
+ description: |-
623
+ Inline file definition. Must include `name`, `version`,
624
+ `format`, the format-specific sub-object, and `rules`.
625
+ properties:
626
+ name:
627
+ type: string
628
+ examples:
629
+ - simple-delimited
630
+ description:
631
+ type: string
632
+ examples:
633
+ - Simple tilde-delimited header/detail file.
634
+ version:
635
+ type: string
636
+ enum:
637
+ - '1'
638
+ - '2'
639
+ x-enumDescriptions:
640
+ '1': Original file definition schema version.
641
+ '2': Updated file definition schema version with breaking changes.
642
+ format:
643
+ type: string
644
+ description: File format type.
645
+ enum:
646
+ - delimited
647
+ - delimited/x12
648
+ - delimited/edifact
649
+ - fixed
650
+ x-enumDescriptions:
651
+ delimited: Generic delimited file (CSV, TSV, pipe-delimited, etc.).
652
+ delimited/x12: X12 EDI format with ISA/GS/ST envelope segments.
653
+ delimited/edifact: UN/EDIFACT format with UNA/UNB/UNH envelope segments.
654
+ fixed: Fixed-width columns padded to defined lengths.
655
+ delimited:
656
+ type: object
657
+ description: Required when `format` starts with `delimited`.
658
+ properties:
659
+ rowSuffix:
660
+ type: string
661
+ examples:
662
+ - '~'
663
+ rowDelimiter:
664
+ type: string
665
+ examples:
666
+ - |+
667
+
668
+ description: Row delimiter (required).
669
+ colDelimiter:
670
+ type: string
671
+ examples:
672
+ - '~'
673
+ description: Column delimiter (required for delimited).
674
+ compositeDelimiter:
675
+ type: string
676
+ examples:
677
+ - ':'
678
+ description: Composite element delimiter (EDI formats).
679
+ fixed:
680
+ type: object
681
+ description: Required when `format` is `fixed`.
682
+ properties:
683
+ rowSuffix:
684
+ type: string
685
+ examples:
686
+ - '~'
687
+ rowDelimiter:
688
+ type: string
689
+ examples:
690
+ - |+
691
+
692
+ description: Row delimiter (required).
693
+ paddingChar:
694
+ type: string
695
+ examples:
696
+ - ' '
697
+ description: Padding character (required, single char).
698
+ skipEmptyEndColDelimiter:
699
+ type: boolean
700
+ skipIntermittentEmptyLines:
701
+ type: boolean
702
+ skipEDIValidation:
703
+ type: boolean
704
+ skipEDIProfileValidation:
705
+ type: boolean
706
+ rules:
707
+ description: |-
708
+ Segment/element hierarchy. Can be an array of
709
+ segment objects or a single root container object
710
+ with `children`.
711
+ oneOf:
712
+ - title: Segment array
713
+ type: array
714
+ items:
715
+ type: object
716
+ additionalProperties: true
717
+ - title: Root container
718
+ type: object
719
+ additionalProperties: true
720
+ required:
721
+ - name
722
+ - version
723
+ - format
724
+ - rules
725
+ _fileDefinitionId:
726
+ type: string
727
+ x-celigo-refModel: filedefinitions
728
+ examples:
729
+ - 60a2c4e6f321d800129a1a3c
730
+ description: |-
731
+ Reference an existing file definition by ID instead of
732
+ providing an inline definition.
733
+ resourcePath:
734
+ type: string
735
+ examples:
736
+ - DTL
737
+ description: |-
738
+ Dot-separated path into the parsed document to select
739
+ which segment's data to return as records.
740
+ options:
741
+ type: object
742
+ properties:
743
+ ediProfile:
744
+ type: object
745
+ additionalProperties: true
746
+ description: Optional EDI profile for ISA/GS envelope context.
747
+ examples:
748
+ inline-definition:
749
+ summary: Parse with inline file definition
750
+ value:
751
+ data: |-
752
+ HDR~John~Doe
753
+ DTL~100~USD
754
+ rules:
755
+ fileDefinition:
756
+ name: simple-delimited
757
+ version: '1'
758
+ format: delimited
759
+ delimited:
760
+ rowDelimiter: |+
761
+
762
+ colDelimiter: '~'
763
+ rules:
764
+ - name: HDR
765
+ elements:
766
+ - name: firstName
767
+ - name: lastName
768
+ - name: DTL
769
+ elements:
770
+ - name: amount
771
+ - name: currency
772
+ by-reference:
773
+ summary: Parse with file definition reference
774
+ value:
775
+ data: HDR~John~Doe
776
+ rules:
777
+ _fileDefinitionId: 60a2c4e6f321d800129a1a3c
778
+ responses:
779
+ '200':
780
+ description: Parsed JSON records.
781
+ content:
782
+ application/json:
783
+ schema:
784
+ $ref: '#/components/schemas/StructuredFileParserResponse'
785
+ examples:
786
+ default:
787
+ value:
788
+ mediaType: json
789
+ data:
790
+ - HDR:
791
+ firstName: John
792
+ lastName: Doe
793
+ DTL:
794
+ amount: '100'
795
+ currency: USD
796
+ recordLevelErrors: []
797
+ duration: 1
798
+ dataRecordTraceKeys:
799
+ - null
800
+ traceKeysDuplicate: false
801
+ '401':
802
+ $ref: '#/components/responses/401-unauthorized'
803
+ '422':
804
+ description: File definition validation error or missing required segment.
805
+ content:
806
+ application/json:
807
+ schema:
808
+ type: object
809
+ properties:
810
+ message:
811
+ type: string
812
+ source:
813
+ type: string
814
+ code:
815
+ type: string
816
+ description: |-
817
+ Error code. Common values: `file_definition_error`,
818
+ `missing_row`, `WRONG_MAX_OCCURRENCE`.
819
+ resolved:
820
+ type: boolean
821
+ occurredAt:
822
+ type: integer
823
+ path:
824
+ type: string
825
+ /v1/processors/structuredFileGenerator:
826
+ post:
827
+ x-internal: false
828
+ operationId: generateStructuredFile
829
+ tags:
830
+ - Parsers & Generators
831
+ summary: Generate structured file (EDI) from JSON
832
+ description: |-
833
+ Generates EDI or other structured/delimited file content from JSON
834
+ records using a file definition (generation rules). Commonly used
835
+ for producing X12 and EDIFACT documents.
836
+
837
+ Unlike the parser endpoint, the generator places file definition
838
+ fields directly in `rules` (no `fileDefinition` wrapper). Each
839
+ element in the definition must include a `value` property containing
840
+ the literal text to output for that field.
841
+
842
+ The `data` field must be an array of objects. Each object in the
843
+ array represents one document to generate. The response has
844
+ `mediaType: "text"` and does not include `dataRecordTraceKeys` or
845
+ `traceKeysDuplicate`.
846
+
847
+ **Required file definition fields** — `name`, `version` (string
848
+ `"1"` or `"2"`), `format`, the format sub-object with
849
+ `rowDelimiter` + `colDelimiter` (and optionally `rowSuffix`), and
850
+ `rules` defining segments with elements that each have `name` and
851
+ `value`. This is a stateless transformation. File definition fields
852
+ go directly in `rules` (no `fileDefinition` wrapper, unlike the
853
+ parser endpoint).
854
+ requestBody:
855
+ required: true
856
+ content:
857
+ application/json:
858
+ schema:
859
+ type: object
860
+ required:
861
+ - data
862
+ - rules
863
+ properties:
864
+ data:
865
+ type: array
866
+ description: |-
867
+ Array of record objects. Each object represents one
868
+ document to generate. The generator uses element `value`
869
+ properties from the rules, not field values from these
870
+ objects.
871
+ items:
872
+ type: object
873
+ additionalProperties: true
874
+ rules:
875
+ type: object
876
+ description: |-
877
+ File definition placed directly at this level (no
878
+ `fileDefinition` wrapper). Must include `name`, `version`,
879
+ `format`, the format sub-object, and `rules`.
880
+ required:
881
+ - name
882
+ - version
883
+ - format
884
+ - rules
885
+ properties:
886
+ name:
887
+ type: string
888
+ examples:
889
+ - simple-delimited
890
+ description:
891
+ type: string
892
+ examples:
893
+ - Simple tilde-delimited header/detail file.
894
+ version:
895
+ type: string
896
+ enum:
897
+ - '1'
898
+ - '2'
899
+ x-enumDescriptions:
900
+ '1': Original file definition schema version.
901
+ '2': Updated file definition schema version with breaking changes.
902
+ format:
903
+ type: string
904
+ description: File format type.
905
+ enum:
906
+ - delimited
907
+ - delimited/x12
908
+ - delimited/edifact
909
+ - fixed
910
+ x-enumDescriptions:
911
+ delimited: Generic delimited file (CSV, TSV, pipe-delimited, etc.).
912
+ delimited/x12: X12 EDI format with ISA/GS/ST envelope segments.
913
+ delimited/edifact: UN/EDIFACT format with UNA/UNB/UNH envelope segments.
914
+ fixed: Fixed-width columns padded to defined lengths.
915
+ delimited:
916
+ type: object
917
+ description: Required when `format` starts with `delimited`.
918
+ properties:
919
+ rowSuffix:
920
+ type: string
921
+ examples:
922
+ - '~'
923
+ description: Appended after each row.
924
+ rowDelimiter:
925
+ type: string
926
+ examples:
927
+ - |+
928
+
929
+ description: Row delimiter (required).
930
+ colDelimiter:
931
+ type: string
932
+ examples:
933
+ - '~'
934
+ description: Column delimiter (required for delimited).
935
+ compositeDelimiter:
936
+ type: string
937
+ examples:
938
+ - ':'
939
+ description: Composite element delimiter (EDI formats).
940
+ fixed:
941
+ type: object
942
+ description: Required when `format` is `fixed`.
943
+ properties:
944
+ rowSuffix:
945
+ type: string
946
+ examples:
947
+ - '~'
948
+ rowDelimiter:
949
+ type: string
950
+ examples:
951
+ - |+
952
+
953
+ description: Row delimiter (required).
954
+ paddingChar:
955
+ type: string
956
+ examples:
957
+ - ' '
958
+ description: Padding character (required, single char).
959
+ skipEmptyEndColDelimiter:
960
+ type: boolean
961
+ rules:
962
+ type: array
963
+ description: |-
964
+ Array of segment definitions. Each segment has a `name`
965
+ and `elements` array. Each element must have `name` and
966
+ `value` (the literal text to output).
967
+ items:
968
+ type: object
969
+ additionalProperties: true
970
+ additionalProperties: true
971
+ options:
972
+ type: object
973
+ properties:
974
+ ediProfile:
975
+ type: object
976
+ additionalProperties: true
977
+ description: Optional EDI profile for ISA/GS envelope context.
978
+ examples:
979
+ default:
980
+ summary: Generate a simple delimited file
981
+ value:
982
+ data:
983
+ - {}
984
+ rules:
985
+ name: simple-delimited
986
+ version: '1'
987
+ format: delimited
988
+ delimited:
989
+ rowDelimiter: |+
990
+
991
+ colDelimiter: '~'
992
+ rules:
993
+ - name: HDR
994
+ elements:
995
+ - name: firstName
996
+ value: John
997
+ - name: lastName
998
+ value: Doe
999
+ responses:
1000
+ '200':
1001
+ description: Generated structured file content.
1002
+ content:
1003
+ application/json:
1004
+ schema:
1005
+ $ref: '#/components/schemas/GeneratorResponse'
1006
+ examples:
1007
+ default:
1008
+ value:
1009
+ mediaType: text
1010
+ data: |
1011
+ HDR~John~Doe
1012
+ duration: 0
1013
+ '401':
1014
+ $ref: '#/components/responses/401-unauthorized'
1015
+ '422':
1016
+ description: File definition validation error.
1017
+ content:
1018
+ application/json:
1019
+ schema:
1020
+ type: object
1021
+ properties:
1022
+ source:
1023
+ type: string
1024
+ code:
1025
+ type: string
1026
+ description: |-
1027
+ Error code. Typically `INVALID_FILE_DEFINITION` or
1028
+ `wrong_data_type`.
1029
+ message:
1030
+ type: string
1031
+ details:
1032
+ type: array
1033
+ description: Detailed validation errors.
1034
+ items:
1035
+ type: object
1036
+ properties:
1037
+ path:
1038
+ type: string
1039
+ message:
1040
+ type: string
1041
+ name:
1042
+ type: string
1043
+ path:
1044
+ type: string
1045
+ components:
1046
+ securitySchemes:
1047
+ bearerAuth:
1048
+ type: http
1049
+ scheme: bearer
1050
+ schemas:
1051
+ ProcessorDescriptor:
1052
+ type: object
1053
+ required:
1054
+ - name
1055
+ - label
1056
+ - description
1057
+ - dataMediaType
1058
+ - resultMediaType
1059
+ - ruleMediaType
1060
+ description: Metadata describing a single processor type.
1061
+ properties:
1062
+ name:
1063
+ type: string
1064
+ examples:
1065
+ - handlebars
1066
+ description: Processor key (matches the enclosing object key).
1067
+ label:
1068
+ type: string
1069
+ examples:
1070
+ - Handlebars
1071
+ description: Human-readable label shown in the UI.
1072
+ description:
1073
+ type: string
1074
+ examples:
1075
+ - Handlebars template processor.
1076
+ description: Short description of the processor's behavior.
1077
+ ruleMediaType:
1078
+ type: string
1079
+ examples:
1080
+ - text
1081
+ description: |-
1082
+ Media type of the processor's rule/template field. Typical values
1083
+ include `text`, `json`, `javascript`.
1084
+ dataMediaType:
1085
+ type: string
1086
+ examples:
1087
+ - json
1088
+ description: Media type the processor expects for the input data.
1089
+ resultMediaType:
1090
+ type: string
1091
+ examples:
1092
+ - text
1093
+ description: Media type the processor emits as its result.
1094
+ ruleJsonSchema:
1095
+ type: object
1096
+ additionalProperties: true
1097
+ description: |-
1098
+ JSON Schema describing the processor's rule structure. Only
1099
+ present on processors with a formal schema (e.g. exportDataConverter).
1100
+ helperFunctions:
1101
+ type: object
1102
+ additionalProperties:
1103
+ type: string
1104
+ description: |-
1105
+ Map of helper function names to usage templates. Only present
1106
+ on the handlebars processor.
1107
+ ProcessorsResponse:
1108
+ type: object
1109
+ description: |-
1110
+ Processor catalog keyed by processor name. Each value describes the
1111
+ processor's label, purpose, and input/output media types.
1112
+ additionalProperties:
1113
+ $ref: '#/components/schemas/ProcessorDescriptor'
1114
+ ParserResponse:
1115
+ type: object
1116
+ description: |-
1117
+ Response from a parser processor (`csvParser`, `xmlParser`).
1118
+
1119
+ When `groupByFields` is used in the request, the `dataRecordTraceKeys`
1120
+ and `traceKeysDuplicate` fields are omitted from the response and `data`
1121
+ becomes an array of arrays (each inner array is one group of records).
1122
+ properties:
1123
+ mediaType:
1124
+ type: string
1125
+ description: Always `json` for parser processors.
1126
+ enum:
1127
+ - json
1128
+ x-enumDescriptions:
1129
+ json: Response data is formatted as JSON.
1130
+ data:
1131
+ description: |-
1132
+ Parsed records. Normally an array of objects. When `groupByFields`
1133
+ is used, becomes an array of arrays (grouped records).
1134
+ oneOf:
1135
+ - type: array
1136
+ items:
1137
+ type: object
1138
+ additionalProperties: true
1139
+ - type: array
1140
+ items:
1141
+ type: array
1142
+ items:
1143
+ type: object
1144
+ additionalProperties: true
1145
+ duration:
1146
+ type: integer
1147
+ description: Processing time in milliseconds.
1148
+ dataRecordTraceKeys:
1149
+ type: array
1150
+ items:
1151
+ type:
1152
+ - string
1153
+ - 'null'
1154
+ description: |-
1155
+ Trace keys for each output record (nullable entries). Omitted
1156
+ when `groupByFields` is used.
1157
+ traceKeysDuplicate:
1158
+ type: boolean
1159
+ description: |-
1160
+ Whether any duplicate trace keys were detected. Omitted when
1161
+ `groupByFields` is used.
1162
+ GeneratorResponse:
1163
+ type: object
1164
+ description: Response from a generator processor (`csvDataGenerator`, `structuredFileGenerator`).
1165
+ properties:
1166
+ mediaType:
1167
+ type: string
1168
+ description: Always `text` for generator processors.
1169
+ enum:
1170
+ - text
1171
+ x-enumDescriptions:
1172
+ text: Response data is formatted as plain text.
1173
+ data:
1174
+ type: string
1175
+ description: Generated text output (CSV, EDI, or other structured format).
1176
+ duration:
1177
+ type: integer
1178
+ description: Processing time in milliseconds.
1179
+ StructuredFileParserResponse:
1180
+ type: object
1181
+ description: Response from the `structuredFileParser` processor.
1182
+ properties:
1183
+ mediaType:
1184
+ type: string
1185
+ description: Always `json` for the structured file parser.
1186
+ enum:
1187
+ - json
1188
+ x-enumDescriptions:
1189
+ json: Response data is formatted as JSON.
1190
+ data:
1191
+ type: array
1192
+ items:
1193
+ type: object
1194
+ additionalProperties: true
1195
+ description: Parsed records from the structured file.
1196
+ recordLevelErrors:
1197
+ type: array
1198
+ items:
1199
+ type: object
1200
+ additionalProperties: true
1201
+ description: |-
1202
+ Per-record errors encountered during parsing (e.g. missing required
1203
+ segments or element validation failures).
1204
+ duration:
1205
+ type: integer
1206
+ description: Processing time in milliseconds.
1207
+ dataRecordTraceKeys:
1208
+ type: array
1209
+ items:
1210
+ type:
1211
+ - string
1212
+ - 'null'
1213
+ description: Trace keys for each output record (nullable entries).
1214
+ traceKeysDuplicate:
1215
+ type: boolean
1216
+ description: When true, duplicate trace keys were detected in the output records.
1217
+ responses:
1218
+ 401-unauthorized:
1219
+ description: |-
1220
+ Unauthorized. The request lacks a valid bearer token, or the provided token
1221
+ failed to authenticate.
1222
+
1223
+ Note: the 401 response is produced by the auth middleware **before** the
1224
+ request reaches the endpoint handler, so it does **not** follow the
1225
+ standard `{errors: [...]}` envelope. Instead the body is a bare
1226
+ `{message: string}` object with no `code`, no `errors` array. Callers
1227
+ handling 401s should key off the HTTP status and the `message` string,
1228
+ not try to destructure an `errors[]`.
1229
+ content:
1230
+ application/json:
1231
+ schema:
1232
+ type: object
1233
+ properties:
1234
+ message:
1235
+ type: string
1236
+ description: |-
1237
+ Human-readable description of the auth failure. Known values:
1238
+ - `"Unauthorized"` — no `Authorization` header on the request.
1239
+ - `"Bearer Authentication Failed"` — header present but token
1240
+ is invalid, revoked, or expired.
1241
+ required:
1242
+ - message
1243
+ examples:
1244
+ missing_token:
1245
+ summary: No Authorization header sent
1246
+ value:
1247
+ message: Unauthorized
1248
+ invalid_token:
1249
+ summary: Bearer token invalid or revoked
1250
+ value:
1251
+ message: Bearer Authentication Failed
1252
+ x-enable-proxy: true
1253
+ x-internal: false