{"id":"csv-inner-join","version":"1.0.0","description":"Inner join two CSV documents on exact named key columns.","supported_operations":["csv inner join","inner join csv","join csv documents on keys"],"unsupported_operations":["outer join","left join","fuzzy keys","numeric keys","read files","fetch urls"],"semantics":["left and right are complete CSV documents whose first records are headers.","Empty documents without headers are rejected; header-only documents yield a header-only join.","keys names unique headers present on both sides; join equality uses those exact cell strings with no coercion.","Output columns are the keys in listed order, then leftover left columns in left header order, then leftover right columns in right header order.","Non-key headers that appear on both sides are renamed with left_suffix and right_suffix; keys are never suffixed. Remaining collisions throw.","Each left row is concatenated with every matching right row. Output follows left row order, then matching right row order. Unmatched left rows and right-only keys are omitted.","A key tuple with more than 64 rows on either side is rejected even when that key would not appear in the output.","Output data rows cannot exceed the CSV row limit. The first output header must not begin with U+FEFF."],"limits":{"max_input_bytes":256000,"max_data_rows":5000,"max_columns":256,"max_header_name_bytes":256,"max_keys":32,"max_duplicate_rows_per_key":64,"max_suffix_chars":32,"max_output_bytes":256000},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["left","right","keys"],"properties":{"left":{"type":"string","maxLength":256000},"right":{"type":"string","maxLength":256000},"keys":{"type":"array","minItems":1,"maxItems":32,"uniqueItems":true,"items":{"type":"string","minLength":1}},"left_suffix":{"type":"string","minLength":1,"maxLength":32,"default":"_left"},"right_suffix":{"type":"string","minLength":1,"maxLength":32,"default":"_right"}}},"output_schema":{"type":"object","additionalProperties":false,"required":["csv","rows_out"],"properties":{"csv":{"type":"string"},"rows_out":{"type":"integer"}}},"examples":[{"input":{"left":"id,name,city\n1,Ada,London\n2,Lin,Paris\n3,Zoe,Rome\n","right":"id,dept,city\n1,Math,Cambridge\n1,CS,Oxford\n2,Physics,Paris\n4,Art,Berlin\n","keys":["id"]},"output":{"csv":"id,name,city_left,dept,city_right\n1,Ada,London,Math,Cambridge\n1,Ada,London,CS,Oxford\n2,Lin,Paris,Physics,Paris\n","rows_out":3}}],"execute_url":"/v1/tools/csv-inner-join/versions/1.0.0/execute"}