@lotics/cli 0.315.17 → 0.316.0
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/AGENTS.md +37 -24
- package/README.md +42 -37
- package/dist/src/cli.js +27215 -48999
- package/dist/src/client.d.ts +12 -88
- package/dist/src/client.js +10 -74
- package/dist/src/invocation.d.ts +1 -1
- package/docs/agent_surface.md +121 -114
- package/docs/app_architecture.md +39 -0
- package/docs/app_bindings.md +24 -62
- package/docs/building_an_app.md +97 -81
- package/docs/cli_reference.md +18 -19
- package/docs/data_model.md +129 -183
- package/docs/design.md +156 -170
- package/docs/document_templates.md +125 -99
- package/docs/examples.md +1599 -1238
- package/docs/field_values.md +14 -11
- package/docs/filters.md +47 -9
- package/docs/first_build.md +180 -0
- package/docs/getting_started.md +15 -0
- package/docs/knowledge_docs.md +73 -209
- package/docs/migration.md +22 -26
- package/docs/workflow_steps.md +22 -579
- package/docs/workflows.md +407 -208
- package/docs/working_in_a_workspace.md +60 -0
- package/package.json +1 -1
package/docs/workflow_steps.md
CHANGED
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
# Workflow steps
|
|
4
4
|
|
|
5
5
|
The steps only a workflow body runs: a connection's (an invoice issuer, a mailbox, …) and the platform's own. Each is
|
|
6
|
-
called as `await <step>({ ...inputs })` (see `workflows`)
|
|
7
|
-
|
|
6
|
+
called as `await <step>({ ...inputs })` (see `workflows`); a step's inputs and answer are its entry here. A connection
|
|
7
|
+
step takes the `connected_account_id` that `get_workspace` lists under kind `connection`, and the app's owner and
|
|
8
|
+
whoever saves the body must both be able to use that connection.
|
|
8
9
|
|
|
9
10
|
**How a step fails.** A step that is refused — an input the schema rejects, a connection the workspace lacks, an
|
|
10
11
|
answer the provider refuses — ends the run, and the run's error reads `[<step>] <reason>`. Inside `try { … } catch
|
|
@@ -765,7 +766,7 @@ above. A provider's refusal carries the provider's own words.
|
|
|
765
766
|
### drive_import_file (workflow step)
|
|
766
767
|
|
|
767
768
|
- Import a Google Drive file into the workspace as a Lotics file, and return its file id.
|
|
768
|
-
- Google Docs arrive as .docx, Sheets as .xlsx, Slides as .pptx; everything else transfers unchanged. **This is also how you READ a Drive file.** There is no separate Drive read tool: import the file, then use `view_files` on the returned id. (
|
|
769
|
+
- Google Docs arrive as .docx, Sheets as .xlsx, Slides as .pptx; everything else transfers unchanged. **This is also how you READ a Drive file.** There is no separate Drive read tool: import the file, then use `view_files` on the returned id. (chat)
|
|
769
770
|
- That path handles scanned documents — a photographed B/L or a stamped invoice inside a .docx reaches the model as a picture.
|
|
770
771
|
- Exporting Drive content as plain text would return an empty document for exactly those files.
|
|
771
772
|
- Folders, Forms, shortcuts and other Drive items with no file form cannot be imported.
|
|
@@ -781,7 +782,7 @@ above. A provider's refusal carries the provider's own words.
|
|
|
781
782
|
|
|
782
783
|
| Name | Type | Required | What it is |
|
|
783
784
|
| --- | --- | --- | --- |
|
|
784
|
-
| `id` | string | yes | Lotics file ID — pass this to view_files to read the contents (
|
|
785
|
+
| `id` | string | yes | Lotics file ID — pass this to view_files to read the contents (chat) |
|
|
785
786
|
| `filename` | string | yes | |
|
|
786
787
|
| `mime_type` | string | yes | |
|
|
787
788
|
| `url` | string | yes | |
|
|
@@ -819,7 +820,7 @@ above. A provider's refusal carries the provider's own words.
|
|
|
819
820
|
|
|
820
821
|
### evaluate_formula (workflow step)
|
|
821
822
|
|
|
822
|
-
- Compute a formula over one record as its table's own formula fields compute: fields referenced as `{
|
|
823
|
+
- Compute a formula over one record as its table's own formula fields compute: fields referenced as `{alias}`, lookups and rollups read as the row holds them.
|
|
823
824
|
- Writes nothing.
|
|
824
825
|
|
|
825
826
|
**Inputs**
|
|
@@ -838,148 +839,6 @@ above. A provider's refusal carries the provider's own words.
|
|
|
838
839
|
|
|
839
840
|
## excel
|
|
840
841
|
|
|
841
|
-
### excel_create_file (workflow step)
|
|
842
|
-
|
|
843
|
-
- Create an Excel file with styled column headers and auto-filter enabled.
|
|
844
|
-
- Input: { filename, sheets: [{ name, columns: [{ header, width? }], rows: unknown[][] }] } Headers are bold, centered, bordered, with auto-filter on the header row.
|
|
845
|
-
- Best for producing polished report-style spreadsheets.
|
|
846
|
-
- Returns a new file_id — use it for subsequent operations.
|
|
847
|
-
|
|
848
|
-
**Inputs**
|
|
849
|
-
|
|
850
|
-
| Name | Type | Required | What it is |
|
|
851
|
-
| --- | --- | --- | --- |
|
|
852
|
-
| `sheets` | object[] | yes | |
|
|
853
|
-
| `sheets[].name` | string | yes | |
|
|
854
|
-
| `sheets[].columns` | object[] | yes | |
|
|
855
|
-
| `sheets[].columns[].header` | string | yes | |
|
|
856
|
-
| `sheets[].columns[].width` | number | | |
|
|
857
|
-
| `sheets[].rows` | any[][] | yes | 2D array of cell values |
|
|
858
|
-
| `filename` | string | yes | |
|
|
859
|
-
|
|
860
|
-
**Answer**
|
|
861
|
-
|
|
862
|
-
| Name | Type | Required | What it is |
|
|
863
|
-
| --- | --- | --- | --- |
|
|
864
|
-
| `file_id` | string | yes | The ID of the generated file. |
|
|
865
|
-
| `url` | string | yes | The download URL of the generated file. |
|
|
866
|
-
| `filename` | string | yes | The filename of the generated file, including extension. |
|
|
867
|
-
| `mime_type` | string | yes | The MIME type of the generated file. |
|
|
868
|
-
|
|
869
|
-
### excel_find_cells (workflow step)
|
|
870
|
-
|
|
871
|
-
- Search for cells matching a text query in an Excel worksheet.
|
|
872
|
-
- Input: { file_id, worksheet: string\|number, query: "search text", match_type?: "contains"\|"exact"\|"regex", max_results?: number } Default match_type is "contains" (case-insensitive).
|
|
873
|
-
- Returns matching cell addresses, values, and positions.
|
|
874
|
-
- Read-only — does not modify the file.
|
|
875
|
-
|
|
876
|
-
**Inputs**
|
|
877
|
-
|
|
878
|
-
| Name | Type | Required | What it is |
|
|
879
|
-
| --- | --- | --- | --- |
|
|
880
|
-
| `file_id` | string | yes | |
|
|
881
|
-
| `worksheet` | string \\| number | yes | |
|
|
882
|
-
| `query` | string | yes | Text to find. |
|
|
883
|
-
| `match_type` | "exact" \\| "contains" \\| "regex" | | How to match: exact, contains (default), or regex |
|
|
884
|
-
| `max_results` | number | | Max matches to return |
|
|
885
|
-
|
|
886
|
-
**Answer**
|
|
887
|
-
|
|
888
|
-
| Name | Type | Required | What it is |
|
|
889
|
-
| --- | --- | --- | --- |
|
|
890
|
-
| `matches` | object[] | yes | |
|
|
891
|
-
| `matches[].cell` | string | yes | Cell address, e.g. B3 |
|
|
892
|
-
| `matches[].value` | string | yes | Cell value as string |
|
|
893
|
-
| `matches[].row` | number | yes | Row number |
|
|
894
|
-
| `matches[].column` | string | yes | Column letter |
|
|
895
|
-
| `total_matches` | number | yes | Total number of matches found |
|
|
896
|
-
|
|
897
|
-
### excel_format_range (workflow step)
|
|
898
|
-
|
|
899
|
-
- Apply formatting to a cell range (fonts, fills, borders, alignment, number formats). range format is always "START:END" — single cell: "B2:B2", multi-cell: "A1:D10".
|
|
900
|
-
- Never use "B2" alone.
|
|
901
|
-
|
|
902
|
-
**Inputs**
|
|
903
|
-
|
|
904
|
-
| Name | Type | Required | What it is |
|
|
905
|
-
| --- | --- | --- | --- |
|
|
906
|
-
| `file_id` | string | yes | |
|
|
907
|
-
| `worksheet` | string \\| number | yes | |
|
|
908
|
-
| `range` | string | yes | |
|
|
909
|
-
| `format` | object | yes | |
|
|
910
|
-
| `format.font_bold` | boolean | | |
|
|
911
|
-
| `format.font_italic` | boolean | | |
|
|
912
|
-
| `format.font_size` | number | | |
|
|
913
|
-
| `format.font_color` | string | | Hex color like #FF0000 |
|
|
914
|
-
| `format.font_name` | string | | |
|
|
915
|
-
| `format.font_underline` | "single" \\| "double" | | |
|
|
916
|
-
| `format.font_strike` | boolean | | |
|
|
917
|
-
| `format.background_color` | string | | Hex color like #FFFF00 |
|
|
918
|
-
| `format.horizontal_align` | "left" \\| "center" \\| "right" | | |
|
|
919
|
-
| `format.vertical_align` | "top" \\| "middle" \\| "bottom" | | |
|
|
920
|
-
| `format.wrap_text` | boolean | | |
|
|
921
|
-
| `format.number_format` | string | | Excel number format code (e.g. #,##0.00, dd/mm/yyyy) |
|
|
922
|
-
| `format.border_top` | object | | |
|
|
923
|
-
| `format.border_top.style` | "solid" \\| "dashed" \\| "dotted" \\| "double" | | |
|
|
924
|
-
| `format.border_top.width` | number | | |
|
|
925
|
-
| `format.border_top.color` | string | | |
|
|
926
|
-
| `format.border_bottom` | object | | |
|
|
927
|
-
| `format.border_bottom.style` | "solid" \\| "dashed" \\| "dotted" \\| "double" | | |
|
|
928
|
-
| `format.border_bottom.width` | number | | |
|
|
929
|
-
| `format.border_bottom.color` | string | | |
|
|
930
|
-
| `format.border_left` | object | | |
|
|
931
|
-
| `format.border_left.style` | "solid" \\| "dashed" \\| "dotted" \\| "double" | | |
|
|
932
|
-
| `format.border_left.width` | number | | |
|
|
933
|
-
| `format.border_left.color` | string | | |
|
|
934
|
-
| `format.border_right` | object | | |
|
|
935
|
-
| `format.border_right.style` | "solid" \\| "dashed" \\| "dotted" \\| "double" | | |
|
|
936
|
-
| `format.border_right.width` | number | | |
|
|
937
|
-
| `format.border_right.color` | string | | |
|
|
938
|
-
| `column_widths` | object | | Column letter → width mapping |
|
|
939
|
-
| `row_heights` | object | | Row number → height mapping |
|
|
940
|
-
| `auto_filter` | string | | Range for an auto-filter (e.g. A1:D1); one over a table turns on that table's own filter |
|
|
941
|
-
|
|
942
|
-
**Answer**
|
|
943
|
-
|
|
944
|
-
| Name | Type | Required | What it is |
|
|
945
|
-
| --- | --- | --- | --- |
|
|
946
|
-
| `file_id` | string | yes | |
|
|
947
|
-
| `formatted_cells` | number | yes | |
|
|
948
|
-
|
|
949
|
-
### excel_get_range (workflow step)
|
|
950
|
-
|
|
951
|
-
- Read cell values from a range in an Excel worksheet. range format is always "START:END" — single cell: "B2:B2", multi-cell: "A1:D10".
|
|
952
|
-
- Never use "B2" alone. worksheet: use sheet name (preferred) or 0-based index.
|
|
953
|
-
- Use view_file first to see available worksheets.
|
|
954
|
-
- Returns data keyed by row number then column letter, e.g. { "1": { "A": "Hello" } }.
|
|
955
|
-
- Maximum 1000 cells per call — use smaller ranges and paginate if needed.
|
|
956
|
-
- Read-only — does not modify the file.
|
|
957
|
-
|
|
958
|
-
**Inputs**
|
|
959
|
-
|
|
960
|
-
| Name | Type | Required | What it is |
|
|
961
|
-
| --- | --- | --- | --- |
|
|
962
|
-
| `file_id` | string | yes | |
|
|
963
|
-
| `worksheet` | string \\| number | yes | |
|
|
964
|
-
| `range` | string | yes | |
|
|
965
|
-
| `options` | object | | Options for data retrieval |
|
|
966
|
-
| `options.include_formulas` | boolean | | Include cell formulas instead of calculated values |
|
|
967
|
-
| `options.include_formatting` | boolean | | Include cell formatting information |
|
|
968
|
-
| `options.max_cell_length` | number | | Max characters returned per cell; longer text is truncated with an ellipsis. Pass -1 to return cells in full — use when reading free-text columns like notes. |
|
|
969
|
-
|
|
970
|
-
**Answer**
|
|
971
|
-
|
|
972
|
-
| Name | Type | Required | What it is |
|
|
973
|
-
| --- | --- | --- | --- |
|
|
974
|
-
| `file_id` | string | yes | |
|
|
975
|
-
| `worksheet_name` | string | yes | The worksheet name |
|
|
976
|
-
| `range` | string | yes | The requested range |
|
|
977
|
-
| `data` | object | yes | Cell values keyed by row number then column letter |
|
|
978
|
-
| `formatting` | object | | Cell formatting keyed by row then column |
|
|
979
|
-
| `truncated_cells` | object[] | | Cells with truncated content |
|
|
980
|
-
| `truncated_cells[].cell` | string | yes | Cell address |
|
|
981
|
-
| `truncated_cells[].original_length` | number | yes | Original text length |
|
|
982
|
-
|
|
983
842
|
### excel_get_rows (workflow step)
|
|
984
843
|
|
|
985
844
|
- Read every row of a sheet in an .xlsx, .xls or .csv file as a list of objects keyed by the header row's text.
|
|
@@ -1011,37 +870,6 @@ above. A provider's refusal carries the provider's own words.
|
|
|
1011
870
|
| `row_count` | number | yes | |
|
|
1012
871
|
| `rows` | object[] | yes | |
|
|
1013
872
|
|
|
1014
|
-
### excel_update_range (workflow step)
|
|
1015
|
-
|
|
1016
|
-
- Write cell values into a range in an Excel worksheet. range format is always "START:END" — single cell: "B2:B2", multi-cell: "A1:C3".
|
|
1017
|
-
- Never use "B2" alone. values is a 2D array matching the range dimensions.
|
|
1018
|
-
- Single cell: [["value"]], row: [["a","b","c"]], grid: [[r1...],[r2...]].
|
|
1019
|
-
- Strings starting with "=" are interpreted as formulas (e.g. "=SUM(A1:A10)").
|
|
1020
|
-
- Set options.interpret_formulas=false to write literal "=" text.
|
|
1021
|
-
- Modifies the document in place.
|
|
1022
|
-
|
|
1023
|
-
**Inputs**
|
|
1024
|
-
|
|
1025
|
-
| Name | Type | Required | What it is |
|
|
1026
|
-
| --- | --- | --- | --- |
|
|
1027
|
-
| `file_id` | string | yes | |
|
|
1028
|
-
| `worksheet` | string \\| number | yes | |
|
|
1029
|
-
| `range` | string | yes | |
|
|
1030
|
-
| `values` | any[][] | yes | 2D array of values to write (rows x columns) |
|
|
1031
|
-
| `options` | object | | |
|
|
1032
|
-
| `options.preserve_formatting` | boolean | | Preserve existing cell formatting (only update values) |
|
|
1033
|
-
| `options.apply_number_format` | string | | Apply a number format to all cells in the range (e.g., '#,##0.00') |
|
|
1034
|
-
| `options.interpret_formulas` | boolean | | Set false to write '=' strings as literal text |
|
|
1035
|
-
|
|
1036
|
-
**Answer**
|
|
1037
|
-
|
|
1038
|
-
| Name | Type | Required | What it is |
|
|
1039
|
-
| --- | --- | --- | --- |
|
|
1040
|
-
| `file_id` | string | yes | |
|
|
1041
|
-
| `worksheet_name` | string | yes | |
|
|
1042
|
-
| `range` | string | yes | |
|
|
1043
|
-
| `updated_cells` | number | yes | Number of cells updated |
|
|
1044
|
-
|
|
1045
873
|
## facebook
|
|
1046
874
|
|
|
1047
875
|
### facebook_create_post (workflow step)
|
|
@@ -1481,29 +1309,6 @@ above. A provider's refusal carries the provider's own words.
|
|
|
1481
1309
|
| `bank.short_name` | string | yes | |
|
|
1482
1310
|
| `bank.full_name` | string | yes | |
|
|
1483
1311
|
|
|
1484
|
-
### generate_image (workflow step)
|
|
1485
|
-
|
|
1486
|
-
- Generate an image from a text prompt and save it to the workspace.
|
|
1487
|
-
- Returns a file_id usable as an image field value or attachment.
|
|
1488
|
-
|
|
1489
|
-
**Inputs**
|
|
1490
|
-
|
|
1491
|
-
| Name | Type | Required | What it is |
|
|
1492
|
-
| --- | --- | --- | --- |
|
|
1493
|
-
| `prompt` | string | yes | Description of the image to generate. |
|
|
1494
|
-
| `size` | "1024x1024" \\| "1024x1536" \\| "1536x1024" | | Square, portrait, or landscape. |
|
|
1495
|
-
| `quality` | "low" \\| "medium" \\| "high" | | Higher quality costs more. |
|
|
1496
|
-
|
|
1497
|
-
**Answer**
|
|
1498
|
-
|
|
1499
|
-
| Name | Type | Required | What it is |
|
|
1500
|
-
| --- | --- | --- | --- |
|
|
1501
|
-
| `file_id` | string | yes | |
|
|
1502
|
-
| `url` | string | yes | |
|
|
1503
|
-
| `width` | number | yes | |
|
|
1504
|
-
| `height` | number | yes | |
|
|
1505
|
-
| `mime_type` | string | yes | |
|
|
1506
|
-
|
|
1507
1312
|
### generate_qr_code (workflow step)
|
|
1508
1313
|
|
|
1509
1314
|
- Generate a QR code PNG from text or a URL and save it to the workspace.
|
|
@@ -1525,28 +1330,6 @@ above. A provider's refusal carries the provider's own words.
|
|
|
1525
1330
|
| `mime_type` | string | yes | |
|
|
1526
1331
|
| `url` | string | yes | |
|
|
1527
1332
|
|
|
1528
|
-
## get
|
|
1529
|
-
|
|
1530
|
-
### get_record_activity (workflow step)
|
|
1531
|
-
|
|
1532
|
-
- List a record's activity, newest first: one entry per save — a person's edits made close together read as one, each field from before the first to after the last — and, inside an app's workflow, the comments the app takes.
|
|
1533
|
-
- A change entry says who made it and when, whether it made the record (created), whether it put an earlier change back (undo), who put it back since (undone), and whether the member the run acts for may put it back (undoable).
|
|
1534
|
-
- Inside an app's workflow the fields are the ones the app reads, and a record the app's own read does not reach for that member is not found.
|
|
1535
|
-
|
|
1536
|
-
**Inputs**
|
|
1537
|
-
|
|
1538
|
-
| Name | Type | Required | What it is |
|
|
1539
|
-
| --- | --- | --- | --- |
|
|
1540
|
-
| `record_id` | string | yes | |
|
|
1541
|
-
| `after` | string \\| null | | A page's `next`. |
|
|
1542
|
-
|
|
1543
|
-
**Answer**
|
|
1544
|
-
|
|
1545
|
-
| Name | Type | Required | What it is |
|
|
1546
|
-
| --- | --- | --- | --- |
|
|
1547
|
-
| `entries` | any[] | yes | Newest first. |
|
|
1548
|
-
| `next` | string | | Where the trail continues: pass it as `after`. Absent at its end. |
|
|
1549
|
-
|
|
1550
1333
|
## gmail
|
|
1551
1334
|
|
|
1552
1335
|
### gmail_get_thread (workflow step)
|
|
@@ -1632,7 +1415,7 @@ above. A provider's refusal carries the provider's own words.
|
|
|
1632
1415
|
### gmail_read_email (workflow step)
|
|
1633
1416
|
|
|
1634
1417
|
- Fetch a Gmail message's body and the list of its attachments.
|
|
1635
|
-
- Attachments are stored as workspace files — the result names each one's file_id; read one with view_files, attach one to a record with update_records. (
|
|
1418
|
+
- Attachments are stored as workspace files — the result names each one's file_id; read one with view_files, attach one to a record with update_records. (chat)
|
|
1636
1419
|
|
|
1637
1420
|
**Inputs**
|
|
1638
1421
|
|
|
@@ -1667,7 +1450,7 @@ above. A provider's refusal carries the provider's own words.
|
|
|
1667
1450
|
| `message.attachments[].filename` | string | yes | Attachment filename as stored, which may differ from the sender's |
|
|
1668
1451
|
| `message.attachments[].mimeType` | string | yes | MIME type as stored, recovered from the filename when the sender declared a generic one |
|
|
1669
1452
|
| `message.attachments[].attachmentId` | string | yes | Gmail attachment ID |
|
|
1670
|
-
| `message.attachments[].file_id` | string | | Stored file ID — pass to view_files to read it, or to update_records to attach it (
|
|
1453
|
+
| `message.attachments[].file_id` | string | | Stored file ID — pass to view_files to read it, or to update_records to attach it (chat) |
|
|
1671
1454
|
| `message.attachments[].size` | number | | Stored size in bytes |
|
|
1672
1455
|
|
|
1673
1456
|
### gmail_reply_email (workflow step)
|
|
@@ -1749,7 +1532,7 @@ above. A provider's refusal carries the provider's own words.
|
|
|
1749
1532
|
- A created row lists no changes: its values are the row's own. held_rows lists each row held: kind ("create", "update", "remove", or "unmatched" where no row carries its key and create is false), reason, message, record_id where one row carries its key, key (each match field as text), the changes it would make, links (each link text naming no one row, with the rows it could be as candidates { id, display }), and values — its key and the cells it would write, as the call gave them.
|
|
1750
1533
|
- A later call given those values under conflicts { "default": "overwrite" } writes it.
|
|
1751
1534
|
- The two lists hold at most 10000 entries and 8388608 characters of JSON between them, each in the rows' order, what was written before what was held; written_omitted and held_omitted count what was left out.
|
|
1752
|
-
- A row gives each list at most one entry.
|
|
1535
|
+
- A row gives each list at most one entry. dry_run: true runs the whole import, judged as a real one, and rolls it back: the answer says what it would write and hold, with dry_run true, and no row, number, event or workflow run is left behind.
|
|
1753
1536
|
|
|
1754
1537
|
**Inputs**
|
|
1755
1538
|
|
|
@@ -1764,11 +1547,13 @@ above. A provider's refusal carries the provider's own words.
|
|
|
1764
1547
|
| `rows[].line` | number \\| null | | Its line in the source, 1-based. |
|
|
1765
1548
|
| `create` | boolean \\| null | | |
|
|
1766
1549
|
| `conflicts` | object \\| null | | |
|
|
1550
|
+
| `dry_run` | boolean \\| null | | |
|
|
1767
1551
|
|
|
1768
1552
|
**Answer**
|
|
1769
1553
|
|
|
1770
1554
|
| Name | Type | Required | What it is |
|
|
1771
1555
|
| --- | --- | --- | --- |
|
|
1556
|
+
| `dry_run` | true | | The import was judged and rolled back: the lists name what it would write, and no record_id in them exists. |
|
|
1772
1557
|
| `read` | number | yes | |
|
|
1773
1558
|
| `created` | number | yes | |
|
|
1774
1559
|
| `changed` | number | yes | |
|
|
@@ -2694,7 +2479,7 @@ above. A provider's refusal carries the provider's own words.
|
|
|
2694
2479
|
| Name | Type | Required | What it is |
|
|
2695
2480
|
| --- | --- | --- | --- |
|
|
2696
2481
|
| `success` | boolean | yes | |
|
|
2697
|
-
| `data` |
|
|
2482
|
+
| `data` | object[] | yes | The dictionary records, each as MISA names its fields |
|
|
2698
2483
|
| `last_sync_time` | string | | Cursor — pass as last_sync_time on the next call to fetch only newer changes |
|
|
2699
2484
|
| `error_code` | string | | |
|
|
2700
2485
|
| `error_message` | string | | |
|
|
@@ -2709,7 +2494,7 @@ above. A provider's refusal carries the provider's own words.
|
|
|
2709
2494
|
| --- | --- | --- | --- |
|
|
2710
2495
|
| `voucher_type` | 1 \\| 2 \\| 3 | yes | |
|
|
2711
2496
|
| `reftype` | integer | | |
|
|
2712
|
-
| `org_refid` | string | yes |
|
|
2497
|
+
| `org_refid` | string | yes | a UUID that stays the same for the document — `uuidFrom(record.id)` |
|
|
2713
2498
|
| `org_refno` | string | | Source-system document number |
|
|
2714
2499
|
| `refdate` | string | yes | Document date, ISO 8601 |
|
|
2715
2500
|
| `posted_date` | string | yes | Accounting posting date, ISO 8601 |
|
|
@@ -2755,7 +2540,7 @@ above. A provider's refusal carries the provider's own words.
|
|
|
2755
2540
|
| --- | --- | --- | --- |
|
|
2756
2541
|
| `voucher_type` | 4 \\| 5 | yes | |
|
|
2757
2542
|
| `reftype` | integer | | |
|
|
2758
|
-
| `org_refid` | string | yes |
|
|
2543
|
+
| `org_refid` | string | yes | a UUID that stays the same for the document — `uuidFrom(record.id)` |
|
|
2759
2544
|
| `org_refno` | string | | Source-system document number |
|
|
2760
2545
|
| `refdate` | string | yes | Document date, ISO 8601 |
|
|
2761
2546
|
| `posted_date` | string | yes | Accounting posting date, ISO 8601 |
|
|
@@ -2823,7 +2608,7 @@ above. A provider's refusal carries the provider's own words.
|
|
|
2823
2608
|
| --- | --- | --- | --- |
|
|
2824
2609
|
| `voucher_type` | 14 \\| 15 \\| 16 \\| 17 \\| 18 \\| 21 | yes | |
|
|
2825
2610
|
| `reftype` | integer | | |
|
|
2826
|
-
| `org_refid` | string | yes |
|
|
2611
|
+
| `org_refid` | string | yes | a UUID that stays the same for the document — `uuidFrom(record.id)` |
|
|
2827
2612
|
| `org_refno` | string | | Source-system document number |
|
|
2828
2613
|
| `refdate` | string | yes | Document date, ISO 8601 |
|
|
2829
2614
|
| `posted_date` | string | yes | Accounting posting date, ISO 8601 |
|
|
@@ -2894,7 +2679,7 @@ above. A provider's refusal carries the provider's own words.
|
|
|
2894
2679
|
| --- | --- | --- | --- |
|
|
2895
2680
|
| `voucher_type` | 10 \\| 11 \\| 12 \\| 13 \\| 20 | yes | |
|
|
2896
2681
|
| `reftype` | integer | | Voucher sub-type code — MISA assigns a default when omitted |
|
|
2897
|
-
| `org_refid` | string | yes |
|
|
2682
|
+
| `org_refid` | string | yes | a UUID that stays the same for the document — `uuidFrom(record.id)` |
|
|
2898
2683
|
| `org_refno` | string | | Source-system document number |
|
|
2899
2684
|
| `refdate` | string | yes | Document date, ISO 8601 |
|
|
2900
2685
|
| `posted_date` | string | yes | Accounting posting date, ISO 8601 |
|
|
@@ -3071,7 +2856,7 @@ above. A provider's refusal carries the provider's own words.
|
|
|
3071
2856
|
### outlook_read_email (workflow step)
|
|
3072
2857
|
|
|
3073
2858
|
- Fetch an Outlook email's body and the list of its attachments.
|
|
3074
|
-
- Attachments are stored as workspace files — the result names each one's file_id; read one with view_files, attach one to a record with update_records. (
|
|
2859
|
+
- Attachments are stored as workspace files — the result names each one's file_id; read one with view_files, attach one to a record with update_records. (chat)
|
|
3075
2860
|
|
|
3076
2861
|
**Inputs**
|
|
3077
2862
|
|
|
@@ -3109,7 +2894,7 @@ above. A provider's refusal carries the provider's own words.
|
|
|
3109
2894
|
| `message.attachments[].fileName` | string | | Attachment filename as stored, which may differ from the sender's |
|
|
3110
2895
|
| `message.attachments[].contentType` | string | | MIME type as stored, recovered from the filename when Graph declared a generic one |
|
|
3111
2896
|
| `message.attachments[].size` | number | | Stored size in bytes |
|
|
3112
|
-
| `message.attachments[].file_id` | string | | Stored file ID — pass to view_files to read it, or to update_records to attach it (
|
|
2897
|
+
| `message.attachments[].file_id` | string | | Stored file ID — pass to view_files to read it, or to update_records to attach it (chat) |
|
|
3113
2898
|
|
|
3114
2899
|
### outlook_reply_email (workflow step)
|
|
3115
2900
|
|
|
@@ -3282,8 +3067,10 @@ above. A provider's refusal carries the provider's own words.
|
|
|
3282
3067
|
|
|
3283
3068
|
### send_notification (workflow step)
|
|
3284
3069
|
|
|
3285
|
-
-
|
|
3286
|
-
-
|
|
3070
|
+
- Notify workspace members.
|
|
3071
|
+
- Lotics shows it to each recipient and emails it to their own address, through no connection; a member who signs in with an identifier an admin issued has no mailbox and sees it in Lotics alone.
|
|
3072
|
+
- A member is named by the member_id get_workspace kind member lists. (chat, MCP, CLI)
|
|
3073
|
+
- In a workflow body, every member is { type: "organization", id: runtime.organization_id } and the member who started the run { type: "member", id: runtime.triggered_by_member_id }; a run a schedule, a webhook or an email starts was started by no member.
|
|
3287
3074
|
|
|
3288
3075
|
**Inputs**
|
|
3289
3076
|
|
|
@@ -3393,63 +3180,6 @@ above. A provider's refusal carries the provider's own words.
|
|
|
3393
3180
|
| `post_id` | string | yes | |
|
|
3394
3181
|
| `url` | string | yes | |
|
|
3395
3182
|
|
|
3396
|
-
## undo
|
|
3397
|
-
|
|
3398
|
-
### undo_record_change (workflow step)
|
|
3399
|
-
|
|
3400
|
-
- Put back one change entry of a record's activity, as the own save of the member the run acts for. entry_id is the entry's id as get_record_activity lists it. (workflow step)
|
|
3401
|
-
- Each field the entry changed returns to what it held before it where the record still holds what it wrote; a field changed since is kept.
|
|
3402
|
-
- Refused: the entry that made the record, an entry that is itself an undo, an entry already put back, and a record in the trash.
|
|
3403
|
-
- The member holds write access to the record's table as the step runs, the record within the rows they may write; a run that acts for no member is refused.
|
|
3404
|
-
- Returns { reverted, kept }: the fields put back, and those left as they stand, each with why.
|
|
3405
|
-
|
|
3406
|
-
**Inputs**
|
|
3407
|
-
|
|
3408
|
-
| Name | Type | Required | What it is |
|
|
3409
|
-
| --- | --- | --- | --- |
|
|
3410
|
-
| `record_id` | string | yes | |
|
|
3411
|
-
| `entry_id` | string | yes | |
|
|
3412
|
-
|
|
3413
|
-
**Answer**
|
|
3414
|
-
|
|
3415
|
-
| Name | Type | Required | What it is |
|
|
3416
|
-
| --- | --- | --- | --- |
|
|
3417
|
-
| `reverted` | object[] | yes | The fields put back to what they held before the change. |
|
|
3418
|
-
| `reverted[].field_id` | string | yes | |
|
|
3419
|
-
| `reverted[].label` | string | yes | |
|
|
3420
|
-
| `kept` | object[] | yes | The fields left as they stand, each with why. A field already holding what it held before the change is in neither list. |
|
|
3421
|
-
| `kept[].field_id` | string | yes | |
|
|
3422
|
-
| `kept[].label` | string | yes | |
|
|
3423
|
-
| `kept[].reason` | "changed_since" \\| "refused" | yes | Someone changed it since; or the table refused the write (a lock, a check). |
|
|
3424
|
-
|
|
3425
|
-
### undo_record_changes (workflow step)
|
|
3426
|
-
|
|
3427
|
-
- Put back what one workflow run wrote on records of a table, as the own writes of the member the run acts for.
|
|
3428
|
-
- A field the run changed returns to what it held before where the record still holds what the run wrote; a record the run created moves to the trash where nothing else has written it or linked a row to it since; a record the run moved to the trash comes back where nothing has touched it since, without the links to it its removal took off other rows.
|
|
3429
|
-
- A record the run wrote nothing on is left out, and so is a write of the run that was itself an undo.
|
|
3430
|
-
- The member holds write access to the table as the step runs, each record within the rows they may write; a run that acts for no member is refused.
|
|
3431
|
-
- Takes at most 500 record ids a call.
|
|
3432
|
-
- Returns { reverted, kept }: the count of records put back, and the records left as they stand, one entry a record and reason with the field keys kept — none where the whole record was.
|
|
3433
|
-
- A record created in a table where a workflow writes each new row reads as written since, and is kept.
|
|
3434
|
-
|
|
3435
|
-
**Inputs**
|
|
3436
|
-
|
|
3437
|
-
| Name | Type | Required | What it is |
|
|
3438
|
-
| --- | --- | --- | --- |
|
|
3439
|
-
| `table_id` | string | yes | |
|
|
3440
|
-
| `record_ids` | string[] | yes | |
|
|
3441
|
-
| `workflow_execution_id` | string | yes | The run whose writes are put back: what runtime.execution_id held in it. |
|
|
3442
|
-
|
|
3443
|
-
**Answer**
|
|
3444
|
-
|
|
3445
|
-
| Name | Type | Required | What it is |
|
|
3446
|
-
| --- | --- | --- | --- |
|
|
3447
|
-
| `reverted` | number | yes | |
|
|
3448
|
-
| `kept` | object[] | yes | |
|
|
3449
|
-
| `kept[].record_id` | string | yes | |
|
|
3450
|
-
| `kept[].fields` | string[] | yes | |
|
|
3451
|
-
| `kept[].reason` | "changed_since" \\| "refused" \\| "outside_your_rows" \\| "unreadable" \\| "restored" | yes | Someone changed it since — wrote it, moved it to the trash, or linked a row to it; the table refused the write (a lock, a check); it is outside the rows the caller may write; the trail of what was written cannot be read; or the run brought it back from the trash, where an undo returns no row. |
|
|
3452
|
-
|
|
3453
3183
|
## vietcombank
|
|
3454
3184
|
|
|
3455
3185
|
### vietcombank_convert_currency (workflow step)
|
|
@@ -3471,41 +3201,6 @@ above. A provider's refusal carries the provider's own words.
|
|
|
3471
3201
|
| `converted_amount` | number | yes | The converted amount |
|
|
3472
3202
|
| `exchange_rate` | number | yes | The exchange rate |
|
|
3473
3203
|
|
|
3474
|
-
## view
|
|
3475
|
-
|
|
3476
|
-
### view_files (workflow step)
|
|
3477
|
-
|
|
3478
|
-
- View one or more files in a single call.
|
|
3479
|
-
- Two modes: - file_ids: explicit list of file IDs (use for cherry-picked files). - source: every file attached to a record's file field (use when you want all photos/attachments on a record).
|
|
3480
|
-
- Provide exactly one.
|
|
3481
|
-
- Reads EVERY readable format: images, PDFs, Word (.docx and legacy .doc), Excel (.xlsx and legacy .xls), CSV, and text formats (.txt, .md, .json, .xml, .yaml, .html).
|
|
3482
|
-
- Batch limit: 100 files.
|
|
3483
|
-
- Use this whenever you are handed a file_id you cannot already see — images and PDFs arrive in your context natively, but every other format is a reference you must open with this tool.
|
|
3484
|
-
- Files already in your context — those the user attached to the current message, and those an earlier view_files call returned this conversation — return a text-only "already in context" reference instead of re-emitting bytes. (workflow step, chat)
|
|
3485
|
-
- You do not need to re-call view_files to look at the same image again; scroll back to the original tool_result. (workflow step, chat)
|
|
3486
|
-
- Calling with already-seen file_ids is safe but wasteful.
|
|
3487
|
-
|
|
3488
|
-
**Inputs**
|
|
3489
|
-
|
|
3490
|
-
| Name | Type | Required | What it is |
|
|
3491
|
-
| --- | --- | --- | --- |
|
|
3492
|
-
| `file_ids` | string[] | | |
|
|
3493
|
-
| `source` | object | | |
|
|
3494
|
-
| `source.record_id` | string | yes | |
|
|
3495
|
-
| `source.field_key` | string | yes | |
|
|
3496
|
-
|
|
3497
|
-
**Answer**
|
|
3498
|
-
|
|
3499
|
-
| Name | Type | Required | What it is |
|
|
3500
|
-
| --- | --- | --- | --- |
|
|
3501
|
-
| `files` | object[] | yes | |
|
|
3502
|
-
| `files[].file_id` | string | yes | |
|
|
3503
|
-
| `files[].filename` | string | yes | |
|
|
3504
|
-
| `files[].mime_type` | string | yes | |
|
|
3505
|
-
| `files[].content` | object | | |
|
|
3506
|
-
| `files[].already_in_context` | boolean | | |
|
|
3507
|
-
| `files[].error` | string | | |
|
|
3508
|
-
|
|
3509
3204
|
## wininvoice
|
|
3510
3205
|
|
|
3511
3206
|
### wininvoice_create_or_update_invoice (workflow step)
|
|
@@ -3609,258 +3304,6 @@ above. A provider's refusal carries the provider's own words.
|
|
|
3609
3304
|
| `isExisting` | 0 \\| 1 | | 1 when invRef already had an invoice and this call returned it unchanged — no invoice was issued |
|
|
3610
3305
|
| `link` | string | yes | Link to view the invoice |
|
|
3611
3306
|
|
|
3612
|
-
## word
|
|
3613
|
-
|
|
3614
|
-
### word_create_document (workflow step)
|
|
3615
|
-
|
|
3616
|
-
- Create a new Word document (.docx), optionally with initial paragraphs and headings.
|
|
3617
|
-
- Use {{variable_name}} syntax in text to create template placeholders for data injection via create_word_template. (workflow step, chat, MCP, CLI)
|
|
3618
|
-
- Input: { filename, content?: [{ type: "paragraph"\|"heading", text, level?: 1-6 }] } filename is without the .docx extension (added automatically).
|
|
3619
|
-
|
|
3620
|
-
**Inputs**
|
|
3621
|
-
|
|
3622
|
-
| Name | Type | Required | What it is |
|
|
3623
|
-
| --- | --- | --- | --- |
|
|
3624
|
-
| `filename` | string | yes | Name of the file (without .docx extension) |
|
|
3625
|
-
| `content` | object[] | | |
|
|
3626
|
-
| `content[].type` | "paragraph" \\| "heading" | yes | |
|
|
3627
|
-
| `content[].text` | string | yes | |
|
|
3628
|
-
| `content[].level` | number | | Heading level (1-6), required when type is heading |
|
|
3629
|
-
|
|
3630
|
-
**Answer**
|
|
3631
|
-
|
|
3632
|
-
| Name | Type | Required | What it is |
|
|
3633
|
-
| --- | --- | --- | --- |
|
|
3634
|
-
| `file_id` | string | yes | The ID of the generated file. |
|
|
3635
|
-
| `url` | string | yes | The download URL of the generated file. |
|
|
3636
|
-
| `filename` | string | yes | The filename of the generated file, including extension. |
|
|
3637
|
-
| `mime_type` | string | yes | The MIME type of the generated file. |
|
|
3638
|
-
|
|
3639
|
-
### word_find_text (workflow step)
|
|
3640
|
-
|
|
3641
|
-
- Search for text across all paragraphs and table cells in a Word document.
|
|
3642
|
-
- Input: { file_id, query: "search text", match_type?: "contains"\|"exact"\|"regex", max_results?: number } Default match_type is "contains".
|
|
3643
|
-
- Returns matching element indices, types, and text content.
|
|
3644
|
-
- Read-only — does not modify the file.
|
|
3645
|
-
|
|
3646
|
-
**Inputs**
|
|
3647
|
-
|
|
3648
|
-
| Name | Type | Required | What it is |
|
|
3649
|
-
| --- | --- | --- | --- |
|
|
3650
|
-
| `file_id` | string | yes | The ID of the Word (.docx) file |
|
|
3651
|
-
| `query` | string | yes | |
|
|
3652
|
-
| `match_type` | "contains" \\| "exact" \\| "regex" | | |
|
|
3653
|
-
| `max_results` | number | | |
|
|
3654
|
-
|
|
3655
|
-
**Answer**
|
|
3656
|
-
|
|
3657
|
-
| Name | Type | Required | What it is |
|
|
3658
|
-
| --- | --- | --- | --- |
|
|
3659
|
-
| `matches` | object[] | yes | |
|
|
3660
|
-
| `matches[].index` | number | yes | |
|
|
3661
|
-
| `matches[].type` | "paragraph" \\| "table" \\| "other" | yes | |
|
|
3662
|
-
| `matches[].text` | string | yes | |
|
|
3663
|
-
| `total` | number | yes | |
|
|
3664
|
-
|
|
3665
|
-
### word_get_content (workflow step)
|
|
3666
|
-
|
|
3667
|
-
- Read a Word document's full native content, paginated.
|
|
3668
|
-
- Every element returned is COMPLETE — full paragraph text and full table cells — unlike view_files, whose quick-look preview truncates long paragraphs and tables. (workflow step, chat)
|
|
3669
|
-
- Input: { file_id, offset?, limit? }.
|
|
3670
|
-
- Returns elements with their 0-based indices plus next_offset when more remains; call again with offset=next_offset to continue.
|
|
3671
|
-
- A page may end before `limit` to keep elements whole — follow next_offset, don't infer completion from the count.
|
|
3672
|
-
- A selection mark — a highlighted, shaded or coloured run, or a shaded table cell — surfaces in `marked_text` (the paragraph with each mark shown where it falls, which is what tells you WHICH of two identical `□` was picked), `highlighted_spans` (the marked text alone) and `marked_cells` (per table), so a form's chosen option reads correctly even when it is marked by colour rather than a tick.
|
|
3673
|
-
- Bold is OFF by default and reported only with `include_bold`, as a FACT rather than a selection: nearly every heading and label is bold, so on most documents it is noise.
|
|
3674
|
-
- Reach for it when a form's chosen option carries no glyph and no colour — some forms record the choice by bolding the chosen option's label, and then bold is the tick's only trace.
|
|
3675
|
-
- On a PARAGRAPH, `formatting_hint` already says the line contains bold (it cannot say which run — that is what `bold_spans` adds).
|
|
3676
|
-
- A TABLE carries no such hint, so on a criteria or option table pass `include_bold` rather than waiting for a signal.
|
|
3677
|
-
- Read the result against its siblings: a wholly bold heading or header row is structure, one bold label among plain ones is the choice.
|
|
3678
|
-
- Footnotes surface in `footnote_refs` (per paragraph) and `footnote_cells` (per table) with the note's own text, since a clause often carries its rule in the footnote rather than the sentence.
|
|
3679
|
-
- `orphaned_footnotes` lists notes the file carries with no anchor left in the body — those render nowhere.
|
|
3680
|
-
- Pictures surface in `images` on the element holding them, so a paragraph carrying only a picture is not mistaken for an empty one.
|
|
3681
|
-
- `headers_footers` carries header and footer text, which sits outside the body and so has no element index — a form often states which form it is there rather than in its text.
|
|
3682
|
-
- Read-only — does not modify the file.
|
|
3683
|
-
|
|
3684
|
-
**Inputs**
|
|
3685
|
-
|
|
3686
|
-
| Name | Type | Required | What it is |
|
|
3687
|
-
| --- | --- | --- | --- |
|
|
3688
|
-
| `file_id` | string | yes | The ID of the Word (.docx) file |
|
|
3689
|
-
| `offset` | integer | | Element index to start from (pass the prior call's next_offset) |
|
|
3690
|
-
| `limit` | integer | | Max elements to return |
|
|
3691
|
-
| `include_bold` | boolean | | Also report WHERE the bold runs are (bold_spans / bold_cells). Off unless asked for — nearly every heading and label is bold, so it is noise on most documents and the answer on a form that ticks by bolding. |
|
|
3692
|
-
|
|
3693
|
-
**Answer**
|
|
3694
|
-
|
|
3695
|
-
| Name | Type | Required | What it is |
|
|
3696
|
-
| --- | --- | --- | --- |
|
|
3697
|
-
| `elements` | object[] | yes | |
|
|
3698
|
-
| `elements[].index` | number | yes | |
|
|
3699
|
-
| `elements[].type` | "paragraph" \\| "table" \\| "other" | yes | |
|
|
3700
|
-
| `elements[].text` | string | | |
|
|
3701
|
-
| `elements[].rows` | number | | |
|
|
3702
|
-
| `elements[].cols` | number | | |
|
|
3703
|
-
| `elements[].cells` | string[][] | | |
|
|
3704
|
-
| `elements[].heading_level` | number | | |
|
|
3705
|
-
| `elements[].list_type` | "bullet" \\| "numbered" | | |
|
|
3706
|
-
| `elements[].list_level` | number | | |
|
|
3707
|
-
| `elements[].formatting_hint` | string | | |
|
|
3708
|
-
| `elements[].highlighted_spans` | string[] | | |
|
|
3709
|
-
| `elements[].bold_spans` | string[] | | |
|
|
3710
|
-
| `elements[].marked_text` | string | | |
|
|
3711
|
-
| `elements[].images` | object[] | | |
|
|
3712
|
-
| `elements[].images[].name` | string | | |
|
|
3713
|
-
| `elements[].images[].width_cm` | number | | |
|
|
3714
|
-
| `elements[].images[].height_cm` | number | | |
|
|
3715
|
-
| `elements[].marked_cells` | object[] | | |
|
|
3716
|
-
| `elements[].marked_cells[].row` | number | yes | |
|
|
3717
|
-
| `elements[].marked_cells[].col` | number | yes | |
|
|
3718
|
-
| `elements[].marked_cells[].spans` | string[] | yes | |
|
|
3719
|
-
| `elements[].bold_cells` | object[] | | |
|
|
3720
|
-
| `elements[].bold_cells[].row` | number | yes | |
|
|
3721
|
-
| `elements[].bold_cells[].col` | number | yes | |
|
|
3722
|
-
| `elements[].bold_cells[].spans` | string[] | yes | |
|
|
3723
|
-
| `elements[].footnote_refs` | object[] | | |
|
|
3724
|
-
| `elements[].footnote_refs[].mark` | number | yes | The superscript number the reader sees |
|
|
3725
|
-
| `elements[].footnote_refs[].id` | string | yes | |
|
|
3726
|
-
| `elements[].footnote_refs[].offset` | number | yes | Character offset into this element's text where the mark sits |
|
|
3727
|
-
| `elements[].footnote_refs[].text` | string | | |
|
|
3728
|
-
| `elements[].footnote_cells` | object[] | | |
|
|
3729
|
-
| `elements[].footnote_cells[].row` | number | yes | |
|
|
3730
|
-
| `elements[].footnote_cells[].col` | number | yes | |
|
|
3731
|
-
| `elements[].footnote_cells[].refs` | object[] | yes | |
|
|
3732
|
-
| `elements[].footnote_cells[].refs[].mark` | number | yes | The superscript number the reader sees |
|
|
3733
|
-
| `elements[].footnote_cells[].refs[].id` | string | yes | |
|
|
3734
|
-
| `elements[].footnote_cells[].refs[].offset` | number | yes | Character offset into this element's text where the mark sits |
|
|
3735
|
-
| `elements[].footnote_cells[].refs[].text` | string | | |
|
|
3736
|
-
| `total` | number | yes | |
|
|
3737
|
-
| `next_offset` | number \\| null | yes | |
|
|
3738
|
-
| `orphaned_footnotes` | object[] | | Notes the file still carries with no anchor left in the body — they render nowhere |
|
|
3739
|
-
| `orphaned_footnotes[].id` | string | yes | |
|
|
3740
|
-
| `orphaned_footnotes[].text` | string | yes | |
|
|
3741
|
-
| `headers_footers` | object[] | | Header and footer text — outside the body, so it carries no element index |
|
|
3742
|
-
| `headers_footers[].kind` | "header" \\| "footer" | yes | |
|
|
3743
|
-
| `headers_footers[].text` | string | yes | |
|
|
3744
|
-
|
|
3745
|
-
### word_get_table_data (workflow step)
|
|
3746
|
-
|
|
3747
|
-
- Read the full contents of a table in a Word document as a 2D string array.
|
|
3748
|
-
- Input: { file_id, table_index: number, max_rows? } table_index is the 0-based element index from view_files (must point to a table element). (workflow step, chat)
|
|
3749
|
-
- Returns data[][] with row_count and col_count.
|
|
3750
|
-
- A cell carrying a selection mark — a highlighted or shaded run, or a shaded cell — is listed in `marked_cells` ({row, col} aligned with data, spans = the marked text; empty spans = a shaded blank), so a criteria row's chosen option reads correctly even when it is marked by colour rather than a tick.
|
|
3751
|
-
- `bold_cells` lists the bold cells the same way, but ONLY with `include_bold` — header rows and label columns are bold, so it is noise on most tables.
|
|
3752
|
-
- Nothing in the default output hints that a table contains bold, so pass it whenever a criteria or option table shows no glyph and no colour: some forms record the choice by bolding that row's label and it is the tick's only trace.
|
|
3753
|
-
- It is a fact, never a selection — a whole bold header row is structure, one bold label among plain siblings is the choice.
|
|
3754
|
-
- Read-only — does not modify the file.
|
|
3755
|
-
|
|
3756
|
-
**Inputs**
|
|
3757
|
-
|
|
3758
|
-
| Name | Type | Required | What it is |
|
|
3759
|
-
| --- | --- | --- | --- |
|
|
3760
|
-
| `file_id` | string | yes | The ID of the Word (.docx) file |
|
|
3761
|
-
| `table_index` | number | yes | 0-based element index of the table |
|
|
3762
|
-
| `max_rows` | number | | Max rows to return; all rows when omitted |
|
|
3763
|
-
| `include_bold` | boolean | | Also report which cells are bold (bold_cells). Off unless asked for — header rows and label columns are bold, so it is noise on most tables and the answer on one that ticks by bolding. |
|
|
3764
|
-
|
|
3765
|
-
**Answer**
|
|
3766
|
-
|
|
3767
|
-
| Name | Type | Required | What it is |
|
|
3768
|
-
| --- | --- | --- | --- |
|
|
3769
|
-
| `data` | string[][] | yes | |
|
|
3770
|
-
| `row_count` | number | yes | |
|
|
3771
|
-
| `col_count` | number | yes | |
|
|
3772
|
-
| `marked_cells` | object[] | | |
|
|
3773
|
-
| `marked_cells[].row` | number | yes | |
|
|
3774
|
-
| `marked_cells[].col` | number | yes | |
|
|
3775
|
-
| `marked_cells[].spans` | string[] | yes | |
|
|
3776
|
-
| `bold_cells` | object[] | | |
|
|
3777
|
-
| `bold_cells[].row` | number | yes | |
|
|
3778
|
-
| `bold_cells[].col` | number | yes | |
|
|
3779
|
-
| `bold_cells[].spans` | string[] | yes | |
|
|
3780
|
-
|
|
3781
|
-
### word_insert_conditional (workflow step)
|
|
3782
|
-
|
|
3783
|
-
- Insert {{IF variable_name}}...{{END-IF variable_name}} command rows or paragraphs into a Word document to define a conditional section.
|
|
3784
|
-
- For table_rows: wraps the specified row range with command rows.
|
|
3785
|
-
- Requires table_index, start_row, end_row.
|
|
3786
|
-
- For paragraphs: wraps the specified element range with command paragraphs.
|
|
3787
|
-
- Requires start_index, end_index.
|
|
3788
|
-
- Use view_files to find element indices first. (workflow step, chat)
|
|
3789
|
-
|
|
3790
|
-
**Inputs**
|
|
3791
|
-
|
|
3792
|
-
| Name | Type | Required | What it is |
|
|
3793
|
-
| --- | --- | --- | --- |
|
|
3794
|
-
| `file_id` | string | yes | |
|
|
3795
|
-
| `variable_name` | string | yes | Boolean variable name |
|
|
3796
|
-
| `region_type` | "table_rows" \\| "paragraphs" | yes | |
|
|
3797
|
-
| `table_index` | integer | | Index of the table element (required for table_rows) |
|
|
3798
|
-
| `start_row` | integer | | First row to wrap (required for table_rows) |
|
|
3799
|
-
| `end_row` | integer | | Last row to wrap, inclusive (required for table_rows) |
|
|
3800
|
-
| `start_index` | integer | | First element index to wrap (required for paragraphs) |
|
|
3801
|
-
| `end_index` | integer | | Last element index to wrap, inclusive (required for paragraphs) |
|
|
3802
|
-
|
|
3803
|
-
**Answer**
|
|
3804
|
-
|
|
3805
|
-
| Name | Type | Required | What it is |
|
|
3806
|
-
| --- | --- | --- | --- |
|
|
3807
|
-
| `file_id` | string | yes | |
|
|
3808
|
-
|
|
3809
|
-
### word_insert_loop (workflow step)
|
|
3810
|
-
|
|
3811
|
-
- Insert {{FOR loop_var IN variable_name}}...{{END-FOR loop_var}} command rows or paragraphs into a Word document to define a repeating section.
|
|
3812
|
-
- Inside the loop, reference each item's fields with a $ prefix: {{$loop_var.field}} (or {{$loop_var}} for a scalar item, {{$idx}} for the 0-based index).
|
|
3813
|
-
- Without the $ prefix, generation fails.
|
|
3814
|
-
- For table_rows: wraps the specified row range with command rows.
|
|
3815
|
-
- Requires table_index, start_row, end_row.
|
|
3816
|
-
- For paragraphs: wraps the specified element range with command paragraphs.
|
|
3817
|
-
- Requires start_index, end_index.
|
|
3818
|
-
- Use view_files to find element indices first. (workflow step, chat)
|
|
3819
|
-
|
|
3820
|
-
**Inputs**
|
|
3821
|
-
|
|
3822
|
-
| Name | Type | Required | What it is |
|
|
3823
|
-
| --- | --- | --- | --- |
|
|
3824
|
-
| `file_id` | string | yes | |
|
|
3825
|
-
| `variable_name` | string | yes | Array variable name |
|
|
3826
|
-
| `loop_variable` | string | yes | Iterator name used inside the loop, e.g. item |
|
|
3827
|
-
| `region_type` | "table_rows" \\| "paragraphs" | yes | |
|
|
3828
|
-
| `table_index` | integer | | Index of the table element (required for table_rows) |
|
|
3829
|
-
| `start_row` | integer | | First row to wrap (required for table_rows) |
|
|
3830
|
-
| `end_row` | integer | | Last row to wrap, inclusive (required for table_rows) |
|
|
3831
|
-
| `start_index` | integer | | First element index to wrap (required for paragraphs) |
|
|
3832
|
-
| `end_index` | integer | | Last element index to wrap, inclusive (required for paragraphs) |
|
|
3833
|
-
|
|
3834
|
-
**Answer**
|
|
3835
|
-
|
|
3836
|
-
| Name | Type | Required | What it is |
|
|
3837
|
-
| --- | --- | --- | --- |
|
|
3838
|
-
| `file_id` | string | yes | |
|
|
3839
|
-
|
|
3840
|
-
### word_replace_text (workflow step)
|
|
3841
|
-
|
|
3842
|
-
- Find and replace text across all paragraphs and table cells in a Word document.
|
|
3843
|
-
- Replaces all occurrences unless max_replacements is set.
|
|
3844
|
-
- A match spanning several runs collapses them into the first run's formatting, so tick a checkbox by matching the box character on its own — ☐ (U+2610) becomes ☒ (U+2612), keeping the font that draws both.
|
|
3845
|
-
- Matching the phrase around the box drags it into the body font; replacing it with a letter leaves a bare letter beside the boxes still showing ☐.
|
|
3846
|
-
|
|
3847
|
-
**Inputs**
|
|
3848
|
-
|
|
3849
|
-
| Name | Type | Required | What it is |
|
|
3850
|
-
| --- | --- | --- | --- |
|
|
3851
|
-
| `file_id` | string | yes | The ID of the Word (.docx) file |
|
|
3852
|
-
| `find` | string | yes | |
|
|
3853
|
-
| `replace` | string | yes | |
|
|
3854
|
-
| `match_type` | "contains" \\| "exact" \\| "regex" | | `exact` matches a whole paragraph. None of the three is case-sensitive. |
|
|
3855
|
-
| `max_replacements` | number | | Max number of replacements (default: unlimited) |
|
|
3856
|
-
|
|
3857
|
-
**Answer**
|
|
3858
|
-
|
|
3859
|
-
| Name | Type | Required | What it is |
|
|
3860
|
-
| --- | --- | --- | --- |
|
|
3861
|
-
| `file_id` | string | yes | |
|
|
3862
|
-
| `replacements_made` | number | yes | |
|
|
3863
|
-
|
|
3864
3307
|
## x
|
|
3865
3308
|
|
|
3866
3309
|
### x_create_post (workflow step)
|