{"openapi":"3.0.3","info":{"title":"AltDat Tables","description":"AltDat Tables prepares, transforms, analyzes, queries, and exports tabular files for analyst workflows. Prepare converts an external file into an AltDat Table, intermediate actions pass that table without repeated format choices, and Export creates the final file. Requests use plan-based limits and metered credits.","version":"1.0.0","contact":{"name":"Jake Isaacs","email":"support@altdat.com","url":"https://altdat.com"}},"servers":[{"url":"https://api.altdat.com"}],"security":[{"ApiKeyAuth":[]}],"tags":[{"name":"tables","description":"Tabular data operations"}],"paths":{"/v1/tables/workflows/prepare":{"post":{"operationId":"PrepareAltDatTable","summary":"Prepare a table","x-ms-visibility":"important","description":"Convert an external table file into an AltDat Table for subsequent workflow actions. Choose the source format once here.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide file content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file","source"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/WorkflowExternalFileContent"}],"x-ms-summary":"File Content","x-ms-visibility":"important","description":"Select file content from OneDrive, SharePoint, or another external file action. Prepare a table converts it into an AltDat Table."},"source":{"type":"string","x-ms-summary":"Source Format","description":"Format of the external input file.","enum":["csv","feather","html","json","orc","parquet","tsv","xlsx"],"x-ms-visibility":"important"},"sheet_name":{"type":"string","x-ms-summary":"Worksheet Name","description":"Optional exact worksheet name for XLSX input. Leave blank to read the first worksheet. A missing name returns an error; other formats reject this option.","x-ms-visibility":"advanced","maxLength":256},"delimiter":{"type":"string","x-ms-summary":"Delimiter (CSV only)","description":"Applies only to CSV input. Leave blank to detect commas, semicolons, tabs and pipes automatically, or choose one to override detection.","enum":["Detect automatically","Comma","Semicolon","Tab","Pipe"],"x-ms-visibility":"advanced"},"header_row":{"type":"integer","x-ms-summary":"Header Row","description":"Row number that contains the column names. Rows above it, such as report titles, are skipped. Leave blank to use row 1. Applies to CSV, TSV and XLSX input.","x-ms-visibility":"advanced","minimum":1,"maximum":1000}}}}}},"responses":{"200":{"description":"The resulting table file as raw bytes.","content":{"application/vnd.apache.parquet":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/filter-rows":{"post":{"operationId":"FilterAltDatTable","summary":"Filter rows","x-ms-visibility":"important","description":"Keep matching rows in an AltDat Table. Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide file content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file","column","operator","value"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."},"column":{"type":"string","x-ms-summary":"Column","description":"Column whose values are compared.","x-ms-visibility":"important"},"operator":{"type":"string","x-ms-summary":"Comparison","description":"Comparison to apply to the selected column.","enum":["eq","ne","gt","gte","lt","lte"],"x-ms-visibility":"important"},"value":{"type":"string","x-ms-summary":"Value","description":"Value to compare. Numbers, true, false, and null are recognized.","x-ms-visibility":"important"}}}}}},"responses":{"200":{"description":"The resulting table file as raw bytes.","content":{"application/vnd.apache.parquet":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/export":{"post":{"operationId":"ExportAltDatTable","summary":"Export a table","x-ms-visibility":"important","description":"Convert an AltDat Table into the selected external format. Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide file content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file","target"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."},"target":{"type":"string","x-ms-summary":"Target Format","description":"External format to create.","enum":["csv","feather","html","json","orc","parquet","tsv","xlsx"],"x-ms-visibility":"important"},"xlsx_formulas":{"type":"string","x-ms-summary":"Excel Formulas (XLSX only)","description":"Applies only to XLSX output, to text that starts with =. Keep as text (used when blank) never creates formulas. Safe formulas only creates formulas that use common calculation functions and refer only to cells in the same worksheet; anything else stays text. All formulas creates every formula, including ones that call the web, open links or reach other files; choose it only when every value in the table comes from a source you trust.","enum":["Keep as text","Safe formulas only","All formulas (I trust this data)"],"x-ms-visibility":"advanced"}}}}}},"responses":{"200":{"description":"The resulting table file as raw bytes.","content":{"application/json":{"schema":{"type":"string","format":"binary"}},"application/octet-stream":{"schema":{"type":"string","format":"binary"}},"application/vnd.apache.arrow.file":{"schema":{"type":"string","format":"binary"}},"application/vnd.apache.parquet":{"schema":{"type":"string","format":"binary"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","format":"binary"}},"text/csv":{"schema":{"type":"string","format":"binary"}},"text/html; charset=utf-8":{"schema":{"type":"string","format":"binary"}},"text/tab-separated-values":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/sort-rows":{"post":{"operationId":"SortAltDatTable","summary":"Sort rows","x-ms-visibility":"important","description":"Sort rows in an AltDat Table. Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide file content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file","column"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."},"column":{"type":"string","x-ms-summary":"Column","description":"Column used to order the rows.","x-ms-visibility":"important"},"sort_order":{"type":"string","x-ms-summary":"Sort Order","description":"Choose whether values increase or decrease.","enum":["Ascending","Descending"],"default":"Ascending","x-ms-visibility":"advanced"}}}}}},"responses":{"200":{"description":"The resulting table file as raw bytes.","content":{"application/vnd.apache.parquet":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/fill-missing-values":{"post":{"operationId":"FillMissingValuesAltDatTable","summary":"Fill missing values","x-ms-visibility":"important","description":"Fill missing values in an AltDat Table. Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide file content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file","column","method"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."},"column":{"type":"string","x-ms-summary":"Column","description":"Column whose missing values are filled.","x-ms-visibility":"important"},"method":{"type":"string","x-ms-summary":"Fill With","description":"Choose Value to enter a replacement below, or choose how AltDat calculates the replacement.","enum":["Value","Previous value","Next value","Minimum","Maximum","Average","Zero","One"],"x-ms-visibility":"important"},"value":{"type":"string","x-ms-summary":"Value","description":"Replacement used only when Fill With is Value. Numbers, true, and false are recognized.","x-ms-visibility":"advanced"}}}}}},"responses":{"200":{"description":"The resulting table file as raw bytes.","content":{"application/vnd.apache.parquet":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/pivot-table":{"post":{"operationId":"PivotAltDatTable","summary":"Pivot a table","x-ms-visibility":"important","description":"Turn values from one column into columns in an AltDat Table. Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide file content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file","row_columns","pivot_column","value_columns"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."},"row_columns":{"type":"array","x-ms-summary":"Row Columns","description":"One or more columns that identify each output row.","items":{"type":"string"},"x-ms-visibility":"important","minItems":1},"pivot_column":{"type":"string","x-ms-summary":"Pivot Column","description":"Column whose distinct values become output columns.","x-ms-visibility":"important"},"value_columns":{"type":"array","x-ms-summary":"Value Columns","description":"One or more columns placed into the pivoted cells.","items":{"type":"string"},"x-ms-visibility":"important","minItems":1},"function":{"type":"string","x-ms-summary":"Summary Function","description":"How values are combined when more than one row maps to a cell.","enum":["first","last","sum","mean","min","max","median","count"],"default":"first","x-ms-visibility":"advanced"}}}}}},"responses":{"200":{"description":"The resulting table file as raw bytes.","content":{"application/vnd.apache.parquet":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/group-and-summarize":{"post":{"operationId":"GroupAndSummarizeAltDatTable","summary":"Group and summarize rows","x-ms-visibility":"important","description":"Group an AltDat Table and count every row in each group, or summarize one value column. Count rows adds a row_count column. Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide file content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file","group_columns"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."},"group_columns":{"type":"array","x-ms-summary":"Group Columns","description":"One or more columns that define each group.","items":{"type":"string"},"x-ms-visibility":"important","minItems":1},"function":{"type":"string","x-ms-summary":"Summary Function","description":"Count rows includes every row, even when other columns are blank.","enum":["Count rows","Sum","Average","Minimum","Maximum","Median","Standard deviation"],"default":"Count rows","x-ms-visibility":"important"},"value_column":{"type":"string","x-ms-summary":"Value Column","description":"Required for every Summary Function except Count rows; leave empty to count rows.","x-ms-visibility":"important"}}}}}},"responses":{"200":{"description":"The resulting table file as raw bytes.","content":{"application/vnd.apache.parquet":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/select-columns":{"post":{"operationId":"SelectColumnsAltDatTable","summary":"Select columns","x-ms-visibility":"important","description":"Keep selected columns, in the given order, from an AltDat Table. Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide file content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file","columns"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."},"columns":{"type":"array","x-ms-summary":"Columns","description":"One or more columns to keep, in output order.","items":{"type":"string"},"x-ms-visibility":"important","minItems":1}}}}}},"responses":{"200":{"description":"The resulting table file as raw bytes.","content":{"application/vnd.apache.parquet":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/rename-column":{"post":{"operationId":"RenameColumnAltDatTable","summary":"Rename a column","x-ms-visibility":"important","description":"Rename one column in an AltDat Table. Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide file content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file","column","new_name"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."},"column":{"type":"string","x-ms-summary":"Column","description":"Existing column to rename.","x-ms-visibility":"important"},"new_name":{"type":"string","x-ms-summary":"New Name","description":"New name for the selected column; it must not already exist.","x-ms-visibility":"important"}}}}}},"responses":{"200":{"description":"The resulting table file as raw bytes.","content":{"application/vnd.apache.parquet":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/remove-duplicate-rows":{"post":{"operationId":"RemoveDuplicateRowsAltDatTable","summary":"Remove duplicate rows","x-ms-visibility":"important","description":"Keep one row per matching value, or only rows without duplicates, in an AltDat Table. Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide file content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."},"columns":{"type":"array","x-ms-summary":"Match Columns","description":"Columns used to find duplicates. Omit this optional input to compare entire rows.","items":{"type":"string"},"x-ms-visibility":"advanced"},"keep":{"type":"string","x-ms-summary":"When Duplicates Exist","description":"First match keeps the earliest row; Last match keeps the latest; Only unique rows removes every row in a duplicate group.","enum":["First match","Last match","Only unique rows"],"default":"First match","x-ms-visibility":"advanced"}}}}}},"responses":{"200":{"description":"The resulting table file as raw bytes.","content":{"application/vnd.apache.parquet":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/change-column-type":{"post":{"operationId":"ChangeAltDatTableColumnType","summary":"Change a column type","x-ms-visibility":"important","description":"Convert one AltDat Table column to another data type. Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide file content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file","column","data_type"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."},"column":{"type":"string","x-ms-summary":"Column","description":"Column whose data type will change.","x-ms-visibility":"important"},"data_type":{"type":"string","x-ms-summary":"Data Type","description":"New data type for the selected column.","enum":["int","float","str","bool","date","datetime"],"x-ms-visibility":"important"},"strict":{"type":"boolean","x-ms-summary":"Fail on Invalid Values","description":"When true, stop if any value cannot be converted. When false, replace invalid values with null.","default":true,"x-ms-visibility":"advanced"}}}}}},"responses":{"200":{"description":"The resulting table file as raw bytes.","content":{"application/vnd.apache.parquet":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/join-tables":{"post":{"operationId":"JoinAltDatTables","summary":"Join two tables","x-ms-visibility":"important","description":"Match rows from two AltDat Tables using one shared key column. Both inputs must be Body from Prepare or another AltDat table action.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide file content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file","file2","key_column"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"First AltDat Table","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."},"file2":{"allOf":[{"$ref":"#/components/schemas/SecondAltDatTableContent"}],"x-ms-summary":"Second AltDat Table","x-ms-visibility":"important","description":"Select Body from Prepare a table or another AltDat table action."},"key_column":{"type":"string","x-ms-summary":"Key Column","description":"Column used to match rows in both tables.","x-ms-visibility":"important"},"join_type":{"type":"string","x-ms-summary":"Join Type","description":"Rows retained from the two tables.","enum":["inner","left","right","full","semi","anti"],"default":"inner","x-ms-visibility":"advanced"}}}}}},"responses":{"200":{"description":"The resulting table file as raw bytes.","content":{"application/vnd.apache.parquet":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/append-tables":{"post":{"operationId":"AppendAltDatTables","summary":"Append two tables","x-ms-visibility":"important","description":"Stack the rows of a second AltDat Table underneath the first. Both inputs must be Body from Prepare or another AltDat table action.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide file content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file","file2"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"First AltDat Table","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."},"file2":{"allOf":[{"$ref":"#/components/schemas/SecondAltDatTableContent"}],"x-ms-summary":"Second AltDat Table","x-ms-visibility":"important","description":"Select Body from Prepare a table or another AltDat table action."},"column_handling":{"type":"string","x-ms-summary":"Column Handling","description":"Diagonal aligns columns by name and fills gaps. Vertical requires identical columns and types.","enum":["diagonal","vertical"],"default":"diagonal","x-ms-visibility":"advanced"}}}}}},"responses":{"200":{"description":"The resulting table file as raw bytes.","content":{"application/vnd.apache.parquet":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/run-pipeline":{"post":{"operationId":"TransformAltDatTable","summary":"Run a transformation pipeline","x-ms-visibility":"advanced","description":"Apply an ordered developer-style operation pipeline to an AltDat Table and return another AltDat Table. Column names are exact in this advanced action. Charged one transform per started block of 5 operations; at most 25 operations, including 10 table functions.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide file content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file","pipeline"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."},"pipeline":{"allOf":[{"$ref":"#/components/schemas/Pipeline"}],"x-ms-summary":"Pipeline","x-ms-visibility":"important","description":"Ordered list of transformation operations to apply."},"file2":{"allOf":[{"$ref":"#/components/schemas/SecondAltDatTableContent"}],"x-ms-summary":"Second AltDat Table","x-ms-visibility":"advanced","description":"Optional second AltDat Table for join or merge operations in the pipeline."}}}}}},"responses":{"200":{"description":"The resulting table file as raw bytes.","content":{"application/vnd.apache.parquet":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/describe-table":{"post":{"operationId":"DescribeAltDatTable","summary":"Describe a table","x-ms-visibility":"important","description":"Get all column names in table order, column and row counts, and numeric summary statistics for an AltDat Table. This is a terminal JSON result, not another AltDat Table.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide AltDat Table content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."}}}}}},"responses":{"200":{"description":"Structured action results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DescribeAnalysisResult"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/find-correlations":{"post":{"operationId":"CorrelateAltDatTable","summary":"Find correlations","x-ms-visibility":"important","description":"Return the numeric correlation matrix for an AltDat Table with up to 256 numeric columns. Use Select columns before analyzing a wider table; wider correlation requests are rejected without charging credits. This is a terminal JSON result, not another AltDat Table.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide AltDat Table content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."}}}}}},"responses":{"200":{"description":"Structured action results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CorrelationAnalysisResult"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/analyze-distribution":{"post":{"operationId":"DistributeAltDatTable","summary":"Analyze a distribution","x-ms-visibility":"important","description":"Return per-column distribution summaries for an AltDat Table. This is a terminal JSON result, not another AltDat Table.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide AltDat Table content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."}}}}}},"responses":{"200":{"description":"Structured action results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistributionAnalysisResult"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/query":{"post":{"operationId":"QueryAltDatTable","summary":"Query a table with SQL","x-ms-visibility":"important","description":"Run a read-only SQL query against an AltDat Table. This action requires a paid AltDat plan (Starter or higher). The table is named `data`, and the action returns JSON rows.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide AltDat Table content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file","sql"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."},"sql":{"type":"string","x-ms-summary":"SQL Query","description":"Read-only SQL query to run against the `data` table.","x-ms-visibility":"important"}}}}}},"responses":{"200":{"description":"Structured action results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueryResult"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"SQL queries require the Starter tier or above.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/extract-text":{"post":{"operationId":"ExtractTextAltDatTable","summary":"Extract text with a pattern","x-ms-visibility":"important","description":"Extract the first regular-expression match into a new text column. No match returns empty text; null input stays null. Uses RE2 patterns, without lookaround or backreferences. Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide file content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file","column","pattern","into"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."},"column":{"type":"string","x-ms-summary":"Column","description":"Name of the source column. Exact spelling is preferred; a unique case-insensitive match is accepted.","x-ms-visibility":"important"},"pattern":{"type":"string","x-ms-summary":"Pattern","description":"Regular expression to match, for example Order ([0-9]+).","x-ms-visibility":"important","minLength":1,"maxLength":2048},"into":{"type":"string","x-ms-summary":"Output Column","description":"Name of a new column for the result. Existing columns are preserved; choose a name not already in the table.","x-ms-visibility":"important","minLength":1,"maxLength":256},"group":{"type":"integer","x-ms-summary":"Capture Group","description":"Zero returns the complete match; 1 through 9 selects a capture group.","default":0,"x-ms-visibility":"advanced","minimum":0,"maximum":9}}}}}},"responses":{"200":{"description":"The resulting table file as raw bytes.","content":{"application/vnd.apache.parquet":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/compare-text-distance":{"post":{"operationId":"CompareTextDistanceAltDatTable","summary":"Compare text by edit distance","x-ms-visibility":"important","description":"Add the Levenshtein edit distance between two text columns on each row. Zero means equal; larger values need more insertions, deletions or substitutions. Null input returns null. Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide file content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file","left_column","right_column","into"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."},"left_column":{"type":"string","x-ms-summary":"Left Column","description":"First text column to compare, row by row.","x-ms-visibility":"important"},"right_column":{"type":"string","x-ms-summary":"Right Column","description":"Second text column in the same table. This does not search other rows or join tables.","x-ms-visibility":"important"},"into":{"type":"string","x-ms-summary":"Output Column","description":"Name of a new column for the result. Existing columns are preserved; choose a name not already in the table.","x-ms-visibility":"important","minLength":1,"maxLength":256},"ignore_case":{"type":"boolean","x-ms-summary":"Ignore Case","description":"Convert both texts to lowercase before comparing. Whitespace is retained.","default":false,"x-ms-visibility":"advanced"}}}}}},"responses":{"200":{"description":"The resulting table file as raw bytes.","content":{"application/vnd.apache.parquet":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/compare-text-similarity":{"post":{"operationId":"CompareTextSimilarityAltDatTable","summary":"Compare text similarity","x-ms-visibility":"important","description":"Add a Jaro-Winkler similarity score between two text columns on each row. Scores range from 0 to 1; 1 means equal. Null input returns null. A score alone does not establish that two records identify the same person or item. Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide file content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file","left_column","right_column","into"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."},"left_column":{"type":"string","x-ms-summary":"Left Column","description":"First text column to compare, row by row.","x-ms-visibility":"important"},"right_column":{"type":"string","x-ms-summary":"Right Column","description":"Second text column in the same table. This does not search other rows or join tables.","x-ms-visibility":"important"},"into":{"type":"string","x-ms-summary":"Output Column","description":"Name of a new column for the result. Existing columns are preserved; choose a name not already in the table.","x-ms-visibility":"important","minLength":1,"maxLength":256},"ignore_case":{"type":"boolean","x-ms-summary":"Ignore Case","description":"Convert both texts to lowercase before comparing. Whitespace is retained.","default":false,"x-ms-visibility":"advanced"}}}}}},"responses":{"200":{"description":"The resulting table file as raw bytes.","content":{"application/vnd.apache.parquet":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/extract-json-value":{"post":{"operationId":"ExtractJsonValueAltDatTable","summary":"Extract a JSON value","x-ms-visibility":"important","description":"Extract a value from a JSON-text or object column into a new text column. Missing paths and null values return null; objects and arrays return JSON text. Invalid JSON fails the action. Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide file content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file","column","path","into"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."},"column":{"type":"string","x-ms-summary":"Column","description":"Name of the source column. Exact spelling is preferred; a unique case-insensitive match is accepted.","x-ms-visibility":"important"},"path":{"type":"string","x-ms-summary":"JSON Path","description":"Single path to extract, for example $.customer.name or $.items[0]. Array indexes start at zero. Wildcard paths are not supported.","x-ms-visibility":"important","minLength":1,"maxLength":2048},"into":{"type":"string","x-ms-summary":"Output Column","description":"Name of a new column for the result. Existing columns are preserved; choose a name not already in the table.","x-ms-visibility":"important","minLength":1,"maxLength":256}}}}}},"responses":{"200":{"description":"The resulting table file as raw bytes.","content":{"application/vnd.apache.parquet":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/expand-list":{"post":{"operationId":"ExpandListAltDatTable","summary":"Expand a list into rows","x-ms-visibility":"important","description":"Unnest a list or JSON-array text column. Each item becomes a row and repeats the other columns. The source column becomes the item column. Native list items retain their types; JSON-array text produces text items, with objects retained as JSON text. Expanded rows must fit your plan and table limits. Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide file content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file","column"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."},"column":{"type":"string","x-ms-summary":"Column","description":"Name of the source column. Exact spelling is preferred; a unique case-insensitive match is accepted.","x-ms-visibility":"important"},"keep_empty":{"type":"boolean","x-ms-summary":"Keep Empty Lists","description":"Keep one row with a null item for empty or null lists. Otherwise those source rows are removed. Null elements inside a nonempty list are always retained.","default":false,"x-ms-visibility":"advanced"}}}}}},"responses":{"200":{"description":"The resulting table file as raw bytes.","content":{"application/vnd.apache.parquet":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/clean-text":{"post":{"operationId":"CleanTextAltDatTable","summary":"Clean text","x-ms-visibility":"important","description":"Trim leading and trailing whitespace or change letter case, placing the result in a new column. Null input stays null. Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide file content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file","column","method","into"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."},"column":{"type":"string","x-ms-summary":"Column","description":"Name of the source column. Exact spelling is preferred; a unique case-insensitive match is accepted.","x-ms-visibility":"important"},"method":{"type":"string","x-ms-summary":"Method","description":"Text cleanup to apply.","enum":["Trim whitespace","Lowercase","Uppercase"],"x-ms-visibility":"important"},"into":{"type":"string","x-ms-summary":"Output Column","description":"Name of a new column for the result. Existing columns are preserved; choose a name not already in the table.","x-ms-visibility":"important","minLength":1,"maxLength":256}}}}}},"responses":{"200":{"description":"The resulting table file as raw bytes.","content":{"application/vnd.apache.parquet":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/replace-text":{"post":{"operationId":"ReplaceTextAltDatTable","summary":"Replace text","x-ms-visibility":"important","description":"Replace every matching occurrence in a column and write the result to a new column. Null input stays null. Literal matching is the default. Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide file content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file","column","pattern","replacement","into"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."},"column":{"type":"string","x-ms-summary":"Column","description":"Name of the source column. Exact spelling is preferred; a unique case-insensitive match is accepted.","x-ms-visibility":"important"},"pattern":{"type":"string","x-ms-summary":"Find","description":"Text or regular expression to replace. Cannot be empty.","x-ms-visibility":"important"},"replacement":{"type":"string","x-ms-summary":"Replacement","description":"Replacement text; use empty text to remove matches. In regular-expression mode, capture references use $1 or ${name}.","x-ms-visibility":"important"},"into":{"type":"string","x-ms-summary":"Output Column","description":"Name of a new column for the result. Existing columns are preserved; choose a name not already in the table.","x-ms-visibility":"important","minLength":1,"maxLength":256},"literal":{"type":"boolean","x-ms-summary":"Match Literal Text","description":"Match the exact text when true. When false, use a regular expression without lookaround or backreferences.","default":true,"x-ms-visibility":"advanced"}}}}}},"responses":{"200":{"description":"The resulting table file as raw bytes.","content":{"application/vnd.apache.parquet":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/prepare-workbook":{"post":{"operationId":"PrepareExcelWorkbook","summary":"Prepare an Excel workbook","x-ms-visibility":"important","description":"Prepare all visible worksheets in an XLSX workbook as separate tables or one combined table. This action requires a paid AltDat plan (Starter or higher). Credits use the workbook base weight and total-row band. Included sheets share the plan row limit and service size limits. Loop over Tables and pass each Table Content to another table action.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide AltDat Table content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/WorkflowExternalFileContent"}],"x-ms-summary":"File Content","x-ms-visibility":"important","description":"XLSX file content from a storage action. Worksheet names are discovered automatically."},"mode":{"type":"string","x-ms-summary":"Output Mode","description":"Separate tables returns one table per worksheet. Combined table stacks rows by exact column names, fills missing columns with nulls, and rejects incompatible non-null types.","enum":["Separate tables","Combined table"],"default":"Separate tables","x-ms-visibility":"important"},"include_hidden":{"type":"boolean","x-ms-summary":"Include Hidden Worksheets","description":"Include hidden and very hidden worksheets. False reads only visible worksheets; chart sheets are not tables.","default":false,"x-ms-visibility":"advanced"},"source_sheet_column":{"type":"string","x-ms-summary":"Source Worksheet Column","description":"Combined mode adds this column to identify each row's worksheet. The name must not already exist. Separate mode preserves each table as supplied.","default":"_worksheet","x-ms-visibility":"advanced","minLength":1,"maxLength":256},"header_row":{"type":"integer","x-ms-summary":"Header Row","description":"Row number that contains the column names. Rows above it, such as report titles, are skipped. Leave blank to use row 1. The same row applies to every included worksheet; a shorter worksheet prepares as an empty table.","x-ms-visibility":"advanced","minimum":1,"maximum":1000}}}}}},"responses":{"200":{"description":"Structured action results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkbookPrepareResult"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Workbook preparation requires a plan with workbook access.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tables/workflows/list-rows":{"post":{"operationId":"ListAltDatTableRows","summary":"List rows","x-ms-visibility":"important","description":"Return the rows of an AltDat Table as records for Apply to each. Each row is keyed by column name. Large results are rejected without charging; filter rows or select columns first. Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file.","tags":["tables"],"requestBody":{"required":true,"x-ms-summary":"Inputs","x-ms-visibility":"important","description":"Provide AltDat Table content and action settings.","content":{"application/json":{"schema":{"type":"object","required":["file"],"properties":{"file":{"allOf":[{"$ref":"#/components/schemas/AltDatTableContent"}],"x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."}}}}}},"responses":{"200":{"description":"Structured action results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRowsResult"}}}},"400":{"description":"Invalid input (bad format, missing field, decoded table or response cap exceeded), or REQUEST_TIMEOUT after the total request budget expires. Deadline errors are terminal; do not automatically retry. Work already charged is not refunded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Monthly credit quota exhausted (SUBSCRIPTION_LIMIT_EXCEEDED). Terminal until the billing period resets or the plan is upgraded — do NOT retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded (RATE_LIMIT_EXCEEDED). Transient — retry after the seconds given in the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Server at capacity (SERVER_BUSY). The active, waiting, account or resource budget is full, or queue waiting expired. No credits were charged. Retry with lower flow concurrency.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API key from the AltDat dashboard."}},"schemas":{"ErrorCode":{"description":"Phase-1 error codes. More will be added with auth (Phase 2+).","enum":["INVALID_INPUT","INVALID_FORMAT","MISSING_REQUIRED_FIELD","DATA_TOO_LARGE","COLUMN_NOT_FOUND","OPERATION_FAILED","CONVERSION_FAILED","SQL_QUERY_ERROR","SQL_QUERY_FORBIDDEN","RATE_LIMIT_EXCEEDED","AUTHENTICATION_FAILED","API_KEY_MISSING","API_KEY_INVALID","EMAIL_TAKEN","INVALID_CREDENTIALS","USER_NOT_FOUND","KEY_NOT_FOUND","FEATURE_NOT_AVAILABLE","SUBSCRIPTION_LIMIT_EXCEEDED","BILLING_ERROR","PRICING_MATRIX_CONFLICT","PRICING_UNAVAILABLE","INVALID_REFRESH_TOKEN","EMAIL_NOT_VERIFIED","INVALID_VERIFICATION_TOKEN","INVALID_RESET_TOKEN","INTERNAL_ERROR","SERVER_BUSY","REQUEST_TIMEOUT"],"title":"ErrorCode","type":"string"},"ErrorResponse":{"description":"The body returned for every non-2xx response.\n\n`error` and `code` are duplicates of each other for historical reasons\n(the old API set this contract); keeping both keeps existing Power\nAutomate flows working.","properties":{"error":{"title":"Error","type":"string"},"code":{"$ref":"#/components/schemas/ErrorCode"},"detail":{"title":"Detail","type":"string"},"suggestion":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Suggestion"},"field":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Field"}},"required":["error","code","detail"],"title":"ErrorResponse","type":"object"},"AggregateOp":{"properties":{"op":{"const":"aggregate","title":"Op","type":"string"},"group_by":{"items":{"type":"string"},"title":"Group By","type":"array"},"aggregations":{"additionalProperties":{"enum":["sum","mean","min","max","count","median","std"],"type":"string"},"title":"Aggregations","type":"object"}},"required":["op","group_by","aggregations"],"title":"AggregateOp","type":"object"},"CastTypesOp":{"description":"Cast columns to new dtypes. String→date/datetime is parsed (ISO inferred);\nevery other pair is a plain cast. `strict=False` turns unparseable cells\ninto nulls instead of failing the request.","properties":{"op":{"const":"cast_types","title":"Op","type":"string"},"columns":{"additionalProperties":{"enum":["int","float","str","bool","date","datetime"],"type":"string"},"title":"Columns","type":"object"},"strict":{"default":true,"title":"Strict","type":"boolean"}},"required":["op","columns"],"title":"CastTypesOp","type":"object"},"DateOp":{"description":"A single date/time transformation on one column.\n\nFor every function except `parse`, a text column is auto-parsed to datetime\nfirst, so `date_ops` chains cleanly on raw string dates. Result lands back in\n`column` unless `into` names a different output column.","properties":{"op":{"const":"date_ops","title":"Op","type":"string"},"column":{"title":"Column","type":"string"},"function":{"enum":["parse","format","extract","truncate","offset"],"title":"Function","type":"string"},"format":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Format"},"part":{"anyOf":[{"enum":["year","month","day","hour","minute","second","weekday","week","quarter","ordinal_day"],"type":"string"},{"type":"null"}],"default":null,"title":"Part"},"every":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Every"},"into":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Into"}},"required":["op","column","function"],"title":"DateOp","type":"object"},"DeduplicateOp":{"properties":{"op":{"const":"deduplicate","title":"Op","type":"string"},"subset":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Subset"},"keep":{"default":"first","enum":["first","last","none"],"title":"Keep","type":"string"}},"required":["op"],"title":"DeduplicateOp","type":"object"},"DropColumnsOp":{"properties":{"op":{"const":"drop_columns","title":"Op","type":"string"},"columns":{"items":{"type":"string"},"title":"Columns","type":"array"}},"required":["op","columns"],"title":"DropColumnsOp","type":"object"},"FillNullOp":{"description":"Fill missing values, either with a literal `value` or a `strategy`.\n\nExactly one of `value` / `strategy` must be given. `columns` defaults to\nevery column.","properties":{"op":{"const":"fill_null","title":"Op","type":"string"},"columns":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Columns"},"strategy":{"anyOf":[{"enum":["forward","backward","min","max","mean","zero","one"],"type":"string"},{"type":"null"}],"default":null,"title":"Strategy"},"value":{"default":null,"title":"Value"}},"required":["op"],"title":"FillNullOp","type":"object"},"FilterOp":{"properties":{"op":{"const":"filter","title":"Op","type":"string"},"column":{"title":"Column","type":"string"},"operator":{"enum":["eq","ne","gt","gte","lt","lte","in","nin"],"title":"Operator","type":"string"},"value":{"title":"Value"}},"required":["op","column","operator","value"],"title":"FilterOp","type":"object"},"JaroWinklerOp":{"properties":{"op":{"const":"jaro_winkler_similarity","title":"Op","type":"string"},"left_column":{"title":"Left Column","type":"string"},"right_column":{"title":"Right Column","type":"string"},"ignore_case":{"default":false,"title":"Ignore Case","type":"boolean"},"into":{"maxLength":256,"minLength":1,"title":"Into","type":"string"}},"required":["op","left_column","right_column","into"],"title":"JaroWinklerOp","type":"object"},"JoinOp":{"description":"Join the uploaded table (left) with the second `file2` table (right).\n\nGive `on` when the key columns share a name, or both `left_on`/`right_on`\nwhen they differ. `cross` needs no keys.","properties":{"op":{"const":"join","title":"Op","type":"string"},"how":{"default":"inner","enum":["inner","left","right","full","semi","anti","cross"],"title":"How","type":"string"},"on":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"On"},"left_on":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Left On"},"right_on":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Right On"},"suffix":{"default":"_right","title":"Suffix","type":"string"}},"required":["op"],"title":"JoinOp","type":"object"},"JsonExtractStringOp":{"properties":{"op":{"const":"json_extract_string","title":"Op","type":"string"},"column":{"title":"Column","type":"string"},"path":{"maxLength":2048,"minLength":1,"title":"Path","type":"string"},"into":{"maxLength":256,"minLength":1,"title":"Into","type":"string"}},"required":["op","column","path","into"],"title":"JsonExtractStringOp","type":"object"},"LevenshteinOp":{"properties":{"op":{"const":"levenshtein","title":"Op","type":"string"},"left_column":{"title":"Left Column","type":"string"},"right_column":{"title":"Right Column","type":"string"},"ignore_case":{"default":false,"title":"Ignore Case","type":"boolean"},"into":{"maxLength":256,"minLength":1,"title":"Into","type":"string"}},"required":["op","left_column","right_column","into"],"title":"LevenshteinOp","type":"object"},"MergeOp":{"description":"Stack the second `file2` table under the uploaded one (row union).\n\n`vertical` requires identical columns; `diagonal` aligns by name and fills\nmissing columns with null.","properties":{"op":{"const":"merge","title":"Op","type":"string"},"how":{"default":"diagonal","enum":["vertical","diagonal"],"title":"How","type":"string"}},"required":["op"],"title":"MergeOp","type":"object"},"PivotOp":{"description":"Long → wide. Unique values of `on` become new columns, filled from\n`values` and combined with `aggregate` where a cell collides.","properties":{"op":{"const":"pivot","title":"Op","type":"string"},"index":{"items":{"type":"string"},"title":"Index","type":"array"},"on":{"title":"On","type":"string"},"values":{"title":"Values","type":"string"},"aggregate":{"default":"first","enum":["first","last","sum","mean","min","max","median","count"],"title":"Aggregate","type":"string"}},"required":["op","index","on","values"],"title":"PivotOp","type":"object"},"RegexpExtractOp":{"properties":{"op":{"const":"regexp_extract","title":"Op","type":"string"},"column":{"title":"Column","type":"string"},"pattern":{"maxLength":2048,"minLength":1,"title":"Pattern","type":"string"},"group":{"default":0,"maximum":9,"minimum":0,"title":"Group","type":"integer"},"into":{"maxLength":256,"minLength":1,"title":"Into","type":"string"}},"required":["op","column","pattern","into"],"title":"RegexpExtractOp","type":"object"},"RenameColumnsOp":{"properties":{"op":{"const":"rename_columns","title":"Op","type":"string"},"columns":{"additionalProperties":{"type":"string"},"title":"Columns","type":"object"}},"required":["op","columns"],"title":"RenameColumnsOp","type":"object"},"SelectOp":{"properties":{"op":{"const":"select","title":"Op","type":"string"},"columns":{"items":{"type":"string"},"title":"Columns","type":"array"}},"required":["op","columns"],"title":"SelectOp","type":"object"},"SortOp":{"properties":{"op":{"const":"sort","title":"Op","type":"string"},"by":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}],"title":"By"},"descending":{"anyOf":[{"type":"boolean"},{"items":{"type":"boolean"},"type":"array"}],"default":false,"title":"Descending"}},"required":["op","by"],"title":"SortOp","type":"object"},"StringOp":{"description":"A single string transformation on one column.\n\nThe column is coerced to text first, so numeric columns work too. Result\nlands back in `column` unless `into` names a different output column.","properties":{"op":{"const":"string_ops","title":"Op","type":"string"},"column":{"title":"Column","type":"string"},"function":{"enum":["upper","lower","strip","replace","slice","contains","length","zfill"],"title":"Function","type":"string"},"pattern":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Pattern"},"replacement":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Replacement"},"literal":{"default":true,"title":"Literal","type":"boolean"},"start":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Start"},"length":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Length"},"into":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Into"}},"required":["op","column","function"],"title":"StringOp","type":"object"},"TransposeOp":{"description":"Swap rows and columns. Optionally use `header_column`'s values as the\nnew column names; the old column names land in a column named `header_name`.","properties":{"op":{"const":"transpose","title":"Op","type":"string"},"header_column":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Header Column"},"header_name":{"default":"column","title":"Header Name","type":"string"}},"required":["op"],"title":"TransposeOp","type":"object"},"UnnestOp":{"description":"Expand a native list or JSON-array text column, preserving other columns.","properties":{"op":{"const":"unnest","title":"Op","type":"string"},"column":{"title":"Column","type":"string"},"keep_empty":{"default":false,"title":"Keep Empty","type":"boolean"}},"required":["op","column"],"title":"UnnestOp","type":"object"},"Pipeline":{"items":{"discriminator":{"mapping":{"aggregate":"#/components/schemas/AggregateOp","cast_types":"#/components/schemas/CastTypesOp","date_ops":"#/components/schemas/DateOp","deduplicate":"#/components/schemas/DeduplicateOp","drop_columns":"#/components/schemas/DropColumnsOp","fill_null":"#/components/schemas/FillNullOp","filter":"#/components/schemas/FilterOp","jaro_winkler_similarity":"#/components/schemas/JaroWinklerOp","join":"#/components/schemas/JoinOp","json_extract_string":"#/components/schemas/JsonExtractStringOp","levenshtein":"#/components/schemas/LevenshteinOp","merge":"#/components/schemas/MergeOp","pivot":"#/components/schemas/PivotOp","regexp_extract":"#/components/schemas/RegexpExtractOp","rename_columns":"#/components/schemas/RenameColumnsOp","select":"#/components/schemas/SelectOp","sort":"#/components/schemas/SortOp","string_ops":"#/components/schemas/StringOp","transpose":"#/components/schemas/TransposeOp","unnest":"#/components/schemas/UnnestOp"},"propertyName":"op"},"oneOf":[{"$ref":"#/components/schemas/FilterOp"},{"$ref":"#/components/schemas/SortOp"},{"$ref":"#/components/schemas/SelectOp"},{"$ref":"#/components/schemas/DropColumnsOp"},{"$ref":"#/components/schemas/RenameColumnsOp"},{"$ref":"#/components/schemas/DeduplicateOp"},{"$ref":"#/components/schemas/AggregateOp"},{"$ref":"#/components/schemas/FillNullOp"},{"$ref":"#/components/schemas/CastTypesOp"},{"$ref":"#/components/schemas/StringOp"},{"$ref":"#/components/schemas/DateOp"},{"$ref":"#/components/schemas/RegexpExtractOp"},{"$ref":"#/components/schemas/LevenshteinOp"},{"$ref":"#/components/schemas/JaroWinklerOp"},{"$ref":"#/components/schemas/JsonExtractStringOp"},{"$ref":"#/components/schemas/UnnestOp"},{"$ref":"#/components/schemas/PivotOp"},{"$ref":"#/components/schemas/TransposeOp"},{"$ref":"#/components/schemas/JoinOp"},{"$ref":"#/components/schemas/MergeOp"}]},"type":"array","description":"Ordered list of operations applied to the table: filter, sort, select, drop_columns, rename_columns, deduplicate, aggregate."},"FileContent":{"type":"object","description":"File content as a base64 object. Select Source Format explicitly. MIME metadata supplied by an upstream file action is accepted automatically, and a plain base64 string is also accepted.","required":["$content"],"properties":{"$content":{"type":"string","format":"byte","x-ms-summary":"File Content","x-ms-visibility":"important","description":"Base64-encoded file bytes."},"$content-type":{"type":"string","x-ms-summary":"Content Type","x-ms-visibility":"internal","description":"MIME type supplied by the upstream file provider. Source Format is the user-facing format control."}}},"TransformResult":{"type":"object","properties":{"row_count":{"type":"integer"},"column_count":{"type":"integer"},"columns":{"type":"array","items":{"type":"string"}},"rows":{"type":"array","items":{"type":"object"},"description":"Resulting rows as JSON records."},"credits_charged":{"type":"integer","description":"Credits charged for this request. AltDat multiplies the operation's base cost by the input-row band in the current pricing matrix."}}},"QueryResult":{"type":"object","properties":{"query":{"type":"string"},"row_count":{"type":"integer"},"column_count":{"type":"integer"},"columns":{"type":"array","items":{"type":"string"}},"data":{"type":"array","items":{"type":"object"},"description":"Query result rows as JSON records."},"credits_charged":{"type":"integer","description":"Credits charged for this request. AltDat multiplies the operation's base cost by the input-row band in the current pricing matrix."}}},"NumericStatistic":{"additionalProperties":false,"description":"Descriptive statistics for one numeric column.","properties":{"column_name":{"description":"Name of the numeric column.","title":"Column Name","type":"string"},"count":{"description":"Number of non-null values.","minimum":0,"title":"Count","type":"integer"},"mean":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Arithmetic mean, or null when it cannot be calculated.","title":"Mean"},"std":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Sample standard deviation, or null when unavailable.","title":"Standard Deviation"},"min":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Minimum value, or null when the column has no values.","title":"Minimum"},"max":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Maximum value, or null when the column has no values.","title":"Maximum"},"q25":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Twenty-fifth percentile, or null when unavailable.","title":"First Quartile"},"median":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Fiftieth percentile, or null when unavailable.","title":"Median"},"q75":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Seventy-fifth percentile, or null when unavailable.","title":"Third Quartile"}},"required":["column_name","count","mean","std","min","max","q25","median","q75"],"title":"NumericStatistic","type":"object"},"DescribeAnalysisResult":{"additionalProperties":false,"description":"Response from Describe a table.","properties":{"credits_charged":{"description":"Credits charged for this request.","minimum":0,"title":"Credits Charged","type":"integer"},"analysis_type":{"const":"describe","description":"The analysis that produced this response.","title":"Analysis Type","type":"string"},"columns":{"description":"All column names in table order, including nonnumeric columns.","items":{"type":"string"},"title":"Columns","type":"array"},"column_count":{"description":"Total number of columns in the supplied table.","minimum":0,"title":"Column Count","type":"integer"},"row_count":{"description":"Total number of rows in the supplied table, including rows with null values.","minimum":0,"title":"Row Count","type":"integer"},"numeric_statistics":{"description":"Statistics for each numeric column. The array is empty when the table has no numeric columns.","items":{"$ref":"#/components/schemas/NumericStatistic"},"title":"Numeric Statistics","type":"array"}},"required":["credits_charged","analysis_type","columns","column_count","row_count","numeric_statistics"],"title":"DescribeAnalysisResult","type":"object"},"CorrelationAnalysisResult":{"additionalProperties":false,"description":"Response from Find correlations.","properties":{"credits_charged":{"description":"Credits charged for this request.","minimum":0,"title":"Credits Charged","type":"integer"},"analysis_type":{"const":"correlations","description":"The analysis that produced this response.","title":"Analysis Type","type":"string"},"correlation_matrix":{"additionalProperties":{"additionalProperties":{"type":"number"},"type":"object"},"description":"Correlation values keyed first and second by numeric column name. The object is empty when fewer than two numeric columns exist.","title":"Correlation Matrix","type":"object"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reason a correlation matrix could not be calculated.","title":"Analysis Message"}},"required":["credits_charged","analysis_type","correlation_matrix"],"title":"CorrelationAnalysisResult","type":"object"},"DistributionValueCount":{"additionalProperties":false,"description":"One of the ten most common non-null values in a column.","properties":{"value":{"description":"Observed value. Its JSON type matches the source column.","title":"Value"},"count":{"description":"Number of rows containing this value.","minimum":0,"title":"Count","type":"integer"}},"required":["value","count"],"title":"DistributionValueCount","type":"object"},"ColumnDistribution":{"additionalProperties":false,"description":"Distribution summary for one source column.","properties":{"value_counts":{"description":"Up to ten non-null values ordered by frequency.","items":{"$ref":"#/components/schemas/DistributionValueCount"},"title":"Most Common Values","type":"array"},"null_count":{"description":"Number of null values in the column.","minimum":0,"title":"Null Count","type":"integer"}},"required":["value_counts","null_count"],"title":"ColumnDistribution","type":"object"},"DistributionAnalysisResult":{"additionalProperties":false,"description":"Response from Analyze a distribution.","properties":{"credits_charged":{"description":"Credits charged for this request.","minimum":0,"title":"Credits Charged","type":"integer"},"analysis_type":{"const":"distribution","description":"The analysis that produced this response.","title":"Analysis Type","type":"string"},"distributions":{"additionalProperties":{"$ref":"#/components/schemas/ColumnDistribution"},"description":"Distribution summaries keyed by source column name.","title":"Column Distributions","type":"object"}},"required":["credits_charged","analysis_type","distributions"],"title":"DistributionAnalysisResult","type":"object"},"AnalyzeResult":{"type":"object","description":"Analysis payload. Fields depend on the selected analysis; use a fixed analysis action when you want an exact result schema.","required":["analysis_type","credits_charged"],"properties":{"analysis_type":{"type":"string","enum":["describe","correlations","distribution"]},"columns":{"description":"All column names in table order, including nonnumeric columns. Present for a describe analysis.","items":{"type":"string"},"title":"Columns","type":"array"},"column_count":{"description":"Total number of columns in the supplied table. Present for a describe analysis.","minimum":0,"title":"Column Count","type":"integer"},"row_count":{"description":"Total number of rows in the supplied table, including rows with null values. Present for a describe analysis.","minimum":0,"title":"Row Count","type":"integer"},"numeric_statistics":{"type":"array","items":{"$ref":"#/components/schemas/NumericStatistic"},"description":"Present for a describe analysis."},"correlation_matrix":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"number"}},"description":"Present for a correlations analysis."},"error":{"type":"string","description":"Present when correlations cannot be calculated because the table has fewer than two numeric columns."},"distributions":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ColumnDistribution"},"description":"Present for a distribution analysis."},"credits_charged":{"type":"integer","description":"Credits charged for this request. AltDat multiplies the operation's base cost by the input-row band in the current pricing matrix."}},"additionalProperties":false},"WorkbookTable":{"properties":{"name":{"description":"Worksheet name in separate mode, or Combined in combined mode.","title":"Name","type":"string","x-ms-summary":"Table Name"},"worksheet_names":{"description":"Source worksheets represented by this table, in workbook order.","items":{"type":"string"},"title":"Worksheet Names","type":"array"},"row_count":{"description":"Number of data rows in this table.","minimum":0,"title":"Row Count","type":"integer"},"column_count":{"description":"Number of columns in this table.","minimum":0,"title":"Column Count","type":"integer"},"columns":{"description":"Column names in table order.","items":{"type":"string"},"title":"Columns","type":"array"},"body":{"$ref":"#/components/schemas/WorkbookTableBody","description":"Prepared AltDat Table content for another table action.","x-ms-summary":"Table Body"}},"required":["name","worksheet_names","row_count","column_count","columns","body"],"title":"WorkbookTable","type":"object"},"WorkbookTableBody":{"properties":{"$content":{"description":"Prepared table bytes. Map this Table Content into an AltDat table action inside the loop.","format":"byte","title":"$Content","type":"string","x-ms-summary":"Table Content"},"$content-type":{"const":"application/vnd.apache.parquet","default":"application/vnd.apache.parquet","description":"Content type of the prepared table.","title":"$Content-Type","type":"string","x-ms-visibility":"internal"}},"required":["$content","$content-type"],"title":"WorkbookTableBody","type":"object"},"WorkbookPrepareResult":{"properties":{"mode":{"description":"The selected output mode.","enum":["Separate tables","Combined table"],"title":"Mode","type":"string"},"worksheet_count":{"description":"Number of included worksheets.","minimum":1,"title":"Worksheet Count","type":"integer"},"skipped_hidden_sheet_count":{"description":"Hidden worksheets excluded by the selected option.","minimum":0,"title":"Skipped Hidden Sheet Count","type":"integer"},"total_row_count":{"description":"Sum of data rows across included worksheets; used for row limits and credit bands.","minimum":0,"title":"Total Row Count","type":"integer"},"table_count":{"description":"Number of output tables. Combined mode returns one.","minimum":1,"title":"Table Count","type":"integer"},"tables":{"description":"Use this array in Apply to each. Combined mode contains one table.","items":{"$ref":"#/components/schemas/WorkbookTable"},"title":"Tables","type":"array","x-ms-summary":"Tables"},"credits_charged":{"description":"Workbook base credits multiplied by the total-row band from the pricing matrix.","minimum":1,"title":"Credits Charged","type":"integer"}},"required":["mode","worksheet_count","skipped_hidden_sheet_count","total_row_count","table_count","tables","credits_charged"],"title":"WorkbookPrepareResult","type":"object"},"ListRowsResult":{"properties":{"row_count":{"description":"Number of rows returned.","minimum":0,"title":"Row Count","type":"integer","x-ms-summary":"Row Count"},"column_count":{"description":"Number of columns in each row.","minimum":0,"title":"Column Count","type":"integer","x-ms-summary":"Column Count"},"columns":{"description":"Column names in table order.","items":{"type":"string"},"title":"Columns","type":"array","x-ms-summary":"Columns"},"rows":{"description":"Use this array in Apply to each. Each item is one row keyed by column name; add Parse JSON for named fields.","items":{"additionalProperties":true,"type":"object"},"title":"Rows","type":"array","x-ms-summary":"Rows"},"credits_charged":{"description":"Credits charged for this request. AltDat multiplies the operation's base cost by the input-row band in the current pricing matrix.","minimum":1,"title":"Credits Charged","type":"integer","x-ms-summary":"Credits Charged"}},"required":["row_count","column_count","columns","rows","credits_charged"],"title":"ListRowsResult","type":"object"},"WorkflowExternalFileContent":{"type":"object","description":"Select file content from OneDrive, SharePoint, or another external file action. Prepare a table converts it into an AltDat Table.","required":["$content"],"properties":{"$content":{"type":"string","format":"byte","x-ms-summary":"File Content","x-ms-visibility":"important","description":"Select file content from OneDrive, SharePoint, or another external file action. Prepare a table converts it into an AltDat Table."},"$content-type":{"type":"string","x-ms-summary":"Content Type","x-ms-visibility":"internal","description":"MIME type supplied by the upstream file provider. Source Format is the user-facing format control."}}},"AltDatTableContent":{"type":"object","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file.","required":["$content"],"properties":{"$content":{"type":"string","format":"byte","x-ms-summary":"AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or the preceding AltDat workflow action. This input must be an AltDat Table, not the original file."},"$content-type":{"type":"string","x-ms-summary":"Content Type","x-ms-visibility":"internal","description":"Optional MIME type from the preceding AltDat workflow action. This field is not a maker input."}}},"SecondAltDatTableContent":{"type":"object","description":"Second AltDat Table supplied to a two-table workflow action.","required":["$content"],"properties":{"$content":{"type":"string","format":"byte","x-ms-summary":"Second AltDat Table Content","x-ms-visibility":"important","description":"Select Body from Prepare a table or another AltDat table action as the second table."},"$content-type":{"type":"string","x-ms-summary":"Content Type","x-ms-visibility":"internal","description":"Optional MIME type from the preceding AltDat workflow action. This field is not a maker input."}}}}},"x-ms-connector-metadata":[{"propertyName":"Website","propertyValue":"https://altdat.com/"},{"propertyName":"Privacy policy","propertyValue":"https://altdat.com/privacy/"},{"propertyName":"Categories","propertyValue":"Data;Productivity"}]}