{"id":"csv-dialect-parse","version":"1.0.0","description":"Parse CSV with an explicit dialect into string rows, keeping leading zeros and embedded breaks.","supported_operations":["parse csv with an explicit dialect","read rfc 4180 text into string cells","parse pipe quoted csv fields","split csv on a declared delimiter","parse doubled quotes inside csv fields","apply a record separator to csv text","פענוח שורות לפי ניב מוצהר"],"unsupported_operations":["infer column types or strip leading zeros","trim spaces or skip comment lines","read a file path or a network url"],"semantics":["The caller supplies delimiter (one code point), quote (\" or | or none), escape (double, backslash, or none), record_separator (LF, CRLF, or CR), and header (present or absent). Any other combination is unsupported_input.","Every cell is a string. There is no trim, no type coercion, and no Unicode normalization. A trailing record separator does not add a row. A blank line is one empty field, because an empty field is allowed.","Doubled quotes inside a quoted field are one quote when escape is double. A backslash escapes the next code point. A quote is legal only at the start of a field.","header present splits the first record into header and requires equal widths, non-empty names, and no exact duplicate. header absent keeps ragged rows and sets header to null. Names stay in an array, so __proto__ is an ordinary header string.","A one-field record whose text is a quoted empty field (\"\") is the row [[\"\"]]. The same row is what format writes for a single empty field.","Limits are checked before a full result is returned. Over-limit input is limit_exceeded even when the text is also malformed. The same input always yields the same object."],"limits":{"max_input_bytes":1024,"max_records":64,"max_fields":8,"max_field_bytes":256,"max_output_bytes":4096,"max_depth":8},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["csv","dialect"],"properties":{"csv":{"type":"string","minLength":1,"maxLength":1024},"dialect":{"type":"object","additionalProperties":false,"required":["delimiter","quote","escape","record_separator","header"],"properties":{"delimiter":{"type":"string","minLength":1,"maxLength":1},"quote":{"type":"string","enum":["\"","|","none"]},"escape":{"type":"string","enum":["double","backslash","none"]},"record_separator":{"type":"string","enum":["\n","\r\n","\r"]},"header":{"type":"string","enum":["present","absent"]}}}}},"output_schema":{"type":"object","additionalProperties":false,"required":["header","rows","ragged","record_count","dialect"],"properties":{"header":{"type":["array","null"],"minItems":1,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":256}},"rows":{"type":"array","maxItems":64,"items":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","maxLength":256}}},"ragged":{"type":"boolean"},"record_count":{"type":"integer","minimum":1,"maximum":64},"dialect":{"type":"object","additionalProperties":false,"required":["delimiter","quote","escape","record_separator","header"],"properties":{"delimiter":{"type":"string","minLength":1,"maxLength":1},"quote":{"type":"string","enum":["\"","|","none"]},"escape":{"type":"string","enum":["double","backslash","none"]},"record_separator":{"type":"string","enum":["\n","\r\n","\r"]},"header":{"type":"string","enum":["present","absent"]}}}}},"examples":[{"input":{"csv":"aaa,bbb,ccc\r\nzzz,yyy,xxx\r\n","dialect":{"delimiter":",","quote":"\"","escape":"double","record_separator":"\r\n","header":"absent"}},"output":{"header":null,"rows":[["aaa","bbb","ccc"],["zzz","yyy","xxx"]],"ragged":false,"record_count":2,"dialect":{"delimiter":",","quote":"\"","escape":"double","record_separator":"\r\n","header":"absent"}}},{"input":{"csv":"\"aaa\",\"b\"\"bb\",\"ccc\"\n","dialect":{"delimiter":",","quote":"\"","escape":"double","record_separator":"\n","header":"absent"}},"output":{"header":null,"rows":[["aaa","b\"bb","ccc"]],"ragged":false,"record_count":1,"dialect":{"delimiter":",","quote":"\"","escape":"double","record_separator":"\n","header":"absent"}}},{"input":{"csv":"\"\"\n","dialect":{"delimiter":",","quote":"\"","escape":"double","record_separator":"\n","header":"absent"}},"output":{"header":null,"rows":[[""]],"ragged":false,"record_count":1,"dialect":{"delimiter":",","quote":"\"","escape":"double","record_separator":"\n","header":"absent"}}}],"execute_url":"/v1/tools/csv-dialect-parse/versions/1.0.0/execute"}