curl --request POST \
--url https://api.csvbox.io/1.1/sheet \
--header 'Accept: <accept>' \
--header 'Content-Type: <content-type>' \
--header 'x-csvbox-api-key: <api-key>' \
--header 'x-csvbox-secret-api-key: <api-key>' \
--data @- <<EOF
{
"title": "Customer Import",
"webhooks": [
{
"import_complete": {
"url": "https://example.com/webhook",
"send_copy": false,
"custom_headers": [
{
"key": "Content-Type",
"value": "application/json"
}
]
}
}
],
"destinations": [
{
"type": "webhook",
"isActive": true,
"settings": {
"method": "POST",
"url": "https://example.com/api/import",
"post_data_format": "JSON",
"rows_per_chunk": 100,
"request_type": "parallel",
"server_side_validation": true,
"allow_resubmit": "all_rows",
"custom_headers": [
{
"key": "Content-Type",
"value": "application/json"
}
]
}
}
],
"sheet_columns": [
{
"column_name": "col1",
"display_label": "Col1 - Text",
"info_hint": "What is your highest educational degree",
"matching_keywords": "degree, education",
"type": "text",
"validators": {
"min_length": 2,
"max_length": 50
},
"default_value": "",
"required": false,
"position": 5
},
{
"column_name": "col2",
"display_label": "col2 - Number",
"info_hint": "Years of work experience",
"type": "number",
"validators": {
"min_value": 1,
"max_value": 100
},
"required": false,
"position": 6
},
{
"column_name": "col4",
"display_label": "col4 - Email",
"type": "email",
"required": false,
"position": 7
},
{
"column_name": "col5",
"display_label": "col5 - Date",
"type": "date",
"required": false,
"validators": {
"format": "YYYY-MM-DD"
},
"position": 8
},
{
"column_name": "col6",
"display_label": "col6 - Time",
"type": "time",
"required": false,
"validators": {
"format": "HH:mm:ss"
}
},
{
"column_name": "col7",
"display_label": "col7 - Boolean",
"type": "boolean",
"required": false
},
{
"column_name": "col8",
"display_label": "col8 - Regex",
"type": "regex",
"required": false,
"validators": {
"expression": "^\\d{10}$",
"error_message": "Please enter a valid 10 digit phone number"
}
},
{
"column_name": "col9",
"display_label": "col9 - IP",
"type": "ip",
"required": false,
"validators": {
"version": "ipv4"
}
},
{
"column_name": "col10",
"display_label": "col10 - URL",
"type": "url",
"required": false
},
{
"column_name": "col11",
"display_label": "col11 - Credit Card",
"type": "credit_card",
"required": false
},
{
"column_name": "col12",
"display_label": "col12 - Phone Number",
"type": "phone_number",
"required": false,
"validators": {
"country_code": "IN"
}
},
{
"column_name": "col13",
"display_label": "col13 - Currency",
"type": "currency",
"required": false,
"validators": {
"symbol": "$",
"require_symbol": false
}
},
{
"column_name": "col14",
"display_label": "col14 - List",
"type": "list",
"required": false,
"validators": {
"values": [
{
"value": "ind",
"display_label": "India",
"dependents": [
{
"value": "mh",
"display_label": "Maharashtra",
"dependents": [
{
"value": "mum",
"display_label": "Mumbai"
},
{
"value": "pun",
"display_label": "Pune"
}
]
},
{
"value": "gj",
"display_label": "Gujarat",
"dependents": [
{
"value": "amd",
"display_label": "Ahmedabad"
},
{
"value": "sur",
"display_label": "Surat"
}
]
}
]
},
{
"value": "usa",
"display_label": "United States",
"dependents": [
{
"value": "ca",
"display_label": "California",
"dependents": [
{
"value": "la",
"display_label": "Los Angeles"
},
{
"value": "sf",
"display_label": "San Francisco"
}
]
},
{
"value": "ny",
"display_label": "New York",
"dependents": [
{
"value": "nyc",
"display_label": "New York City"
},
{
"value": "buf",
"display_label": "Buffalo"
}
]
}
]
},
{
"value": "can",
"display_label": "Canada",
"dependents": [
{
"value": "on",
"display_label": "Ontario",
"dependents": [
{
"value": "tor",
"display_label": "Toronto"
},
{
"value": "ott",
"display_label": "Ottawa"
}
]
},
{
"value": "bc",
"display_label": "British Columbia",
"dependents": [
{
"value": "van",
"display_label": "Vancouver"
},
{
"value": "vic",
"display_label": "Victoria"
}
]
}
]
}
],
"case_sensitive": false
}
},
{
"column_name": "col15",
"display_label": "col15 - Dependent List",
"type": "dependent_list",
"required": false,
"validators": {
"primary_column": "col14"
}
},
{
"column_name": "col16",
"display_label": "col16 - Dependent List",
"type": "dependent_list",
"required": false,
"validators": {
"primary_column": "col15"
}
},
{
"column_name": "col17",
"display_label": "col17 - Dynamic List",
"type": "dynamic_list",
"required": false,
"validators": {
"source_url": "https://example.com/api/dynamic-list-options",
"request_method": "GET",
"request_headers": [],
"custom_user_attributes": true,
"other_values": false
}
},
{
"column_name": "col18",
"display_label": "col18 - Dependent Dynamic List",
"type": "dependent_dynamic_list",
"required": false,
"validators": {
"primary_column": "col17"
}
},
{
"column_name": "col19",
"display_label": "col19 - Dependent Dynamic List",
"type": "dependent_dynamic_list",
"required": false,
"validators": {
"primary_column": "col18"
}
},
{
"column_name": "col20",
"display_label": "col20 - Multiselect List",
"type": "multiselect_list",
"required": false,
"validators": {
"values": [
"Red",
"Green",
"Blue",
"orange",
"yellow",
"black"
],
"delimiter": ",",
"case_sensitive": false,
"other_values": false
}
},
{
"column_name": "col21",
"display_label": "col21 - Multiselect Dynamic List",
"type": "multiselect_dynamic_list",
"required": false,
"validators": {
"dml_source_url": "https://example.com/api/multiselect-dynamic-options",
"dml_request_method": "GET",
"dml_request_headers": [],
"delimiter": ",",
"dml_other_values": false
}
},
{
"column_name": "col22",
"display_label": "col22 - Percentage",
"type": "percentage",
"required": false,
"validators": {
"min_value": 0,
"max_value": 100,
"output": "percent"
}
},
{
"column_name": "col23",
"display_label": "col23 - UUID",
"type": "uuid",
"required": false
},
{
"column_name": "col24",
"display_label": "col24 - JSON",
"type": "json",
"required": false
}
],
"steps": {
"file_upload": {
"types": [
".csv"
],
"title": "File Upload",
"help": "Upload your CSV file",
"sample_file_url": "",
"size_mb": 200,
"validation_msg": "upto 200mb allowed",
"copy_paste": true,
"copy_delimiter": "comma",
"show_upload": true,
"worksheet_select": true,
"description_option": true,
"lang": "en",
"excel_date_format": "custom",
"excel_date_custom": "DD-MM-YYYY",
"hide_cancel": false,
"split": true,
"split_rows": 1000,
"split_confirm": "no",
"extract_types": [
"pdf",
"images"
],
"page_limit": 10,
"accept_raw_value": false,
"skip_min_rows": 2,
"skip_max_rows": 1000,
"skip_min_cols": 2,
"skip_max_cols": 20
},
"select_header": {
"skip": true,
"help": "Select header row",
"default_row": "2",
"encoding_option": true,
"encoding": "windows-1252",
"row_column_switch": false
},
"map_columns": {
"skip": true,
"help": "Map columns",
"mapping_mode": "template_fields",
"bulk_cols_dd": false,
"accept_unmapped": true,
"accept_unmapped_select": true,
"allow_zero_template": true,
"ignore_cols": true,
"ignore_cols_default": true,
"user_keywords": false
},
"verify_data": {
"skip": true,
"help": "Verify data",
"row_display_mode": "invalid",
"export_option": true,
"search_option": false,
"ai_transform": true,
"allow_new_rows": false,
"rows_display": 25,
"allow_invalid": true,
"invalid_confirmation": false,
"max_rows": 600,
"allow_upload_if_max": false,
"max_rows_msg": "maaaaaax",
"min_rows": 2,
"min_rows_msg": "miiiiin"
},
"results": {
"close_mode": "close_on_success",
"redirect_url": "",
"success_type": "static",
"success_text": "Import successful",
"success_method": "get",
"success_url": "",
"success_headers": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"failed_type": "static",
"failed_text": "Failure",
"failed_method": "get",
"failed_url": "",
"failed_headers": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"show_resubmit": false,
"show_error_text": false
}
},
"security_settings": {
"region": "us",
"domains": [
"example.com"
],
"import_url_upload": true,
"s3_upload": true
},
"virtual_columns": [
{
"column_name": "full_name",
"js_code": "const a = csvbox.row['col1'] || ''; const b = csvbox.row['col2'] || ''; return (a + ' ' + b).trim();",
"active": true,
"dependencies": [],
"_delete": false
}
],
"validation_functions": [
{
"function_name": "check_email",
"scope": "column",
"columns": [
"col4"
],
"js_code": "const rows = csvbox.column['col4'] || []; const errs = []; for (let i = 0; i < rows.length; i++) { if (String(rows[i]).indexOf('@') === -1) { errs.push({ row_id: i + 1, column: 'col4', message: 'Not a valid email' }); } } return errs;",
"active": true
},
{
"function_name": "check_date",
"scope": "column",
"columns": [
"col5"
],
"js_code": "const rows = csvbox.column['col5'] || []; const errs = []; const today = dayjs(); for (let i = 0; i < rows.length; i++) { const raw = String(rows[i] || '').trim(); if (raw === '') { continue; } const d = dayjs(raw); if (!d.isValid() || d.format('YYYY-MM-DD') !== raw) { errs.push({ row_id: i + 1, column: 'col5', message: 'Use YYYY-MM-DD, e.g. 2024-01-31' }); } else if (d.isAfter(today)) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date cannot be in the future' }); } else if (d.year() < 1900) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date must be 1900 or later' }); } } return errs;",
"dependencies": [
{
"url": "https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js",
"globals": [
"dayjs"
]
}
],
"active": true
}
],
"data_transforms": [
{
"transform_name": "uppercase_country",
"scope": "column",
"run_at": "before_validation",
"columns": [
"col1"
],
"dynamic_columns": [
"region"
],
"js_code": "for (let i = 0; i < csvbox.column['col1'].length; i++) { csvbox.column['col1'][i] = String(csvbox.column['col1'][i]).toUpperCase(); } return csvbox;",
"active": true,
"dependencies": [],
"_delete": false
}
],
"pdf_metadata_config": [
{
"name": "Author",
"source": "native"
},
{
"name": "Invoice Number",
"source": "document-kv"
},
{
"name": "processed_by",
"source": "static",
"value": "AP Team"
},
{
"name": "invoice_date",
"source": "line-match",
"value": "Invoice Date:"
}
]
}
EOFimport requests
url = "https://api.csvbox.io/1.1/sheet"
payload = {
"title": "Customer Import",
"webhooks": [{ "import_complete": {
"url": "https://example.com/webhook",
"send_copy": False,
"custom_headers": [
{
"key": "Content-Type",
"value": "application/json"
}
]
} }],
"destinations": [
{
"type": "webhook",
"isActive": True,
"settings": {
"method": "POST",
"url": "https://example.com/api/import",
"post_data_format": "JSON",
"rows_per_chunk": 100,
"request_type": "parallel",
"server_side_validation": True,
"allow_resubmit": "all_rows",
"custom_headers": [
{
"key": "Content-Type",
"value": "application/json"
}
]
}
}
],
"sheet_columns": [
{
"column_name": "col1",
"display_label": "Col1 - Text",
"info_hint": "What is your highest educational degree",
"matching_keywords": "degree, education",
"type": "text",
"validators": {
"min_length": 2,
"max_length": 50
},
"default_value": "",
"required": False,
"position": 5
},
{
"column_name": "col2",
"display_label": "col2 - Number",
"info_hint": "Years of work experience",
"type": "number",
"validators": {
"min_value": 1,
"max_value": 100
},
"required": False,
"position": 6
},
{
"column_name": "col4",
"display_label": "col4 - Email",
"type": "email",
"required": False,
"position": 7
},
{
"column_name": "col5",
"display_label": "col5 - Date",
"type": "date",
"required": False,
"validators": { "format": "YYYY-MM-DD" },
"position": 8
},
{
"column_name": "col6",
"display_label": "col6 - Time",
"type": "time",
"required": False,
"validators": { "format": "HH:mm:ss" }
},
{
"column_name": "col7",
"display_label": "col7 - Boolean",
"type": "boolean",
"required": False
},
{
"column_name": "col8",
"display_label": "col8 - Regex",
"type": "regex",
"required": False,
"validators": {
"expression": "^\d{10}$",
"error_message": "Please enter a valid 10 digit phone number"
}
},
{
"column_name": "col9",
"display_label": "col9 - IP",
"type": "ip",
"required": False,
"validators": { "version": "ipv4" }
},
{
"column_name": "col10",
"display_label": "col10 - URL",
"type": "url",
"required": False
},
{
"column_name": "col11",
"display_label": "col11 - Credit Card",
"type": "credit_card",
"required": False
},
{
"column_name": "col12",
"display_label": "col12 - Phone Number",
"type": "phone_number",
"required": False,
"validators": { "country_code": "IN" }
},
{
"column_name": "col13",
"display_label": "col13 - Currency",
"type": "currency",
"required": False,
"validators": {
"symbol": "$",
"require_symbol": False
}
},
{
"column_name": "col14",
"display_label": "col14 - List",
"type": "list",
"required": False,
"validators": {
"values": [
{
"value": "ind",
"display_label": "India",
"dependents": [
{
"value": "mh",
"display_label": "Maharashtra",
"dependents": [
{
"value": "mum",
"display_label": "Mumbai"
},
{
"value": "pun",
"display_label": "Pune"
}
]
},
{
"value": "gj",
"display_label": "Gujarat",
"dependents": [
{
"value": "amd",
"display_label": "Ahmedabad"
},
{
"value": "sur",
"display_label": "Surat"
}
]
}
]
},
{
"value": "usa",
"display_label": "United States",
"dependents": [
{
"value": "ca",
"display_label": "California",
"dependents": [
{
"value": "la",
"display_label": "Los Angeles"
},
{
"value": "sf",
"display_label": "San Francisco"
}
]
},
{
"value": "ny",
"display_label": "New York",
"dependents": [
{
"value": "nyc",
"display_label": "New York City"
},
{
"value": "buf",
"display_label": "Buffalo"
}
]
}
]
},
{
"value": "can",
"display_label": "Canada",
"dependents": [
{
"value": "on",
"display_label": "Ontario",
"dependents": [
{
"value": "tor",
"display_label": "Toronto"
},
{
"value": "ott",
"display_label": "Ottawa"
}
]
},
{
"value": "bc",
"display_label": "British Columbia",
"dependents": [
{
"value": "van",
"display_label": "Vancouver"
},
{
"value": "vic",
"display_label": "Victoria"
}
]
}
]
}
],
"case_sensitive": False
}
},
{
"column_name": "col15",
"display_label": "col15 - Dependent List",
"type": "dependent_list",
"required": False,
"validators": { "primary_column": "col14" }
},
{
"column_name": "col16",
"display_label": "col16 - Dependent List",
"type": "dependent_list",
"required": False,
"validators": { "primary_column": "col15" }
},
{
"column_name": "col17",
"display_label": "col17 - Dynamic List",
"type": "dynamic_list",
"required": False,
"validators": {
"source_url": "https://example.com/api/dynamic-list-options",
"request_method": "GET",
"request_headers": [],
"custom_user_attributes": True,
"other_values": False
}
},
{
"column_name": "col18",
"display_label": "col18 - Dependent Dynamic List",
"type": "dependent_dynamic_list",
"required": False,
"validators": { "primary_column": "col17" }
},
{
"column_name": "col19",
"display_label": "col19 - Dependent Dynamic List",
"type": "dependent_dynamic_list",
"required": False,
"validators": { "primary_column": "col18" }
},
{
"column_name": "col20",
"display_label": "col20 - Multiselect List",
"type": "multiselect_list",
"required": False,
"validators": {
"values": ["Red", "Green", "Blue", "orange", "yellow", "black"],
"delimiter": ",",
"case_sensitive": False,
"other_values": False
}
},
{
"column_name": "col21",
"display_label": "col21 - Multiselect Dynamic List",
"type": "multiselect_dynamic_list",
"required": False,
"validators": {
"dml_source_url": "https://example.com/api/multiselect-dynamic-options",
"dml_request_method": "GET",
"dml_request_headers": [],
"delimiter": ",",
"dml_other_values": False
}
},
{
"column_name": "col22",
"display_label": "col22 - Percentage",
"type": "percentage",
"required": False,
"validators": {
"min_value": 0,
"max_value": 100,
"output": "percent"
}
},
{
"column_name": "col23",
"display_label": "col23 - UUID",
"type": "uuid",
"required": False
},
{
"column_name": "col24",
"display_label": "col24 - JSON",
"type": "json",
"required": False
}
],
"steps": {
"file_upload": {
"types": [".csv"],
"title": "File Upload",
"help": "Upload your CSV file",
"sample_file_url": "",
"size_mb": 200,
"validation_msg": "upto 200mb allowed",
"copy_paste": True,
"copy_delimiter": "comma",
"show_upload": True,
"worksheet_select": True,
"description_option": True,
"lang": "en",
"excel_date_format": "custom",
"excel_date_custom": "DD-MM-YYYY",
"hide_cancel": False,
"split": True,
"split_rows": 1000,
"split_confirm": "no",
"extract_types": ["pdf", "images"],
"page_limit": 10,
"accept_raw_value": False,
"skip_min_rows": 2,
"skip_max_rows": 1000,
"skip_min_cols": 2,
"skip_max_cols": 20
},
"select_header": {
"skip": True,
"help": "Select header row",
"default_row": "2",
"encoding_option": True,
"encoding": "windows-1252",
"row_column_switch": False
},
"map_columns": {
"skip": True,
"help": "Map columns",
"mapping_mode": "template_fields",
"bulk_cols_dd": False,
"accept_unmapped": True,
"accept_unmapped_select": True,
"allow_zero_template": True,
"ignore_cols": True,
"ignore_cols_default": True,
"user_keywords": False
},
"verify_data": {
"skip": True,
"help": "Verify data",
"row_display_mode": "invalid",
"export_option": True,
"search_option": False,
"ai_transform": True,
"allow_new_rows": False,
"rows_display": 25,
"allow_invalid": True,
"invalid_confirmation": False,
"max_rows": 600,
"allow_upload_if_max": False,
"max_rows_msg": "maaaaaax",
"min_rows": 2,
"min_rows_msg": "miiiiin"
},
"results": {
"close_mode": "close_on_success",
"redirect_url": "",
"success_type": "static",
"success_text": "Import successful",
"success_method": "get",
"success_url": "",
"success_headers": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"failed_type": "static",
"failed_text": "Failure",
"failed_method": "get",
"failed_url": "",
"failed_headers": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"show_resubmit": False,
"show_error_text": False
}
},
"security_settings": {
"region": "us",
"domains": ["example.com"],
"import_url_upload": True,
"s3_upload": True
},
"virtual_columns": [
{
"column_name": "full_name",
"js_code": "const a = csvbox.row['col1'] || ''; const b = csvbox.row['col2'] || ''; return (a + ' ' + b).trim();",
"active": True,
"dependencies": [],
"_delete": False
}
],
"validation_functions": [
{
"function_name": "check_email",
"scope": "column",
"columns": ["col4"],
"js_code": "const rows = csvbox.column['col4'] || []; const errs = []; for (let i = 0; i < rows.length; i++) { if (String(rows[i]).indexOf('@') === -1) { errs.push({ row_id: i + 1, column: 'col4', message: 'Not a valid email' }); } } return errs;",
"active": True
},
{
"function_name": "check_date",
"scope": "column",
"columns": ["col5"],
"js_code": "const rows = csvbox.column['col5'] || []; const errs = []; const today = dayjs(); for (let i = 0; i < rows.length; i++) { const raw = String(rows[i] || '').trim(); if (raw === '') { continue; } const d = dayjs(raw); if (!d.isValid() || d.format('YYYY-MM-DD') !== raw) { errs.push({ row_id: i + 1, column: 'col5', message: 'Use YYYY-MM-DD, e.g. 2024-01-31' }); } else if (d.isAfter(today)) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date cannot be in the future' }); } else if (d.year() < 1900) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date must be 1900 or later' }); } } return errs;",
"dependencies": [
{
"url": "https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js",
"globals": ["dayjs"]
}
],
"active": True
}
],
"data_transforms": [
{
"transform_name": "uppercase_country",
"scope": "column",
"run_at": "before_validation",
"columns": ["col1"],
"dynamic_columns": ["region"],
"js_code": "for (let i = 0; i < csvbox.column['col1'].length; i++) { csvbox.column['col1'][i] = String(csvbox.column['col1'][i]).toUpperCase(); } return csvbox;",
"active": True,
"dependencies": [],
"_delete": False
}
],
"pdf_metadata_config": [
{
"name": "Author",
"source": "native"
},
{
"name": "Invoice Number",
"source": "document-kv"
},
{
"name": "processed_by",
"source": "static",
"value": "AP Team"
},
{
"name": "invoice_date",
"source": "line-match",
"value": "Invoice Date:"
}
]
}
headers = {
"Accept": "<accept>",
"Content-Type": "<content-type>",
"x-csvbox-api-key": "<api-key>",
"x-csvbox-secret-api-key": "<api-key>"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Accept: '<accept>',
'Content-Type': '<content-type>',
'x-csvbox-api-key': '<api-key>',
'x-csvbox-secret-api-key': '<api-key>'
},
body: JSON.stringify({
title: 'Customer Import',
webhooks: [
{
import_complete: {
url: 'https://example.com/webhook',
send_copy: false,
custom_headers: [{key: 'Content-Type', value: 'application/json'}]
}
}
],
destinations: [
{
type: 'webhook',
isActive: true,
settings: {
method: 'POST',
url: 'https://example.com/api/import',
post_data_format: 'JSON',
rows_per_chunk: 100,
request_type: 'parallel',
server_side_validation: true,
allow_resubmit: 'all_rows',
custom_headers: [{key: 'Content-Type', value: 'application/json'}]
}
}
],
sheet_columns: [
{
column_name: 'col1',
display_label: 'Col1 - Text',
info_hint: 'What is your highest educational degree',
matching_keywords: 'degree, education',
type: 'text',
validators: {min_length: 2, max_length: 50},
default_value: '',
required: false,
position: 5
},
{
column_name: 'col2',
display_label: 'col2 - Number',
info_hint: 'Years of work experience',
type: 'number',
validators: {min_value: 1, max_value: 100},
required: false,
position: 6
},
{
column_name: 'col4',
display_label: 'col4 - Email',
type: 'email',
required: false,
position: 7
},
{
column_name: 'col5',
display_label: 'col5 - Date',
type: 'date',
required: false,
validators: {format: 'YYYY-MM-DD'},
position: 8
},
{
column_name: 'col6',
display_label: 'col6 - Time',
type: 'time',
required: false,
validators: {format: 'HH:mm:ss'}
},
{
column_name: 'col7',
display_label: 'col7 - Boolean',
type: 'boolean',
required: false
},
{
column_name: 'col8',
display_label: 'col8 - Regex',
type: 'regex',
required: false,
validators: {
expression: '^\d{10}$',
error_message: 'Please enter a valid 10 digit phone number'
}
},
{
column_name: 'col9',
display_label: 'col9 - IP',
type: 'ip',
required: false,
validators: {version: 'ipv4'}
},
{
column_name: 'col10',
display_label: 'col10 - URL',
type: 'url',
required: false
},
{
column_name: 'col11',
display_label: 'col11 - Credit Card',
type: 'credit_card',
required: false
},
{
column_name: 'col12',
display_label: 'col12 - Phone Number',
type: 'phone_number',
required: false,
validators: {country_code: 'IN'}
},
{
column_name: 'col13',
display_label: 'col13 - Currency',
type: 'currency',
required: false,
validators: {symbol: '$', require_symbol: false}
},
{
column_name: 'col14',
display_label: 'col14 - List',
type: 'list',
required: false,
validators: {
values: [
{
value: 'ind',
display_label: 'India',
dependents: [
{
value: 'mh',
display_label: 'Maharashtra',
dependents: [{value: 'mum', display_label: 'Mumbai'}, {value: 'pun', display_label: 'Pune'}]
},
{
value: 'gj',
display_label: 'Gujarat',
dependents: [
{value: 'amd', display_label: 'Ahmedabad'},
{value: 'sur', display_label: 'Surat'}
]
}
]
},
{
value: 'usa',
display_label: 'United States',
dependents: [
{
value: 'ca',
display_label: 'California',
dependents: [
{value: 'la', display_label: 'Los Angeles'},
{value: 'sf', display_label: 'San Francisco'}
]
},
{
value: 'ny',
display_label: 'New York',
dependents: [
{value: 'nyc', display_label: 'New York City'},
{value: 'buf', display_label: 'Buffalo'}
]
}
]
},
{
value: 'can',
display_label: 'Canada',
dependents: [
{
value: 'on',
display_label: 'Ontario',
dependents: [
{value: 'tor', display_label: 'Toronto'},
{value: 'ott', display_label: 'Ottawa'}
]
},
{
value: 'bc',
display_label: 'British Columbia',
dependents: [
{value: 'van', display_label: 'Vancouver'},
{value: 'vic', display_label: 'Victoria'}
]
}
]
}
],
case_sensitive: false
}
},
{
column_name: 'col15',
display_label: 'col15 - Dependent List',
type: 'dependent_list',
required: false,
validators: {primary_column: 'col14'}
},
{
column_name: 'col16',
display_label: 'col16 - Dependent List',
type: 'dependent_list',
required: false,
validators: {primary_column: 'col15'}
},
{
column_name: 'col17',
display_label: 'col17 - Dynamic List',
type: 'dynamic_list',
required: false,
validators: {
source_url: 'https://example.com/api/dynamic-list-options',
request_method: 'GET',
request_headers: [],
custom_user_attributes: true,
other_values: false
}
},
{
column_name: 'col18',
display_label: 'col18 - Dependent Dynamic List',
type: 'dependent_dynamic_list',
required: false,
validators: {primary_column: 'col17'}
},
{
column_name: 'col19',
display_label: 'col19 - Dependent Dynamic List',
type: 'dependent_dynamic_list',
required: false,
validators: {primary_column: 'col18'}
},
{
column_name: 'col20',
display_label: 'col20 - Multiselect List',
type: 'multiselect_list',
required: false,
validators: {
values: ['Red', 'Green', 'Blue', 'orange', 'yellow', 'black'],
delimiter: ',',
case_sensitive: false,
other_values: false
}
},
{
column_name: 'col21',
display_label: 'col21 - Multiselect Dynamic List',
type: 'multiselect_dynamic_list',
required: false,
validators: {
dml_source_url: 'https://example.com/api/multiselect-dynamic-options',
dml_request_method: 'GET',
dml_request_headers: [],
delimiter: ',',
dml_other_values: false
}
},
{
column_name: 'col22',
display_label: 'col22 - Percentage',
type: 'percentage',
required: false,
validators: {min_value: 0, max_value: 100, output: 'percent'}
},
{
column_name: 'col23',
display_label: 'col23 - UUID',
type: 'uuid',
required: false
},
{
column_name: 'col24',
display_label: 'col24 - JSON',
type: 'json',
required: false
}
],
steps: {
file_upload: {
types: ['.csv'],
title: 'File Upload',
help: 'Upload your CSV file',
sample_file_url: '',
size_mb: 200,
validation_msg: 'upto 200mb allowed',
copy_paste: true,
copy_delimiter: 'comma',
show_upload: true,
worksheet_select: true,
description_option: true,
lang: 'en',
excel_date_format: 'custom',
excel_date_custom: 'DD-MM-YYYY',
hide_cancel: false,
split: true,
split_rows: 1000,
split_confirm: 'no',
extract_types: ['pdf', 'images'],
page_limit: 10,
accept_raw_value: false,
skip_min_rows: 2,
skip_max_rows: 1000,
skip_min_cols: 2,
skip_max_cols: 20
},
select_header: {
skip: true,
help: 'Select header row',
default_row: '2',
encoding_option: true,
encoding: 'windows-1252',
row_column_switch: false
},
map_columns: {
skip: true,
help: 'Map columns',
mapping_mode: 'template_fields',
bulk_cols_dd: false,
accept_unmapped: true,
accept_unmapped_select: true,
allow_zero_template: true,
ignore_cols: true,
ignore_cols_default: true,
user_keywords: false
},
verify_data: {
skip: true,
help: 'Verify data',
row_display_mode: 'invalid',
export_option: true,
search_option: false,
ai_transform: true,
allow_new_rows: false,
rows_display: 25,
allow_invalid: true,
invalid_confirmation: false,
max_rows: 600,
allow_upload_if_max: false,
max_rows_msg: 'maaaaaax',
min_rows: 2,
min_rows_msg: 'miiiiin'
},
results: {
close_mode: 'close_on_success',
redirect_url: '',
success_type: 'static',
success_text: 'Import successful',
success_method: 'get',
success_url: '',
success_headers: [{key: 'Content-Type', value: 'application/json'}],
failed_type: 'static',
failed_text: 'Failure',
failed_method: 'get',
failed_url: '',
failed_headers: [{key: 'Content-Type', value: 'application/json'}],
show_resubmit: false,
show_error_text: false
}
},
security_settings: {
region: 'us',
domains: ['example.com'],
import_url_upload: true,
s3_upload: true
},
virtual_columns: [
{
column_name: 'full_name',
js_code: 'const a = csvbox.row[\'col1\'] || \'\'; const b = csvbox.row[\'col2\'] || \'\'; return (a + \' \' + b).trim();',
active: true,
dependencies: [],
_delete: false
}
],
validation_functions: [
{
function_name: 'check_email',
scope: 'column',
columns: ['col4'],
js_code: 'const rows = csvbox.column[\'col4\'] || []; const errs = []; for (let i = 0; i < rows.length; i++) { if (String(rows[i]).indexOf(\'@\') === -1) { errs.push({ row_id: i + 1, column: \'col4\', message: \'Not a valid email\' }); } } return errs;',
active: true
},
{
function_name: 'check_date',
scope: 'column',
columns: ['col5'],
js_code: 'const rows = csvbox.column[\'col5\'] || []; const errs = []; const today = dayjs(); for (let i = 0; i < rows.length; i++) { const raw = String(rows[i] || \'\').trim(); if (raw === \'\') { continue; } const d = dayjs(raw); if (!d.isValid() || d.format(\'YYYY-MM-DD\') !== raw) { errs.push({ row_id: i + 1, column: \'col5\', message: \'Use YYYY-MM-DD, e.g. 2024-01-31\' }); } else if (d.isAfter(today)) { errs.push({ row_id: i + 1, column: \'col5\', message: \'Date cannot be in the future\' }); } else if (d.year() < 1900) { errs.push({ row_id: i + 1, column: \'col5\', message: \'Date must be 1900 or later\' }); } } return errs;',
dependencies: [
{
url: 'https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js',
globals: ['dayjs']
}
],
active: true
}
],
data_transforms: [
{
transform_name: 'uppercase_country',
scope: 'column',
run_at: 'before_validation',
columns: ['col1'],
dynamic_columns: ['region'],
js_code: 'for (let i = 0; i < csvbox.column[\'col1\'].length; i++) { csvbox.column[\'col1\'][i] = String(csvbox.column[\'col1\'][i]).toUpperCase(); } return csvbox;',
active: true,
dependencies: [],
_delete: false
}
],
pdf_metadata_config: [
{name: 'Author', source: 'native'},
{name: 'Invoice Number', source: 'document-kv'},
{name: 'processed_by', source: 'static', value: 'AP Team'},
{name: 'invoice_date', source: 'line-match', value: 'Invoice Date:'}
]
})
};
fetch('https://api.csvbox.io/1.1/sheet', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.csvbox.io/1.1/sheet",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'title' => 'Customer Import',
'webhooks' => [
[
'import_complete' => [
'url' => 'https://example.com/webhook',
'send_copy' => false,
'custom_headers' => [
[
'key' => 'Content-Type',
'value' => 'application/json'
]
]
]
]
],
'destinations' => [
[
'type' => 'webhook',
'isActive' => true,
'settings' => [
'method' => 'POST',
'url' => 'https://example.com/api/import',
'post_data_format' => 'JSON',
'rows_per_chunk' => 100,
'request_type' => 'parallel',
'server_side_validation' => true,
'allow_resubmit' => 'all_rows',
'custom_headers' => [
[
'key' => 'Content-Type',
'value' => 'application/json'
]
]
]
]
],
'sheet_columns' => [
[
'column_name' => 'col1',
'display_label' => 'Col1 - Text',
'info_hint' => 'What is your highest educational degree',
'matching_keywords' => 'degree, education',
'type' => 'text',
'validators' => [
'min_length' => 2,
'max_length' => 50
],
'default_value' => '',
'required' => false,
'position' => 5
],
[
'column_name' => 'col2',
'display_label' => 'col2 - Number',
'info_hint' => 'Years of work experience',
'type' => 'number',
'validators' => [
'min_value' => 1,
'max_value' => 100
],
'required' => false,
'position' => 6
],
[
'column_name' => 'col4',
'display_label' => 'col4 - Email',
'type' => 'email',
'required' => false,
'position' => 7
],
[
'column_name' => 'col5',
'display_label' => 'col5 - Date',
'type' => 'date',
'required' => false,
'validators' => [
'format' => 'YYYY-MM-DD'
],
'position' => 8
],
[
'column_name' => 'col6',
'display_label' => 'col6 - Time',
'type' => 'time',
'required' => false,
'validators' => [
'format' => 'HH:mm:ss'
]
],
[
'column_name' => 'col7',
'display_label' => 'col7 - Boolean',
'type' => 'boolean',
'required' => false
],
[
'column_name' => 'col8',
'display_label' => 'col8 - Regex',
'type' => 'regex',
'required' => false,
'validators' => [
'expression' => '^\\d{10}$',
'error_message' => 'Please enter a valid 10 digit phone number'
]
],
[
'column_name' => 'col9',
'display_label' => 'col9 - IP',
'type' => 'ip',
'required' => false,
'validators' => [
'version' => 'ipv4'
]
],
[
'column_name' => 'col10',
'display_label' => 'col10 - URL',
'type' => 'url',
'required' => false
],
[
'column_name' => 'col11',
'display_label' => 'col11 - Credit Card',
'type' => 'credit_card',
'required' => false
],
[
'column_name' => 'col12',
'display_label' => 'col12 - Phone Number',
'type' => 'phone_number',
'required' => false,
'validators' => [
'country_code' => 'IN'
]
],
[
'column_name' => 'col13',
'display_label' => 'col13 - Currency',
'type' => 'currency',
'required' => false,
'validators' => [
'symbol' => '$',
'require_symbol' => false
]
],
[
'column_name' => 'col14',
'display_label' => 'col14 - List',
'type' => 'list',
'required' => false,
'validators' => [
'values' => [
[
'value' => 'ind',
'display_label' => 'India',
'dependents' => [
[
'value' => 'mh',
'display_label' => 'Maharashtra',
'dependents' => [
[
'value' => 'mum',
'display_label' => 'Mumbai'
],
[
'value' => 'pun',
'display_label' => 'Pune'
]
]
],
[
'value' => 'gj',
'display_label' => 'Gujarat',
'dependents' => [
[
'value' => 'amd',
'display_label' => 'Ahmedabad'
],
[
'value' => 'sur',
'display_label' => 'Surat'
]
]
]
]
],
[
'value' => 'usa',
'display_label' => 'United States',
'dependents' => [
[
'value' => 'ca',
'display_label' => 'California',
'dependents' => [
[
'value' => 'la',
'display_label' => 'Los Angeles'
],
[
'value' => 'sf',
'display_label' => 'San Francisco'
]
]
],
[
'value' => 'ny',
'display_label' => 'New York',
'dependents' => [
[
'value' => 'nyc',
'display_label' => 'New York City'
],
[
'value' => 'buf',
'display_label' => 'Buffalo'
]
]
]
]
],
[
'value' => 'can',
'display_label' => 'Canada',
'dependents' => [
[
'value' => 'on',
'display_label' => 'Ontario',
'dependents' => [
[
'value' => 'tor',
'display_label' => 'Toronto'
],
[
'value' => 'ott',
'display_label' => 'Ottawa'
]
]
],
[
'value' => 'bc',
'display_label' => 'British Columbia',
'dependents' => [
[
'value' => 'van',
'display_label' => 'Vancouver'
],
[
'value' => 'vic',
'display_label' => 'Victoria'
]
]
]
]
]
],
'case_sensitive' => false
]
],
[
'column_name' => 'col15',
'display_label' => 'col15 - Dependent List',
'type' => 'dependent_list',
'required' => false,
'validators' => [
'primary_column' => 'col14'
]
],
[
'column_name' => 'col16',
'display_label' => 'col16 - Dependent List',
'type' => 'dependent_list',
'required' => false,
'validators' => [
'primary_column' => 'col15'
]
],
[
'column_name' => 'col17',
'display_label' => 'col17 - Dynamic List',
'type' => 'dynamic_list',
'required' => false,
'validators' => [
'source_url' => 'https://example.com/api/dynamic-list-options',
'request_method' => 'GET',
'request_headers' => [
],
'custom_user_attributes' => true,
'other_values' => false
]
],
[
'column_name' => 'col18',
'display_label' => 'col18 - Dependent Dynamic List',
'type' => 'dependent_dynamic_list',
'required' => false,
'validators' => [
'primary_column' => 'col17'
]
],
[
'column_name' => 'col19',
'display_label' => 'col19 - Dependent Dynamic List',
'type' => 'dependent_dynamic_list',
'required' => false,
'validators' => [
'primary_column' => 'col18'
]
],
[
'column_name' => 'col20',
'display_label' => 'col20 - Multiselect List',
'type' => 'multiselect_list',
'required' => false,
'validators' => [
'values' => [
'Red',
'Green',
'Blue',
'orange',
'yellow',
'black'
],
'delimiter' => ',',
'case_sensitive' => false,
'other_values' => false
]
],
[
'column_name' => 'col21',
'display_label' => 'col21 - Multiselect Dynamic List',
'type' => 'multiselect_dynamic_list',
'required' => false,
'validators' => [
'dml_source_url' => 'https://example.com/api/multiselect-dynamic-options',
'dml_request_method' => 'GET',
'dml_request_headers' => [
],
'delimiter' => ',',
'dml_other_values' => false
]
],
[
'column_name' => 'col22',
'display_label' => 'col22 - Percentage',
'type' => 'percentage',
'required' => false,
'validators' => [
'min_value' => 0,
'max_value' => 100,
'output' => 'percent'
]
],
[
'column_name' => 'col23',
'display_label' => 'col23 - UUID',
'type' => 'uuid',
'required' => false
],
[
'column_name' => 'col24',
'display_label' => 'col24 - JSON',
'type' => 'json',
'required' => false
]
],
'steps' => [
'file_upload' => [
'types' => [
'.csv'
],
'title' => 'File Upload',
'help' => 'Upload your CSV file',
'sample_file_url' => '',
'size_mb' => 200,
'validation_msg' => 'upto 200mb allowed',
'copy_paste' => true,
'copy_delimiter' => 'comma',
'show_upload' => true,
'worksheet_select' => true,
'description_option' => true,
'lang' => 'en',
'excel_date_format' => 'custom',
'excel_date_custom' => 'DD-MM-YYYY',
'hide_cancel' => false,
'split' => true,
'split_rows' => 1000,
'split_confirm' => 'no',
'extract_types' => [
'pdf',
'images'
],
'page_limit' => 10,
'accept_raw_value' => false,
'skip_min_rows' => 2,
'skip_max_rows' => 1000,
'skip_min_cols' => 2,
'skip_max_cols' => 20
],
'select_header' => [
'skip' => true,
'help' => 'Select header row',
'default_row' => '2',
'encoding_option' => true,
'encoding' => 'windows-1252',
'row_column_switch' => false
],
'map_columns' => [
'skip' => true,
'help' => 'Map columns',
'mapping_mode' => 'template_fields',
'bulk_cols_dd' => false,
'accept_unmapped' => true,
'accept_unmapped_select' => true,
'allow_zero_template' => true,
'ignore_cols' => true,
'ignore_cols_default' => true,
'user_keywords' => false
],
'verify_data' => [
'skip' => true,
'help' => 'Verify data',
'row_display_mode' => 'invalid',
'export_option' => true,
'search_option' => false,
'ai_transform' => true,
'allow_new_rows' => false,
'rows_display' => 25,
'allow_invalid' => true,
'invalid_confirmation' => false,
'max_rows' => 600,
'allow_upload_if_max' => false,
'max_rows_msg' => 'maaaaaax',
'min_rows' => 2,
'min_rows_msg' => 'miiiiin'
],
'results' => [
'close_mode' => 'close_on_success',
'redirect_url' => '',
'success_type' => 'static',
'success_text' => 'Import successful',
'success_method' => 'get',
'success_url' => '',
'success_headers' => [
[
'key' => 'Content-Type',
'value' => 'application/json'
]
],
'failed_type' => 'static',
'failed_text' => 'Failure',
'failed_method' => 'get',
'failed_url' => '',
'failed_headers' => [
[
'key' => 'Content-Type',
'value' => 'application/json'
]
],
'show_resubmit' => false,
'show_error_text' => false
]
],
'security_settings' => [
'region' => 'us',
'domains' => [
'example.com'
],
'import_url_upload' => true,
's3_upload' => true
],
'virtual_columns' => [
[
'column_name' => 'full_name',
'js_code' => 'const a = csvbox.row[\'col1\'] || \'\'; const b = csvbox.row[\'col2\'] || \'\'; return (a + \' \' + b).trim();',
'active' => true,
'dependencies' => [
],
'_delete' => false
]
],
'validation_functions' => [
[
'function_name' => 'check_email',
'scope' => 'column',
'columns' => [
'col4'
],
'js_code' => 'const rows = csvbox.column[\'col4\'] || []; const errs = []; for (let i = 0; i < rows.length; i++) { if (String(rows[i]).indexOf(\'@\') === -1) { errs.push({ row_id: i + 1, column: \'col4\', message: \'Not a valid email\' }); } } return errs;',
'active' => true
],
[
'function_name' => 'check_date',
'scope' => 'column',
'columns' => [
'col5'
],
'js_code' => 'const rows = csvbox.column[\'col5\'] || []; const errs = []; const today = dayjs(); for (let i = 0; i < rows.length; i++) { const raw = String(rows[i] || \'\').trim(); if (raw === \'\') { continue; } const d = dayjs(raw); if (!d.isValid() || d.format(\'YYYY-MM-DD\') !== raw) { errs.push({ row_id: i + 1, column: \'col5\', message: \'Use YYYY-MM-DD, e.g. 2024-01-31\' }); } else if (d.isAfter(today)) { errs.push({ row_id: i + 1, column: \'col5\', message: \'Date cannot be in the future\' }); } else if (d.year() < 1900) { errs.push({ row_id: i + 1, column: \'col5\', message: \'Date must be 1900 or later\' }); } } return errs;',
'dependencies' => [
[
'url' => 'https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js',
'globals' => [
'dayjs'
]
]
],
'active' => true
]
],
'data_transforms' => [
[
'transform_name' => 'uppercase_country',
'scope' => 'column',
'run_at' => 'before_validation',
'columns' => [
'col1'
],
'dynamic_columns' => [
'region'
],
'js_code' => 'for (let i = 0; i < csvbox.column[\'col1\'].length; i++) { csvbox.column[\'col1\'][i] = String(csvbox.column[\'col1\'][i]).toUpperCase(); } return csvbox;',
'active' => true,
'dependencies' => [
],
'_delete' => false
]
],
'pdf_metadata_config' => [
[
'name' => 'Author',
'source' => 'native'
],
[
'name' => 'Invoice Number',
'source' => 'document-kv'
],
[
'name' => 'processed_by',
'source' => 'static',
'value' => 'AP Team'
],
[
'name' => 'invoice_date',
'source' => 'line-match',
'value' => 'Invoice Date:'
]
]
]),
CURLOPT_HTTPHEADER => [
"Accept: <accept>",
"Content-Type: <content-type>",
"x-csvbox-api-key: <api-key>",
"x-csvbox-secret-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.csvbox.io/1.1/sheet"
payload := strings.NewReader("{\n \"title\": \"Customer Import\",\n \"webhooks\": [\n {\n \"import_complete\": {\n \"url\": \"https://example.com/webhook\",\n \"send_copy\": false,\n \"custom_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ]\n }\n }\n ],\n \"destinations\": [\n {\n \"type\": \"webhook\",\n \"isActive\": true,\n \"settings\": {\n \"method\": \"POST\",\n \"url\": \"https://example.com/api/import\",\n \"post_data_format\": \"JSON\",\n \"rows_per_chunk\": 100,\n \"request_type\": \"parallel\",\n \"server_side_validation\": true,\n \"allow_resubmit\": \"all_rows\",\n \"custom_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ]\n }\n }\n ],\n \"sheet_columns\": [\n {\n \"column_name\": \"col1\",\n \"display_label\": \"Col1 - Text\",\n \"info_hint\": \"What is your highest educational degree\",\n \"matching_keywords\": \"degree, education\",\n \"type\": \"text\",\n \"validators\": {\n \"min_length\": 2,\n \"max_length\": 50\n },\n \"default_value\": \"\",\n \"required\": false,\n \"position\": 5\n },\n {\n \"column_name\": \"col2\",\n \"display_label\": \"col2 - Number\",\n \"info_hint\": \"Years of work experience\",\n \"type\": \"number\",\n \"validators\": {\n \"min_value\": 1,\n \"max_value\": 100\n },\n \"required\": false,\n \"position\": 6\n },\n {\n \"column_name\": \"col4\",\n \"display_label\": \"col4 - Email\",\n \"type\": \"email\",\n \"required\": false,\n \"position\": 7\n },\n {\n \"column_name\": \"col5\",\n \"display_label\": \"col5 - Date\",\n \"type\": \"date\",\n \"required\": false,\n \"validators\": {\n \"format\": \"YYYY-MM-DD\"\n },\n \"position\": 8\n },\n {\n \"column_name\": \"col6\",\n \"display_label\": \"col6 - Time\",\n \"type\": \"time\",\n \"required\": false,\n \"validators\": {\n \"format\": \"HH:mm:ss\"\n }\n },\n {\n \"column_name\": \"col7\",\n \"display_label\": \"col7 - Boolean\",\n \"type\": \"boolean\",\n \"required\": false\n },\n {\n \"column_name\": \"col8\",\n \"display_label\": \"col8 - Regex\",\n \"type\": \"regex\",\n \"required\": false,\n \"validators\": {\n \"expression\": \"^\\\\d{10}$\",\n \"error_message\": \"Please enter a valid 10 digit phone number\"\n }\n },\n {\n \"column_name\": \"col9\",\n \"display_label\": \"col9 - IP\",\n \"type\": \"ip\",\n \"required\": false,\n \"validators\": {\n \"version\": \"ipv4\"\n }\n },\n {\n \"column_name\": \"col10\",\n \"display_label\": \"col10 - URL\",\n \"type\": \"url\",\n \"required\": false\n },\n {\n \"column_name\": \"col11\",\n \"display_label\": \"col11 - Credit Card\",\n \"type\": \"credit_card\",\n \"required\": false\n },\n {\n \"column_name\": \"col12\",\n \"display_label\": \"col12 - Phone Number\",\n \"type\": \"phone_number\",\n \"required\": false,\n \"validators\": {\n \"country_code\": \"IN\"\n }\n },\n {\n \"column_name\": \"col13\",\n \"display_label\": \"col13 - Currency\",\n \"type\": \"currency\",\n \"required\": false,\n \"validators\": {\n \"symbol\": \"$\",\n \"require_symbol\": false\n }\n },\n {\n \"column_name\": \"col14\",\n \"display_label\": \"col14 - List\",\n \"type\": \"list\",\n \"required\": false,\n \"validators\": {\n \"values\": [\n {\n \"value\": \"ind\",\n \"display_label\": \"India\",\n \"dependents\": [\n {\n \"value\": \"mh\",\n \"display_label\": \"Maharashtra\",\n \"dependents\": [\n {\n \"value\": \"mum\",\n \"display_label\": \"Mumbai\"\n },\n {\n \"value\": \"pun\",\n \"display_label\": \"Pune\"\n }\n ]\n },\n {\n \"value\": \"gj\",\n \"display_label\": \"Gujarat\",\n \"dependents\": [\n {\n \"value\": \"amd\",\n \"display_label\": \"Ahmedabad\"\n },\n {\n \"value\": \"sur\",\n \"display_label\": \"Surat\"\n }\n ]\n }\n ]\n },\n {\n \"value\": \"usa\",\n \"display_label\": \"United States\",\n \"dependents\": [\n {\n \"value\": \"ca\",\n \"display_label\": \"California\",\n \"dependents\": [\n {\n \"value\": \"la\",\n \"display_label\": \"Los Angeles\"\n },\n {\n \"value\": \"sf\",\n \"display_label\": \"San Francisco\"\n }\n ]\n },\n {\n \"value\": \"ny\",\n \"display_label\": \"New York\",\n \"dependents\": [\n {\n \"value\": \"nyc\",\n \"display_label\": \"New York City\"\n },\n {\n \"value\": \"buf\",\n \"display_label\": \"Buffalo\"\n }\n ]\n }\n ]\n },\n {\n \"value\": \"can\",\n \"display_label\": \"Canada\",\n \"dependents\": [\n {\n \"value\": \"on\",\n \"display_label\": \"Ontario\",\n \"dependents\": [\n {\n \"value\": \"tor\",\n \"display_label\": \"Toronto\"\n },\n {\n \"value\": \"ott\",\n \"display_label\": \"Ottawa\"\n }\n ]\n },\n {\n \"value\": \"bc\",\n \"display_label\": \"British Columbia\",\n \"dependents\": [\n {\n \"value\": \"van\",\n \"display_label\": \"Vancouver\"\n },\n {\n \"value\": \"vic\",\n \"display_label\": \"Victoria\"\n }\n ]\n }\n ]\n }\n ],\n \"case_sensitive\": false\n }\n },\n {\n \"column_name\": \"col15\",\n \"display_label\": \"col15 - Dependent List\",\n \"type\": \"dependent_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col14\"\n }\n },\n {\n \"column_name\": \"col16\",\n \"display_label\": \"col16 - Dependent List\",\n \"type\": \"dependent_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col15\"\n }\n },\n {\n \"column_name\": \"col17\",\n \"display_label\": \"col17 - Dynamic List\",\n \"type\": \"dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"source_url\": \"https://example.com/api/dynamic-list-options\",\n \"request_method\": \"GET\",\n \"request_headers\": [],\n \"custom_user_attributes\": true,\n \"other_values\": false\n }\n },\n {\n \"column_name\": \"col18\",\n \"display_label\": \"col18 - Dependent Dynamic List\",\n \"type\": \"dependent_dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col17\"\n }\n },\n {\n \"column_name\": \"col19\",\n \"display_label\": \"col19 - Dependent Dynamic List\",\n \"type\": \"dependent_dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col18\"\n }\n },\n {\n \"column_name\": \"col20\",\n \"display_label\": \"col20 - Multiselect List\",\n \"type\": \"multiselect_list\",\n \"required\": false,\n \"validators\": {\n \"values\": [\n \"Red\",\n \"Green\",\n \"Blue\",\n \"orange\",\n \"yellow\",\n \"black\"\n ],\n \"delimiter\": \",\",\n \"case_sensitive\": false,\n \"other_values\": false\n }\n },\n {\n \"column_name\": \"col21\",\n \"display_label\": \"col21 - Multiselect Dynamic List\",\n \"type\": \"multiselect_dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"dml_source_url\": \"https://example.com/api/multiselect-dynamic-options\",\n \"dml_request_method\": \"GET\",\n \"dml_request_headers\": [],\n \"delimiter\": \",\",\n \"dml_other_values\": false\n }\n },\n {\n \"column_name\": \"col22\",\n \"display_label\": \"col22 - Percentage\",\n \"type\": \"percentage\",\n \"required\": false,\n \"validators\": {\n \"min_value\": 0,\n \"max_value\": 100,\n \"output\": \"percent\"\n }\n },\n {\n \"column_name\": \"col23\",\n \"display_label\": \"col23 - UUID\",\n \"type\": \"uuid\",\n \"required\": false\n },\n {\n \"column_name\": \"col24\",\n \"display_label\": \"col24 - JSON\",\n \"type\": \"json\",\n \"required\": false\n }\n ],\n \"steps\": {\n \"file_upload\": {\n \"types\": [\n \".csv\"\n ],\n \"title\": \"File Upload\",\n \"help\": \"Upload your CSV file\",\n \"sample_file_url\": \"\",\n \"size_mb\": 200,\n \"validation_msg\": \"upto 200mb allowed\",\n \"copy_paste\": true,\n \"copy_delimiter\": \"comma\",\n \"show_upload\": true,\n \"worksheet_select\": true,\n \"description_option\": true,\n \"lang\": \"en\",\n \"excel_date_format\": \"custom\",\n \"excel_date_custom\": \"DD-MM-YYYY\",\n \"hide_cancel\": false,\n \"split\": true,\n \"split_rows\": 1000,\n \"split_confirm\": \"no\",\n \"extract_types\": [\n \"pdf\",\n \"images\"\n ],\n \"page_limit\": 10,\n \"accept_raw_value\": false,\n \"skip_min_rows\": 2,\n \"skip_max_rows\": 1000,\n \"skip_min_cols\": 2,\n \"skip_max_cols\": 20\n },\n \"select_header\": {\n \"skip\": true,\n \"help\": \"Select header row\",\n \"default_row\": \"2\",\n \"encoding_option\": true,\n \"encoding\": \"windows-1252\",\n \"row_column_switch\": false\n },\n \"map_columns\": {\n \"skip\": true,\n \"help\": \"Map columns\",\n \"mapping_mode\": \"template_fields\",\n \"bulk_cols_dd\": false,\n \"accept_unmapped\": true,\n \"accept_unmapped_select\": true,\n \"allow_zero_template\": true,\n \"ignore_cols\": true,\n \"ignore_cols_default\": true,\n \"user_keywords\": false\n },\n \"verify_data\": {\n \"skip\": true,\n \"help\": \"Verify data\",\n \"row_display_mode\": \"invalid\",\n \"export_option\": true,\n \"search_option\": false,\n \"ai_transform\": true,\n \"allow_new_rows\": false,\n \"rows_display\": 25,\n \"allow_invalid\": true,\n \"invalid_confirmation\": false,\n \"max_rows\": 600,\n \"allow_upload_if_max\": false,\n \"max_rows_msg\": \"maaaaaax\",\n \"min_rows\": 2,\n \"min_rows_msg\": \"miiiiin\"\n },\n \"results\": {\n \"close_mode\": \"close_on_success\",\n \"redirect_url\": \"\",\n \"success_type\": \"static\",\n \"success_text\": \"Import successful\",\n \"success_method\": \"get\",\n \"success_url\": \"\",\n \"success_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ],\n \"failed_type\": \"static\",\n \"failed_text\": \"Failure\",\n \"failed_method\": \"get\",\n \"failed_url\": \"\",\n \"failed_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ],\n \"show_resubmit\": false,\n \"show_error_text\": false\n }\n },\n \"security_settings\": {\n \"region\": \"us\",\n \"domains\": [\n \"example.com\"\n ],\n \"import_url_upload\": true,\n \"s3_upload\": true\n },\n \"virtual_columns\": [\n {\n \"column_name\": \"full_name\",\n \"js_code\": \"const a = csvbox.row['col1'] || ''; const b = csvbox.row['col2'] || ''; return (a + ' ' + b).trim();\",\n \"active\": true,\n \"dependencies\": [],\n \"_delete\": false\n }\n ],\n \"validation_functions\": [\n {\n \"function_name\": \"check_email\",\n \"scope\": \"column\",\n \"columns\": [\n \"col4\"\n ],\n \"js_code\": \"const rows = csvbox.column['col4'] || []; const errs = []; for (let i = 0; i < rows.length; i++) { if (String(rows[i]).indexOf('@') === -1) { errs.push({ row_id: i + 1, column: 'col4', message: 'Not a valid email' }); } } return errs;\",\n \"active\": true\n },\n {\n \"function_name\": \"check_date\",\n \"scope\": \"column\",\n \"columns\": [\n \"col5\"\n ],\n \"js_code\": \"const rows = csvbox.column['col5'] || []; const errs = []; const today = dayjs(); for (let i = 0; i < rows.length; i++) { const raw = String(rows[i] || '').trim(); if (raw === '') { continue; } const d = dayjs(raw); if (!d.isValid() || d.format('YYYY-MM-DD') !== raw) { errs.push({ row_id: i + 1, column: 'col5', message: 'Use YYYY-MM-DD, e.g. 2024-01-31' }); } else if (d.isAfter(today)) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date cannot be in the future' }); } else if (d.year() < 1900) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date must be 1900 or later' }); } } return errs;\",\n \"dependencies\": [\n {\n \"url\": \"https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js\",\n \"globals\": [\n \"dayjs\"\n ]\n }\n ],\n \"active\": true\n }\n ],\n \"data_transforms\": [\n {\n \"transform_name\": \"uppercase_country\",\n \"scope\": \"column\",\n \"run_at\": \"before_validation\",\n \"columns\": [\n \"col1\"\n ],\n \"dynamic_columns\": [\n \"region\"\n ],\n \"js_code\": \"for (let i = 0; i < csvbox.column['col1'].length; i++) { csvbox.column['col1'][i] = String(csvbox.column['col1'][i]).toUpperCase(); } return csvbox;\",\n \"active\": true,\n \"dependencies\": [],\n \"_delete\": false\n }\n ],\n \"pdf_metadata_config\": [\n {\n \"name\": \"Author\",\n \"source\": \"native\"\n },\n {\n \"name\": \"Invoice Number\",\n \"source\": \"document-kv\"\n },\n {\n \"name\": \"processed_by\",\n \"source\": \"static\",\n \"value\": \"AP Team\"\n },\n {\n \"name\": \"invoice_date\",\n \"source\": \"line-match\",\n \"value\": \"Invoice Date:\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Accept", "<accept>")
req.Header.Add("Content-Type", "<content-type>")
req.Header.Add("x-csvbox-api-key", "<api-key>")
req.Header.Add("x-csvbox-secret-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.csvbox.io/1.1/sheet")
.header("Accept", "<accept>")
.header("Content-Type", "<content-type>")
.header("x-csvbox-api-key", "<api-key>")
.header("x-csvbox-secret-api-key", "<api-key>")
.body("{\n \"title\": \"Customer Import\",\n \"webhooks\": [\n {\n \"import_complete\": {\n \"url\": \"https://example.com/webhook\",\n \"send_copy\": false,\n \"custom_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ]\n }\n }\n ],\n \"destinations\": [\n {\n \"type\": \"webhook\",\n \"isActive\": true,\n \"settings\": {\n \"method\": \"POST\",\n \"url\": \"https://example.com/api/import\",\n \"post_data_format\": \"JSON\",\n \"rows_per_chunk\": 100,\n \"request_type\": \"parallel\",\n \"server_side_validation\": true,\n \"allow_resubmit\": \"all_rows\",\n \"custom_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ]\n }\n }\n ],\n \"sheet_columns\": [\n {\n \"column_name\": \"col1\",\n \"display_label\": \"Col1 - Text\",\n \"info_hint\": \"What is your highest educational degree\",\n \"matching_keywords\": \"degree, education\",\n \"type\": \"text\",\n \"validators\": {\n \"min_length\": 2,\n \"max_length\": 50\n },\n \"default_value\": \"\",\n \"required\": false,\n \"position\": 5\n },\n {\n \"column_name\": \"col2\",\n \"display_label\": \"col2 - Number\",\n \"info_hint\": \"Years of work experience\",\n \"type\": \"number\",\n \"validators\": {\n \"min_value\": 1,\n \"max_value\": 100\n },\n \"required\": false,\n \"position\": 6\n },\n {\n \"column_name\": \"col4\",\n \"display_label\": \"col4 - Email\",\n \"type\": \"email\",\n \"required\": false,\n \"position\": 7\n },\n {\n \"column_name\": \"col5\",\n \"display_label\": \"col5 - Date\",\n \"type\": \"date\",\n \"required\": false,\n \"validators\": {\n \"format\": \"YYYY-MM-DD\"\n },\n \"position\": 8\n },\n {\n \"column_name\": \"col6\",\n \"display_label\": \"col6 - Time\",\n \"type\": \"time\",\n \"required\": false,\n \"validators\": {\n \"format\": \"HH:mm:ss\"\n }\n },\n {\n \"column_name\": \"col7\",\n \"display_label\": \"col7 - Boolean\",\n \"type\": \"boolean\",\n \"required\": false\n },\n {\n \"column_name\": \"col8\",\n \"display_label\": \"col8 - Regex\",\n \"type\": \"regex\",\n \"required\": false,\n \"validators\": {\n \"expression\": \"^\\\\d{10}$\",\n \"error_message\": \"Please enter a valid 10 digit phone number\"\n }\n },\n {\n \"column_name\": \"col9\",\n \"display_label\": \"col9 - IP\",\n \"type\": \"ip\",\n \"required\": false,\n \"validators\": {\n \"version\": \"ipv4\"\n }\n },\n {\n \"column_name\": \"col10\",\n \"display_label\": \"col10 - URL\",\n \"type\": \"url\",\n \"required\": false\n },\n {\n \"column_name\": \"col11\",\n \"display_label\": \"col11 - Credit Card\",\n \"type\": \"credit_card\",\n \"required\": false\n },\n {\n \"column_name\": \"col12\",\n \"display_label\": \"col12 - Phone Number\",\n \"type\": \"phone_number\",\n \"required\": false,\n \"validators\": {\n \"country_code\": \"IN\"\n }\n },\n {\n \"column_name\": \"col13\",\n \"display_label\": \"col13 - Currency\",\n \"type\": \"currency\",\n \"required\": false,\n \"validators\": {\n \"symbol\": \"$\",\n \"require_symbol\": false\n }\n },\n {\n \"column_name\": \"col14\",\n \"display_label\": \"col14 - List\",\n \"type\": \"list\",\n \"required\": false,\n \"validators\": {\n \"values\": [\n {\n \"value\": \"ind\",\n \"display_label\": \"India\",\n \"dependents\": [\n {\n \"value\": \"mh\",\n \"display_label\": \"Maharashtra\",\n \"dependents\": [\n {\n \"value\": \"mum\",\n \"display_label\": \"Mumbai\"\n },\n {\n \"value\": \"pun\",\n \"display_label\": \"Pune\"\n }\n ]\n },\n {\n \"value\": \"gj\",\n \"display_label\": \"Gujarat\",\n \"dependents\": [\n {\n \"value\": \"amd\",\n \"display_label\": \"Ahmedabad\"\n },\n {\n \"value\": \"sur\",\n \"display_label\": \"Surat\"\n }\n ]\n }\n ]\n },\n {\n \"value\": \"usa\",\n \"display_label\": \"United States\",\n \"dependents\": [\n {\n \"value\": \"ca\",\n \"display_label\": \"California\",\n \"dependents\": [\n {\n \"value\": \"la\",\n \"display_label\": \"Los Angeles\"\n },\n {\n \"value\": \"sf\",\n \"display_label\": \"San Francisco\"\n }\n ]\n },\n {\n \"value\": \"ny\",\n \"display_label\": \"New York\",\n \"dependents\": [\n {\n \"value\": \"nyc\",\n \"display_label\": \"New York City\"\n },\n {\n \"value\": \"buf\",\n \"display_label\": \"Buffalo\"\n }\n ]\n }\n ]\n },\n {\n \"value\": \"can\",\n \"display_label\": \"Canada\",\n \"dependents\": [\n {\n \"value\": \"on\",\n \"display_label\": \"Ontario\",\n \"dependents\": [\n {\n \"value\": \"tor\",\n \"display_label\": \"Toronto\"\n },\n {\n \"value\": \"ott\",\n \"display_label\": \"Ottawa\"\n }\n ]\n },\n {\n \"value\": \"bc\",\n \"display_label\": \"British Columbia\",\n \"dependents\": [\n {\n \"value\": \"van\",\n \"display_label\": \"Vancouver\"\n },\n {\n \"value\": \"vic\",\n \"display_label\": \"Victoria\"\n }\n ]\n }\n ]\n }\n ],\n \"case_sensitive\": false\n }\n },\n {\n \"column_name\": \"col15\",\n \"display_label\": \"col15 - Dependent List\",\n \"type\": \"dependent_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col14\"\n }\n },\n {\n \"column_name\": \"col16\",\n \"display_label\": \"col16 - Dependent List\",\n \"type\": \"dependent_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col15\"\n }\n },\n {\n \"column_name\": \"col17\",\n \"display_label\": \"col17 - Dynamic List\",\n \"type\": \"dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"source_url\": \"https://example.com/api/dynamic-list-options\",\n \"request_method\": \"GET\",\n \"request_headers\": [],\n \"custom_user_attributes\": true,\n \"other_values\": false\n }\n },\n {\n \"column_name\": \"col18\",\n \"display_label\": \"col18 - Dependent Dynamic List\",\n \"type\": \"dependent_dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col17\"\n }\n },\n {\n \"column_name\": \"col19\",\n \"display_label\": \"col19 - Dependent Dynamic List\",\n \"type\": \"dependent_dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col18\"\n }\n },\n {\n \"column_name\": \"col20\",\n \"display_label\": \"col20 - Multiselect List\",\n \"type\": \"multiselect_list\",\n \"required\": false,\n \"validators\": {\n \"values\": [\n \"Red\",\n \"Green\",\n \"Blue\",\n \"orange\",\n \"yellow\",\n \"black\"\n ],\n \"delimiter\": \",\",\n \"case_sensitive\": false,\n \"other_values\": false\n }\n },\n {\n \"column_name\": \"col21\",\n \"display_label\": \"col21 - Multiselect Dynamic List\",\n \"type\": \"multiselect_dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"dml_source_url\": \"https://example.com/api/multiselect-dynamic-options\",\n \"dml_request_method\": \"GET\",\n \"dml_request_headers\": [],\n \"delimiter\": \",\",\n \"dml_other_values\": false\n }\n },\n {\n \"column_name\": \"col22\",\n \"display_label\": \"col22 - Percentage\",\n \"type\": \"percentage\",\n \"required\": false,\n \"validators\": {\n \"min_value\": 0,\n \"max_value\": 100,\n \"output\": \"percent\"\n }\n },\n {\n \"column_name\": \"col23\",\n \"display_label\": \"col23 - UUID\",\n \"type\": \"uuid\",\n \"required\": false\n },\n {\n \"column_name\": \"col24\",\n \"display_label\": \"col24 - JSON\",\n \"type\": \"json\",\n \"required\": false\n }\n ],\n \"steps\": {\n \"file_upload\": {\n \"types\": [\n \".csv\"\n ],\n \"title\": \"File Upload\",\n \"help\": \"Upload your CSV file\",\n \"sample_file_url\": \"\",\n \"size_mb\": 200,\n \"validation_msg\": \"upto 200mb allowed\",\n \"copy_paste\": true,\n \"copy_delimiter\": \"comma\",\n \"show_upload\": true,\n \"worksheet_select\": true,\n \"description_option\": true,\n \"lang\": \"en\",\n \"excel_date_format\": \"custom\",\n \"excel_date_custom\": \"DD-MM-YYYY\",\n \"hide_cancel\": false,\n \"split\": true,\n \"split_rows\": 1000,\n \"split_confirm\": \"no\",\n \"extract_types\": [\n \"pdf\",\n \"images\"\n ],\n \"page_limit\": 10,\n \"accept_raw_value\": false,\n \"skip_min_rows\": 2,\n \"skip_max_rows\": 1000,\n \"skip_min_cols\": 2,\n \"skip_max_cols\": 20\n },\n \"select_header\": {\n \"skip\": true,\n \"help\": \"Select header row\",\n \"default_row\": \"2\",\n \"encoding_option\": true,\n \"encoding\": \"windows-1252\",\n \"row_column_switch\": false\n },\n \"map_columns\": {\n \"skip\": true,\n \"help\": \"Map columns\",\n \"mapping_mode\": \"template_fields\",\n \"bulk_cols_dd\": false,\n \"accept_unmapped\": true,\n \"accept_unmapped_select\": true,\n \"allow_zero_template\": true,\n \"ignore_cols\": true,\n \"ignore_cols_default\": true,\n \"user_keywords\": false\n },\n \"verify_data\": {\n \"skip\": true,\n \"help\": \"Verify data\",\n \"row_display_mode\": \"invalid\",\n \"export_option\": true,\n \"search_option\": false,\n \"ai_transform\": true,\n \"allow_new_rows\": false,\n \"rows_display\": 25,\n \"allow_invalid\": true,\n \"invalid_confirmation\": false,\n \"max_rows\": 600,\n \"allow_upload_if_max\": false,\n \"max_rows_msg\": \"maaaaaax\",\n \"min_rows\": 2,\n \"min_rows_msg\": \"miiiiin\"\n },\n \"results\": {\n \"close_mode\": \"close_on_success\",\n \"redirect_url\": \"\",\n \"success_type\": \"static\",\n \"success_text\": \"Import successful\",\n \"success_method\": \"get\",\n \"success_url\": \"\",\n \"success_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ],\n \"failed_type\": \"static\",\n \"failed_text\": \"Failure\",\n \"failed_method\": \"get\",\n \"failed_url\": \"\",\n \"failed_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ],\n \"show_resubmit\": false,\n \"show_error_text\": false\n }\n },\n \"security_settings\": {\n \"region\": \"us\",\n \"domains\": [\n \"example.com\"\n ],\n \"import_url_upload\": true,\n \"s3_upload\": true\n },\n \"virtual_columns\": [\n {\n \"column_name\": \"full_name\",\n \"js_code\": \"const a = csvbox.row['col1'] || ''; const b = csvbox.row['col2'] || ''; return (a + ' ' + b).trim();\",\n \"active\": true,\n \"dependencies\": [],\n \"_delete\": false\n }\n ],\n \"validation_functions\": [\n {\n \"function_name\": \"check_email\",\n \"scope\": \"column\",\n \"columns\": [\n \"col4\"\n ],\n \"js_code\": \"const rows = csvbox.column['col4'] || []; const errs = []; for (let i = 0; i < rows.length; i++) { if (String(rows[i]).indexOf('@') === -1) { errs.push({ row_id: i + 1, column: 'col4', message: 'Not a valid email' }); } } return errs;\",\n \"active\": true\n },\n {\n \"function_name\": \"check_date\",\n \"scope\": \"column\",\n \"columns\": [\n \"col5\"\n ],\n \"js_code\": \"const rows = csvbox.column['col5'] || []; const errs = []; const today = dayjs(); for (let i = 0; i < rows.length; i++) { const raw = String(rows[i] || '').trim(); if (raw === '') { continue; } const d = dayjs(raw); if (!d.isValid() || d.format('YYYY-MM-DD') !== raw) { errs.push({ row_id: i + 1, column: 'col5', message: 'Use YYYY-MM-DD, e.g. 2024-01-31' }); } else if (d.isAfter(today)) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date cannot be in the future' }); } else if (d.year() < 1900) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date must be 1900 or later' }); } } return errs;\",\n \"dependencies\": [\n {\n \"url\": \"https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js\",\n \"globals\": [\n \"dayjs\"\n ]\n }\n ],\n \"active\": true\n }\n ],\n \"data_transforms\": [\n {\n \"transform_name\": \"uppercase_country\",\n \"scope\": \"column\",\n \"run_at\": \"before_validation\",\n \"columns\": [\n \"col1\"\n ],\n \"dynamic_columns\": [\n \"region\"\n ],\n \"js_code\": \"for (let i = 0; i < csvbox.column['col1'].length; i++) { csvbox.column['col1'][i] = String(csvbox.column['col1'][i]).toUpperCase(); } return csvbox;\",\n \"active\": true,\n \"dependencies\": [],\n \"_delete\": false\n }\n ],\n \"pdf_metadata_config\": [\n {\n \"name\": \"Author\",\n \"source\": \"native\"\n },\n {\n \"name\": \"Invoice Number\",\n \"source\": \"document-kv\"\n },\n {\n \"name\": \"processed_by\",\n \"source\": \"static\",\n \"value\": \"AP Team\"\n },\n {\n \"name\": \"invoice_date\",\n \"source\": \"line-match\",\n \"value\": \"Invoice Date:\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.csvbox.io/1.1/sheet")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Accept"] = '<accept>'
request["Content-Type"] = '<content-type>'
request["x-csvbox-api-key"] = '<api-key>'
request["x-csvbox-secret-api-key"] = '<api-key>'
request.body = "{\n \"title\": \"Customer Import\",\n \"webhooks\": [\n {\n \"import_complete\": {\n \"url\": \"https://example.com/webhook\",\n \"send_copy\": false,\n \"custom_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ]\n }\n }\n ],\n \"destinations\": [\n {\n \"type\": \"webhook\",\n \"isActive\": true,\n \"settings\": {\n \"method\": \"POST\",\n \"url\": \"https://example.com/api/import\",\n \"post_data_format\": \"JSON\",\n \"rows_per_chunk\": 100,\n \"request_type\": \"parallel\",\n \"server_side_validation\": true,\n \"allow_resubmit\": \"all_rows\",\n \"custom_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ]\n }\n }\n ],\n \"sheet_columns\": [\n {\n \"column_name\": \"col1\",\n \"display_label\": \"Col1 - Text\",\n \"info_hint\": \"What is your highest educational degree\",\n \"matching_keywords\": \"degree, education\",\n \"type\": \"text\",\n \"validators\": {\n \"min_length\": 2,\n \"max_length\": 50\n },\n \"default_value\": \"\",\n \"required\": false,\n \"position\": 5\n },\n {\n \"column_name\": \"col2\",\n \"display_label\": \"col2 - Number\",\n \"info_hint\": \"Years of work experience\",\n \"type\": \"number\",\n \"validators\": {\n \"min_value\": 1,\n \"max_value\": 100\n },\n \"required\": false,\n \"position\": 6\n },\n {\n \"column_name\": \"col4\",\n \"display_label\": \"col4 - Email\",\n \"type\": \"email\",\n \"required\": false,\n \"position\": 7\n },\n {\n \"column_name\": \"col5\",\n \"display_label\": \"col5 - Date\",\n \"type\": \"date\",\n \"required\": false,\n \"validators\": {\n \"format\": \"YYYY-MM-DD\"\n },\n \"position\": 8\n },\n {\n \"column_name\": \"col6\",\n \"display_label\": \"col6 - Time\",\n \"type\": \"time\",\n \"required\": false,\n \"validators\": {\n \"format\": \"HH:mm:ss\"\n }\n },\n {\n \"column_name\": \"col7\",\n \"display_label\": \"col7 - Boolean\",\n \"type\": \"boolean\",\n \"required\": false\n },\n {\n \"column_name\": \"col8\",\n \"display_label\": \"col8 - Regex\",\n \"type\": \"regex\",\n \"required\": false,\n \"validators\": {\n \"expression\": \"^\\\\d{10}$\",\n \"error_message\": \"Please enter a valid 10 digit phone number\"\n }\n },\n {\n \"column_name\": \"col9\",\n \"display_label\": \"col9 - IP\",\n \"type\": \"ip\",\n \"required\": false,\n \"validators\": {\n \"version\": \"ipv4\"\n }\n },\n {\n \"column_name\": \"col10\",\n \"display_label\": \"col10 - URL\",\n \"type\": \"url\",\n \"required\": false\n },\n {\n \"column_name\": \"col11\",\n \"display_label\": \"col11 - Credit Card\",\n \"type\": \"credit_card\",\n \"required\": false\n },\n {\n \"column_name\": \"col12\",\n \"display_label\": \"col12 - Phone Number\",\n \"type\": \"phone_number\",\n \"required\": false,\n \"validators\": {\n \"country_code\": \"IN\"\n }\n },\n {\n \"column_name\": \"col13\",\n \"display_label\": \"col13 - Currency\",\n \"type\": \"currency\",\n \"required\": false,\n \"validators\": {\n \"symbol\": \"$\",\n \"require_symbol\": false\n }\n },\n {\n \"column_name\": \"col14\",\n \"display_label\": \"col14 - List\",\n \"type\": \"list\",\n \"required\": false,\n \"validators\": {\n \"values\": [\n {\n \"value\": \"ind\",\n \"display_label\": \"India\",\n \"dependents\": [\n {\n \"value\": \"mh\",\n \"display_label\": \"Maharashtra\",\n \"dependents\": [\n {\n \"value\": \"mum\",\n \"display_label\": \"Mumbai\"\n },\n {\n \"value\": \"pun\",\n \"display_label\": \"Pune\"\n }\n ]\n },\n {\n \"value\": \"gj\",\n \"display_label\": \"Gujarat\",\n \"dependents\": [\n {\n \"value\": \"amd\",\n \"display_label\": \"Ahmedabad\"\n },\n {\n \"value\": \"sur\",\n \"display_label\": \"Surat\"\n }\n ]\n }\n ]\n },\n {\n \"value\": \"usa\",\n \"display_label\": \"United States\",\n \"dependents\": [\n {\n \"value\": \"ca\",\n \"display_label\": \"California\",\n \"dependents\": [\n {\n \"value\": \"la\",\n \"display_label\": \"Los Angeles\"\n },\n {\n \"value\": \"sf\",\n \"display_label\": \"San Francisco\"\n }\n ]\n },\n {\n \"value\": \"ny\",\n \"display_label\": \"New York\",\n \"dependents\": [\n {\n \"value\": \"nyc\",\n \"display_label\": \"New York City\"\n },\n {\n \"value\": \"buf\",\n \"display_label\": \"Buffalo\"\n }\n ]\n }\n ]\n },\n {\n \"value\": \"can\",\n \"display_label\": \"Canada\",\n \"dependents\": [\n {\n \"value\": \"on\",\n \"display_label\": \"Ontario\",\n \"dependents\": [\n {\n \"value\": \"tor\",\n \"display_label\": \"Toronto\"\n },\n {\n \"value\": \"ott\",\n \"display_label\": \"Ottawa\"\n }\n ]\n },\n {\n \"value\": \"bc\",\n \"display_label\": \"British Columbia\",\n \"dependents\": [\n {\n \"value\": \"van\",\n \"display_label\": \"Vancouver\"\n },\n {\n \"value\": \"vic\",\n \"display_label\": \"Victoria\"\n }\n ]\n }\n ]\n }\n ],\n \"case_sensitive\": false\n }\n },\n {\n \"column_name\": \"col15\",\n \"display_label\": \"col15 - Dependent List\",\n \"type\": \"dependent_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col14\"\n }\n },\n {\n \"column_name\": \"col16\",\n \"display_label\": \"col16 - Dependent List\",\n \"type\": \"dependent_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col15\"\n }\n },\n {\n \"column_name\": \"col17\",\n \"display_label\": \"col17 - Dynamic List\",\n \"type\": \"dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"source_url\": \"https://example.com/api/dynamic-list-options\",\n \"request_method\": \"GET\",\n \"request_headers\": [],\n \"custom_user_attributes\": true,\n \"other_values\": false\n }\n },\n {\n \"column_name\": \"col18\",\n \"display_label\": \"col18 - Dependent Dynamic List\",\n \"type\": \"dependent_dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col17\"\n }\n },\n {\n \"column_name\": \"col19\",\n \"display_label\": \"col19 - Dependent Dynamic List\",\n \"type\": \"dependent_dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col18\"\n }\n },\n {\n \"column_name\": \"col20\",\n \"display_label\": \"col20 - Multiselect List\",\n \"type\": \"multiselect_list\",\n \"required\": false,\n \"validators\": {\n \"values\": [\n \"Red\",\n \"Green\",\n \"Blue\",\n \"orange\",\n \"yellow\",\n \"black\"\n ],\n \"delimiter\": \",\",\n \"case_sensitive\": false,\n \"other_values\": false\n }\n },\n {\n \"column_name\": \"col21\",\n \"display_label\": \"col21 - Multiselect Dynamic List\",\n \"type\": \"multiselect_dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"dml_source_url\": \"https://example.com/api/multiselect-dynamic-options\",\n \"dml_request_method\": \"GET\",\n \"dml_request_headers\": [],\n \"delimiter\": \",\",\n \"dml_other_values\": false\n }\n },\n {\n \"column_name\": \"col22\",\n \"display_label\": \"col22 - Percentage\",\n \"type\": \"percentage\",\n \"required\": false,\n \"validators\": {\n \"min_value\": 0,\n \"max_value\": 100,\n \"output\": \"percent\"\n }\n },\n {\n \"column_name\": \"col23\",\n \"display_label\": \"col23 - UUID\",\n \"type\": \"uuid\",\n \"required\": false\n },\n {\n \"column_name\": \"col24\",\n \"display_label\": \"col24 - JSON\",\n \"type\": \"json\",\n \"required\": false\n }\n ],\n \"steps\": {\n \"file_upload\": {\n \"types\": [\n \".csv\"\n ],\n \"title\": \"File Upload\",\n \"help\": \"Upload your CSV file\",\n \"sample_file_url\": \"\",\n \"size_mb\": 200,\n \"validation_msg\": \"upto 200mb allowed\",\n \"copy_paste\": true,\n \"copy_delimiter\": \"comma\",\n \"show_upload\": true,\n \"worksheet_select\": true,\n \"description_option\": true,\n \"lang\": \"en\",\n \"excel_date_format\": \"custom\",\n \"excel_date_custom\": \"DD-MM-YYYY\",\n \"hide_cancel\": false,\n \"split\": true,\n \"split_rows\": 1000,\n \"split_confirm\": \"no\",\n \"extract_types\": [\n \"pdf\",\n \"images\"\n ],\n \"page_limit\": 10,\n \"accept_raw_value\": false,\n \"skip_min_rows\": 2,\n \"skip_max_rows\": 1000,\n \"skip_min_cols\": 2,\n \"skip_max_cols\": 20\n },\n \"select_header\": {\n \"skip\": true,\n \"help\": \"Select header row\",\n \"default_row\": \"2\",\n \"encoding_option\": true,\n \"encoding\": \"windows-1252\",\n \"row_column_switch\": false\n },\n \"map_columns\": {\n \"skip\": true,\n \"help\": \"Map columns\",\n \"mapping_mode\": \"template_fields\",\n \"bulk_cols_dd\": false,\n \"accept_unmapped\": true,\n \"accept_unmapped_select\": true,\n \"allow_zero_template\": true,\n \"ignore_cols\": true,\n \"ignore_cols_default\": true,\n \"user_keywords\": false\n },\n \"verify_data\": {\n \"skip\": true,\n \"help\": \"Verify data\",\n \"row_display_mode\": \"invalid\",\n \"export_option\": true,\n \"search_option\": false,\n \"ai_transform\": true,\n \"allow_new_rows\": false,\n \"rows_display\": 25,\n \"allow_invalid\": true,\n \"invalid_confirmation\": false,\n \"max_rows\": 600,\n \"allow_upload_if_max\": false,\n \"max_rows_msg\": \"maaaaaax\",\n \"min_rows\": 2,\n \"min_rows_msg\": \"miiiiin\"\n },\n \"results\": {\n \"close_mode\": \"close_on_success\",\n \"redirect_url\": \"\",\n \"success_type\": \"static\",\n \"success_text\": \"Import successful\",\n \"success_method\": \"get\",\n \"success_url\": \"\",\n \"success_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ],\n \"failed_type\": \"static\",\n \"failed_text\": \"Failure\",\n \"failed_method\": \"get\",\n \"failed_url\": \"\",\n \"failed_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ],\n \"show_resubmit\": false,\n \"show_error_text\": false\n }\n },\n \"security_settings\": {\n \"region\": \"us\",\n \"domains\": [\n \"example.com\"\n ],\n \"import_url_upload\": true,\n \"s3_upload\": true\n },\n \"virtual_columns\": [\n {\n \"column_name\": \"full_name\",\n \"js_code\": \"const a = csvbox.row['col1'] || ''; const b = csvbox.row['col2'] || ''; return (a + ' ' + b).trim();\",\n \"active\": true,\n \"dependencies\": [],\n \"_delete\": false\n }\n ],\n \"validation_functions\": [\n {\n \"function_name\": \"check_email\",\n \"scope\": \"column\",\n \"columns\": [\n \"col4\"\n ],\n \"js_code\": \"const rows = csvbox.column['col4'] || []; const errs = []; for (let i = 0; i < rows.length; i++) { if (String(rows[i]).indexOf('@') === -1) { errs.push({ row_id: i + 1, column: 'col4', message: 'Not a valid email' }); } } return errs;\",\n \"active\": true\n },\n {\n \"function_name\": \"check_date\",\n \"scope\": \"column\",\n \"columns\": [\n \"col5\"\n ],\n \"js_code\": \"const rows = csvbox.column['col5'] || []; const errs = []; const today = dayjs(); for (let i = 0; i < rows.length; i++) { const raw = String(rows[i] || '').trim(); if (raw === '') { continue; } const d = dayjs(raw); if (!d.isValid() || d.format('YYYY-MM-DD') !== raw) { errs.push({ row_id: i + 1, column: 'col5', message: 'Use YYYY-MM-DD, e.g. 2024-01-31' }); } else if (d.isAfter(today)) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date cannot be in the future' }); } else if (d.year() < 1900) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date must be 1900 or later' }); } } return errs;\",\n \"dependencies\": [\n {\n \"url\": \"https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js\",\n \"globals\": [\n \"dayjs\"\n ]\n }\n ],\n \"active\": true\n }\n ],\n \"data_transforms\": [\n {\n \"transform_name\": \"uppercase_country\",\n \"scope\": \"column\",\n \"run_at\": \"before_validation\",\n \"columns\": [\n \"col1\"\n ],\n \"dynamic_columns\": [\n \"region\"\n ],\n \"js_code\": \"for (let i = 0; i < csvbox.column['col1'].length; i++) { csvbox.column['col1'][i] = String(csvbox.column['col1'][i]).toUpperCase(); } return csvbox;\",\n \"active\": true,\n \"dependencies\": [],\n \"_delete\": false\n }\n ],\n \"pdf_metadata_config\": [\n {\n \"name\": \"Author\",\n \"source\": \"native\"\n },\n {\n \"name\": \"Invoice Number\",\n \"source\": \"document-kv\"\n },\n {\n \"name\": \"processed_by\",\n \"source\": \"static\",\n \"value\": \"AP Team\"\n },\n {\n \"name\": \"invoice_date\",\n \"source\": \"line-match\",\n \"value\": \"Invoice Date:\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"status": "Sheet Created Successfully",
"data": {
"sheet_license_key": "<string>",
"title": "<string>",
"virtual_columns": [
{
"column_name": "full_name",
"result": "created"
}
],
"validation_functions": [
{
"function_name": "check_email",
"result": "updated"
}
],
"data_transforms": [
{
"transform_name": "uppercase_country",
"result": "unchanged"
}
]
}
}{
"status": "Sheet Creation Failed",
"errors": {
"virtual_columns.0.js_code": [
{
"code": "js_disallowed_global",
"message": "Disallowed global `fetch`. Snippets may only reference the `csvbox` argument, standard built-ins, and globals declared in this item's dependencies.",
"identifier": "fetch",
"line": 1,
"column": 7
}
]
}
}{
"status": "Sheet Creation Failed",
"errors": {
"virtual_columns.0.js_code": [
{
"code": "js_disallowed_global",
"message": "Disallowed global `fetch`. Snippets may only reference the `csvbox` argument, standard built-ins, and globals declared in this item's dependencies.",
"identifier": "fetch",
"line": 1,
"column": 7
}
]
}
}{
"status": "Sheet Creation Failed",
"errors": {
"virtual_columns.0.js_code": [
{
"code": "js_disallowed_global",
"message": "Disallowed global `fetch`. Snippets may only reference the `csvbox` argument, standard built-ins, and globals declared in this item's dependencies.",
"identifier": "fetch",
"line": 1,
"column": 7
}
]
}
}{
"status": "Sheet Creation Failed",
"errors": {
"virtual_columns.0.js_code": [
{
"code": "js_disallowed_global",
"message": "Disallowed global `fetch`. Snippets may only reference the `csvbox` argument, standard built-ins, and globals declared in this item's dependencies.",
"identifier": "fetch",
"line": 1,
"column": 7
}
]
}
}Create a sheet
Creates a new sheet importer.
curl --request POST \
--url https://api.csvbox.io/1.1/sheet \
--header 'Accept: <accept>' \
--header 'Content-Type: <content-type>' \
--header 'x-csvbox-api-key: <api-key>' \
--header 'x-csvbox-secret-api-key: <api-key>' \
--data @- <<EOF
{
"title": "Customer Import",
"webhooks": [
{
"import_complete": {
"url": "https://example.com/webhook",
"send_copy": false,
"custom_headers": [
{
"key": "Content-Type",
"value": "application/json"
}
]
}
}
],
"destinations": [
{
"type": "webhook",
"isActive": true,
"settings": {
"method": "POST",
"url": "https://example.com/api/import",
"post_data_format": "JSON",
"rows_per_chunk": 100,
"request_type": "parallel",
"server_side_validation": true,
"allow_resubmit": "all_rows",
"custom_headers": [
{
"key": "Content-Type",
"value": "application/json"
}
]
}
}
],
"sheet_columns": [
{
"column_name": "col1",
"display_label": "Col1 - Text",
"info_hint": "What is your highest educational degree",
"matching_keywords": "degree, education",
"type": "text",
"validators": {
"min_length": 2,
"max_length": 50
},
"default_value": "",
"required": false,
"position": 5
},
{
"column_name": "col2",
"display_label": "col2 - Number",
"info_hint": "Years of work experience",
"type": "number",
"validators": {
"min_value": 1,
"max_value": 100
},
"required": false,
"position": 6
},
{
"column_name": "col4",
"display_label": "col4 - Email",
"type": "email",
"required": false,
"position": 7
},
{
"column_name": "col5",
"display_label": "col5 - Date",
"type": "date",
"required": false,
"validators": {
"format": "YYYY-MM-DD"
},
"position": 8
},
{
"column_name": "col6",
"display_label": "col6 - Time",
"type": "time",
"required": false,
"validators": {
"format": "HH:mm:ss"
}
},
{
"column_name": "col7",
"display_label": "col7 - Boolean",
"type": "boolean",
"required": false
},
{
"column_name": "col8",
"display_label": "col8 - Regex",
"type": "regex",
"required": false,
"validators": {
"expression": "^\\d{10}$",
"error_message": "Please enter a valid 10 digit phone number"
}
},
{
"column_name": "col9",
"display_label": "col9 - IP",
"type": "ip",
"required": false,
"validators": {
"version": "ipv4"
}
},
{
"column_name": "col10",
"display_label": "col10 - URL",
"type": "url",
"required": false
},
{
"column_name": "col11",
"display_label": "col11 - Credit Card",
"type": "credit_card",
"required": false
},
{
"column_name": "col12",
"display_label": "col12 - Phone Number",
"type": "phone_number",
"required": false,
"validators": {
"country_code": "IN"
}
},
{
"column_name": "col13",
"display_label": "col13 - Currency",
"type": "currency",
"required": false,
"validators": {
"symbol": "$",
"require_symbol": false
}
},
{
"column_name": "col14",
"display_label": "col14 - List",
"type": "list",
"required": false,
"validators": {
"values": [
{
"value": "ind",
"display_label": "India",
"dependents": [
{
"value": "mh",
"display_label": "Maharashtra",
"dependents": [
{
"value": "mum",
"display_label": "Mumbai"
},
{
"value": "pun",
"display_label": "Pune"
}
]
},
{
"value": "gj",
"display_label": "Gujarat",
"dependents": [
{
"value": "amd",
"display_label": "Ahmedabad"
},
{
"value": "sur",
"display_label": "Surat"
}
]
}
]
},
{
"value": "usa",
"display_label": "United States",
"dependents": [
{
"value": "ca",
"display_label": "California",
"dependents": [
{
"value": "la",
"display_label": "Los Angeles"
},
{
"value": "sf",
"display_label": "San Francisco"
}
]
},
{
"value": "ny",
"display_label": "New York",
"dependents": [
{
"value": "nyc",
"display_label": "New York City"
},
{
"value": "buf",
"display_label": "Buffalo"
}
]
}
]
},
{
"value": "can",
"display_label": "Canada",
"dependents": [
{
"value": "on",
"display_label": "Ontario",
"dependents": [
{
"value": "tor",
"display_label": "Toronto"
},
{
"value": "ott",
"display_label": "Ottawa"
}
]
},
{
"value": "bc",
"display_label": "British Columbia",
"dependents": [
{
"value": "van",
"display_label": "Vancouver"
},
{
"value": "vic",
"display_label": "Victoria"
}
]
}
]
}
],
"case_sensitive": false
}
},
{
"column_name": "col15",
"display_label": "col15 - Dependent List",
"type": "dependent_list",
"required": false,
"validators": {
"primary_column": "col14"
}
},
{
"column_name": "col16",
"display_label": "col16 - Dependent List",
"type": "dependent_list",
"required": false,
"validators": {
"primary_column": "col15"
}
},
{
"column_name": "col17",
"display_label": "col17 - Dynamic List",
"type": "dynamic_list",
"required": false,
"validators": {
"source_url": "https://example.com/api/dynamic-list-options",
"request_method": "GET",
"request_headers": [],
"custom_user_attributes": true,
"other_values": false
}
},
{
"column_name": "col18",
"display_label": "col18 - Dependent Dynamic List",
"type": "dependent_dynamic_list",
"required": false,
"validators": {
"primary_column": "col17"
}
},
{
"column_name": "col19",
"display_label": "col19 - Dependent Dynamic List",
"type": "dependent_dynamic_list",
"required": false,
"validators": {
"primary_column": "col18"
}
},
{
"column_name": "col20",
"display_label": "col20 - Multiselect List",
"type": "multiselect_list",
"required": false,
"validators": {
"values": [
"Red",
"Green",
"Blue",
"orange",
"yellow",
"black"
],
"delimiter": ",",
"case_sensitive": false,
"other_values": false
}
},
{
"column_name": "col21",
"display_label": "col21 - Multiselect Dynamic List",
"type": "multiselect_dynamic_list",
"required": false,
"validators": {
"dml_source_url": "https://example.com/api/multiselect-dynamic-options",
"dml_request_method": "GET",
"dml_request_headers": [],
"delimiter": ",",
"dml_other_values": false
}
},
{
"column_name": "col22",
"display_label": "col22 - Percentage",
"type": "percentage",
"required": false,
"validators": {
"min_value": 0,
"max_value": 100,
"output": "percent"
}
},
{
"column_name": "col23",
"display_label": "col23 - UUID",
"type": "uuid",
"required": false
},
{
"column_name": "col24",
"display_label": "col24 - JSON",
"type": "json",
"required": false
}
],
"steps": {
"file_upload": {
"types": [
".csv"
],
"title": "File Upload",
"help": "Upload your CSV file",
"sample_file_url": "",
"size_mb": 200,
"validation_msg": "upto 200mb allowed",
"copy_paste": true,
"copy_delimiter": "comma",
"show_upload": true,
"worksheet_select": true,
"description_option": true,
"lang": "en",
"excel_date_format": "custom",
"excel_date_custom": "DD-MM-YYYY",
"hide_cancel": false,
"split": true,
"split_rows": 1000,
"split_confirm": "no",
"extract_types": [
"pdf",
"images"
],
"page_limit": 10,
"accept_raw_value": false,
"skip_min_rows": 2,
"skip_max_rows": 1000,
"skip_min_cols": 2,
"skip_max_cols": 20
},
"select_header": {
"skip": true,
"help": "Select header row",
"default_row": "2",
"encoding_option": true,
"encoding": "windows-1252",
"row_column_switch": false
},
"map_columns": {
"skip": true,
"help": "Map columns",
"mapping_mode": "template_fields",
"bulk_cols_dd": false,
"accept_unmapped": true,
"accept_unmapped_select": true,
"allow_zero_template": true,
"ignore_cols": true,
"ignore_cols_default": true,
"user_keywords": false
},
"verify_data": {
"skip": true,
"help": "Verify data",
"row_display_mode": "invalid",
"export_option": true,
"search_option": false,
"ai_transform": true,
"allow_new_rows": false,
"rows_display": 25,
"allow_invalid": true,
"invalid_confirmation": false,
"max_rows": 600,
"allow_upload_if_max": false,
"max_rows_msg": "maaaaaax",
"min_rows": 2,
"min_rows_msg": "miiiiin"
},
"results": {
"close_mode": "close_on_success",
"redirect_url": "",
"success_type": "static",
"success_text": "Import successful",
"success_method": "get",
"success_url": "",
"success_headers": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"failed_type": "static",
"failed_text": "Failure",
"failed_method": "get",
"failed_url": "",
"failed_headers": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"show_resubmit": false,
"show_error_text": false
}
},
"security_settings": {
"region": "us",
"domains": [
"example.com"
],
"import_url_upload": true,
"s3_upload": true
},
"virtual_columns": [
{
"column_name": "full_name",
"js_code": "const a = csvbox.row['col1'] || ''; const b = csvbox.row['col2'] || ''; return (a + ' ' + b).trim();",
"active": true,
"dependencies": [],
"_delete": false
}
],
"validation_functions": [
{
"function_name": "check_email",
"scope": "column",
"columns": [
"col4"
],
"js_code": "const rows = csvbox.column['col4'] || []; const errs = []; for (let i = 0; i < rows.length; i++) { if (String(rows[i]).indexOf('@') === -1) { errs.push({ row_id: i + 1, column: 'col4', message: 'Not a valid email' }); } } return errs;",
"active": true
},
{
"function_name": "check_date",
"scope": "column",
"columns": [
"col5"
],
"js_code": "const rows = csvbox.column['col5'] || []; const errs = []; const today = dayjs(); for (let i = 0; i < rows.length; i++) { const raw = String(rows[i] || '').trim(); if (raw === '') { continue; } const d = dayjs(raw); if (!d.isValid() || d.format('YYYY-MM-DD') !== raw) { errs.push({ row_id: i + 1, column: 'col5', message: 'Use YYYY-MM-DD, e.g. 2024-01-31' }); } else if (d.isAfter(today)) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date cannot be in the future' }); } else if (d.year() < 1900) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date must be 1900 or later' }); } } return errs;",
"dependencies": [
{
"url": "https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js",
"globals": [
"dayjs"
]
}
],
"active": true
}
],
"data_transforms": [
{
"transform_name": "uppercase_country",
"scope": "column",
"run_at": "before_validation",
"columns": [
"col1"
],
"dynamic_columns": [
"region"
],
"js_code": "for (let i = 0; i < csvbox.column['col1'].length; i++) { csvbox.column['col1'][i] = String(csvbox.column['col1'][i]).toUpperCase(); } return csvbox;",
"active": true,
"dependencies": [],
"_delete": false
}
],
"pdf_metadata_config": [
{
"name": "Author",
"source": "native"
},
{
"name": "Invoice Number",
"source": "document-kv"
},
{
"name": "processed_by",
"source": "static",
"value": "AP Team"
},
{
"name": "invoice_date",
"source": "line-match",
"value": "Invoice Date:"
}
]
}
EOFimport requests
url = "https://api.csvbox.io/1.1/sheet"
payload = {
"title": "Customer Import",
"webhooks": [{ "import_complete": {
"url": "https://example.com/webhook",
"send_copy": False,
"custom_headers": [
{
"key": "Content-Type",
"value": "application/json"
}
]
} }],
"destinations": [
{
"type": "webhook",
"isActive": True,
"settings": {
"method": "POST",
"url": "https://example.com/api/import",
"post_data_format": "JSON",
"rows_per_chunk": 100,
"request_type": "parallel",
"server_side_validation": True,
"allow_resubmit": "all_rows",
"custom_headers": [
{
"key": "Content-Type",
"value": "application/json"
}
]
}
}
],
"sheet_columns": [
{
"column_name": "col1",
"display_label": "Col1 - Text",
"info_hint": "What is your highest educational degree",
"matching_keywords": "degree, education",
"type": "text",
"validators": {
"min_length": 2,
"max_length": 50
},
"default_value": "",
"required": False,
"position": 5
},
{
"column_name": "col2",
"display_label": "col2 - Number",
"info_hint": "Years of work experience",
"type": "number",
"validators": {
"min_value": 1,
"max_value": 100
},
"required": False,
"position": 6
},
{
"column_name": "col4",
"display_label": "col4 - Email",
"type": "email",
"required": False,
"position": 7
},
{
"column_name": "col5",
"display_label": "col5 - Date",
"type": "date",
"required": False,
"validators": { "format": "YYYY-MM-DD" },
"position": 8
},
{
"column_name": "col6",
"display_label": "col6 - Time",
"type": "time",
"required": False,
"validators": { "format": "HH:mm:ss" }
},
{
"column_name": "col7",
"display_label": "col7 - Boolean",
"type": "boolean",
"required": False
},
{
"column_name": "col8",
"display_label": "col8 - Regex",
"type": "regex",
"required": False,
"validators": {
"expression": "^\d{10}$",
"error_message": "Please enter a valid 10 digit phone number"
}
},
{
"column_name": "col9",
"display_label": "col9 - IP",
"type": "ip",
"required": False,
"validators": { "version": "ipv4" }
},
{
"column_name": "col10",
"display_label": "col10 - URL",
"type": "url",
"required": False
},
{
"column_name": "col11",
"display_label": "col11 - Credit Card",
"type": "credit_card",
"required": False
},
{
"column_name": "col12",
"display_label": "col12 - Phone Number",
"type": "phone_number",
"required": False,
"validators": { "country_code": "IN" }
},
{
"column_name": "col13",
"display_label": "col13 - Currency",
"type": "currency",
"required": False,
"validators": {
"symbol": "$",
"require_symbol": False
}
},
{
"column_name": "col14",
"display_label": "col14 - List",
"type": "list",
"required": False,
"validators": {
"values": [
{
"value": "ind",
"display_label": "India",
"dependents": [
{
"value": "mh",
"display_label": "Maharashtra",
"dependents": [
{
"value": "mum",
"display_label": "Mumbai"
},
{
"value": "pun",
"display_label": "Pune"
}
]
},
{
"value": "gj",
"display_label": "Gujarat",
"dependents": [
{
"value": "amd",
"display_label": "Ahmedabad"
},
{
"value": "sur",
"display_label": "Surat"
}
]
}
]
},
{
"value": "usa",
"display_label": "United States",
"dependents": [
{
"value": "ca",
"display_label": "California",
"dependents": [
{
"value": "la",
"display_label": "Los Angeles"
},
{
"value": "sf",
"display_label": "San Francisco"
}
]
},
{
"value": "ny",
"display_label": "New York",
"dependents": [
{
"value": "nyc",
"display_label": "New York City"
},
{
"value": "buf",
"display_label": "Buffalo"
}
]
}
]
},
{
"value": "can",
"display_label": "Canada",
"dependents": [
{
"value": "on",
"display_label": "Ontario",
"dependents": [
{
"value": "tor",
"display_label": "Toronto"
},
{
"value": "ott",
"display_label": "Ottawa"
}
]
},
{
"value": "bc",
"display_label": "British Columbia",
"dependents": [
{
"value": "van",
"display_label": "Vancouver"
},
{
"value": "vic",
"display_label": "Victoria"
}
]
}
]
}
],
"case_sensitive": False
}
},
{
"column_name": "col15",
"display_label": "col15 - Dependent List",
"type": "dependent_list",
"required": False,
"validators": { "primary_column": "col14" }
},
{
"column_name": "col16",
"display_label": "col16 - Dependent List",
"type": "dependent_list",
"required": False,
"validators": { "primary_column": "col15" }
},
{
"column_name": "col17",
"display_label": "col17 - Dynamic List",
"type": "dynamic_list",
"required": False,
"validators": {
"source_url": "https://example.com/api/dynamic-list-options",
"request_method": "GET",
"request_headers": [],
"custom_user_attributes": True,
"other_values": False
}
},
{
"column_name": "col18",
"display_label": "col18 - Dependent Dynamic List",
"type": "dependent_dynamic_list",
"required": False,
"validators": { "primary_column": "col17" }
},
{
"column_name": "col19",
"display_label": "col19 - Dependent Dynamic List",
"type": "dependent_dynamic_list",
"required": False,
"validators": { "primary_column": "col18" }
},
{
"column_name": "col20",
"display_label": "col20 - Multiselect List",
"type": "multiselect_list",
"required": False,
"validators": {
"values": ["Red", "Green", "Blue", "orange", "yellow", "black"],
"delimiter": ",",
"case_sensitive": False,
"other_values": False
}
},
{
"column_name": "col21",
"display_label": "col21 - Multiselect Dynamic List",
"type": "multiselect_dynamic_list",
"required": False,
"validators": {
"dml_source_url": "https://example.com/api/multiselect-dynamic-options",
"dml_request_method": "GET",
"dml_request_headers": [],
"delimiter": ",",
"dml_other_values": False
}
},
{
"column_name": "col22",
"display_label": "col22 - Percentage",
"type": "percentage",
"required": False,
"validators": {
"min_value": 0,
"max_value": 100,
"output": "percent"
}
},
{
"column_name": "col23",
"display_label": "col23 - UUID",
"type": "uuid",
"required": False
},
{
"column_name": "col24",
"display_label": "col24 - JSON",
"type": "json",
"required": False
}
],
"steps": {
"file_upload": {
"types": [".csv"],
"title": "File Upload",
"help": "Upload your CSV file",
"sample_file_url": "",
"size_mb": 200,
"validation_msg": "upto 200mb allowed",
"copy_paste": True,
"copy_delimiter": "comma",
"show_upload": True,
"worksheet_select": True,
"description_option": True,
"lang": "en",
"excel_date_format": "custom",
"excel_date_custom": "DD-MM-YYYY",
"hide_cancel": False,
"split": True,
"split_rows": 1000,
"split_confirm": "no",
"extract_types": ["pdf", "images"],
"page_limit": 10,
"accept_raw_value": False,
"skip_min_rows": 2,
"skip_max_rows": 1000,
"skip_min_cols": 2,
"skip_max_cols": 20
},
"select_header": {
"skip": True,
"help": "Select header row",
"default_row": "2",
"encoding_option": True,
"encoding": "windows-1252",
"row_column_switch": False
},
"map_columns": {
"skip": True,
"help": "Map columns",
"mapping_mode": "template_fields",
"bulk_cols_dd": False,
"accept_unmapped": True,
"accept_unmapped_select": True,
"allow_zero_template": True,
"ignore_cols": True,
"ignore_cols_default": True,
"user_keywords": False
},
"verify_data": {
"skip": True,
"help": "Verify data",
"row_display_mode": "invalid",
"export_option": True,
"search_option": False,
"ai_transform": True,
"allow_new_rows": False,
"rows_display": 25,
"allow_invalid": True,
"invalid_confirmation": False,
"max_rows": 600,
"allow_upload_if_max": False,
"max_rows_msg": "maaaaaax",
"min_rows": 2,
"min_rows_msg": "miiiiin"
},
"results": {
"close_mode": "close_on_success",
"redirect_url": "",
"success_type": "static",
"success_text": "Import successful",
"success_method": "get",
"success_url": "",
"success_headers": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"failed_type": "static",
"failed_text": "Failure",
"failed_method": "get",
"failed_url": "",
"failed_headers": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"show_resubmit": False,
"show_error_text": False
}
},
"security_settings": {
"region": "us",
"domains": ["example.com"],
"import_url_upload": True,
"s3_upload": True
},
"virtual_columns": [
{
"column_name": "full_name",
"js_code": "const a = csvbox.row['col1'] || ''; const b = csvbox.row['col2'] || ''; return (a + ' ' + b).trim();",
"active": True,
"dependencies": [],
"_delete": False
}
],
"validation_functions": [
{
"function_name": "check_email",
"scope": "column",
"columns": ["col4"],
"js_code": "const rows = csvbox.column['col4'] || []; const errs = []; for (let i = 0; i < rows.length; i++) { if (String(rows[i]).indexOf('@') === -1) { errs.push({ row_id: i + 1, column: 'col4', message: 'Not a valid email' }); } } return errs;",
"active": True
},
{
"function_name": "check_date",
"scope": "column",
"columns": ["col5"],
"js_code": "const rows = csvbox.column['col5'] || []; const errs = []; const today = dayjs(); for (let i = 0; i < rows.length; i++) { const raw = String(rows[i] || '').trim(); if (raw === '') { continue; } const d = dayjs(raw); if (!d.isValid() || d.format('YYYY-MM-DD') !== raw) { errs.push({ row_id: i + 1, column: 'col5', message: 'Use YYYY-MM-DD, e.g. 2024-01-31' }); } else if (d.isAfter(today)) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date cannot be in the future' }); } else if (d.year() < 1900) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date must be 1900 or later' }); } } return errs;",
"dependencies": [
{
"url": "https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js",
"globals": ["dayjs"]
}
],
"active": True
}
],
"data_transforms": [
{
"transform_name": "uppercase_country",
"scope": "column",
"run_at": "before_validation",
"columns": ["col1"],
"dynamic_columns": ["region"],
"js_code": "for (let i = 0; i < csvbox.column['col1'].length; i++) { csvbox.column['col1'][i] = String(csvbox.column['col1'][i]).toUpperCase(); } return csvbox;",
"active": True,
"dependencies": [],
"_delete": False
}
],
"pdf_metadata_config": [
{
"name": "Author",
"source": "native"
},
{
"name": "Invoice Number",
"source": "document-kv"
},
{
"name": "processed_by",
"source": "static",
"value": "AP Team"
},
{
"name": "invoice_date",
"source": "line-match",
"value": "Invoice Date:"
}
]
}
headers = {
"Accept": "<accept>",
"Content-Type": "<content-type>",
"x-csvbox-api-key": "<api-key>",
"x-csvbox-secret-api-key": "<api-key>"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Accept: '<accept>',
'Content-Type': '<content-type>',
'x-csvbox-api-key': '<api-key>',
'x-csvbox-secret-api-key': '<api-key>'
},
body: JSON.stringify({
title: 'Customer Import',
webhooks: [
{
import_complete: {
url: 'https://example.com/webhook',
send_copy: false,
custom_headers: [{key: 'Content-Type', value: 'application/json'}]
}
}
],
destinations: [
{
type: 'webhook',
isActive: true,
settings: {
method: 'POST',
url: 'https://example.com/api/import',
post_data_format: 'JSON',
rows_per_chunk: 100,
request_type: 'parallel',
server_side_validation: true,
allow_resubmit: 'all_rows',
custom_headers: [{key: 'Content-Type', value: 'application/json'}]
}
}
],
sheet_columns: [
{
column_name: 'col1',
display_label: 'Col1 - Text',
info_hint: 'What is your highest educational degree',
matching_keywords: 'degree, education',
type: 'text',
validators: {min_length: 2, max_length: 50},
default_value: '',
required: false,
position: 5
},
{
column_name: 'col2',
display_label: 'col2 - Number',
info_hint: 'Years of work experience',
type: 'number',
validators: {min_value: 1, max_value: 100},
required: false,
position: 6
},
{
column_name: 'col4',
display_label: 'col4 - Email',
type: 'email',
required: false,
position: 7
},
{
column_name: 'col5',
display_label: 'col5 - Date',
type: 'date',
required: false,
validators: {format: 'YYYY-MM-DD'},
position: 8
},
{
column_name: 'col6',
display_label: 'col6 - Time',
type: 'time',
required: false,
validators: {format: 'HH:mm:ss'}
},
{
column_name: 'col7',
display_label: 'col7 - Boolean',
type: 'boolean',
required: false
},
{
column_name: 'col8',
display_label: 'col8 - Regex',
type: 'regex',
required: false,
validators: {
expression: '^\d{10}$',
error_message: 'Please enter a valid 10 digit phone number'
}
},
{
column_name: 'col9',
display_label: 'col9 - IP',
type: 'ip',
required: false,
validators: {version: 'ipv4'}
},
{
column_name: 'col10',
display_label: 'col10 - URL',
type: 'url',
required: false
},
{
column_name: 'col11',
display_label: 'col11 - Credit Card',
type: 'credit_card',
required: false
},
{
column_name: 'col12',
display_label: 'col12 - Phone Number',
type: 'phone_number',
required: false,
validators: {country_code: 'IN'}
},
{
column_name: 'col13',
display_label: 'col13 - Currency',
type: 'currency',
required: false,
validators: {symbol: '$', require_symbol: false}
},
{
column_name: 'col14',
display_label: 'col14 - List',
type: 'list',
required: false,
validators: {
values: [
{
value: 'ind',
display_label: 'India',
dependents: [
{
value: 'mh',
display_label: 'Maharashtra',
dependents: [{value: 'mum', display_label: 'Mumbai'}, {value: 'pun', display_label: 'Pune'}]
},
{
value: 'gj',
display_label: 'Gujarat',
dependents: [
{value: 'amd', display_label: 'Ahmedabad'},
{value: 'sur', display_label: 'Surat'}
]
}
]
},
{
value: 'usa',
display_label: 'United States',
dependents: [
{
value: 'ca',
display_label: 'California',
dependents: [
{value: 'la', display_label: 'Los Angeles'},
{value: 'sf', display_label: 'San Francisco'}
]
},
{
value: 'ny',
display_label: 'New York',
dependents: [
{value: 'nyc', display_label: 'New York City'},
{value: 'buf', display_label: 'Buffalo'}
]
}
]
},
{
value: 'can',
display_label: 'Canada',
dependents: [
{
value: 'on',
display_label: 'Ontario',
dependents: [
{value: 'tor', display_label: 'Toronto'},
{value: 'ott', display_label: 'Ottawa'}
]
},
{
value: 'bc',
display_label: 'British Columbia',
dependents: [
{value: 'van', display_label: 'Vancouver'},
{value: 'vic', display_label: 'Victoria'}
]
}
]
}
],
case_sensitive: false
}
},
{
column_name: 'col15',
display_label: 'col15 - Dependent List',
type: 'dependent_list',
required: false,
validators: {primary_column: 'col14'}
},
{
column_name: 'col16',
display_label: 'col16 - Dependent List',
type: 'dependent_list',
required: false,
validators: {primary_column: 'col15'}
},
{
column_name: 'col17',
display_label: 'col17 - Dynamic List',
type: 'dynamic_list',
required: false,
validators: {
source_url: 'https://example.com/api/dynamic-list-options',
request_method: 'GET',
request_headers: [],
custom_user_attributes: true,
other_values: false
}
},
{
column_name: 'col18',
display_label: 'col18 - Dependent Dynamic List',
type: 'dependent_dynamic_list',
required: false,
validators: {primary_column: 'col17'}
},
{
column_name: 'col19',
display_label: 'col19 - Dependent Dynamic List',
type: 'dependent_dynamic_list',
required: false,
validators: {primary_column: 'col18'}
},
{
column_name: 'col20',
display_label: 'col20 - Multiselect List',
type: 'multiselect_list',
required: false,
validators: {
values: ['Red', 'Green', 'Blue', 'orange', 'yellow', 'black'],
delimiter: ',',
case_sensitive: false,
other_values: false
}
},
{
column_name: 'col21',
display_label: 'col21 - Multiselect Dynamic List',
type: 'multiselect_dynamic_list',
required: false,
validators: {
dml_source_url: 'https://example.com/api/multiselect-dynamic-options',
dml_request_method: 'GET',
dml_request_headers: [],
delimiter: ',',
dml_other_values: false
}
},
{
column_name: 'col22',
display_label: 'col22 - Percentage',
type: 'percentage',
required: false,
validators: {min_value: 0, max_value: 100, output: 'percent'}
},
{
column_name: 'col23',
display_label: 'col23 - UUID',
type: 'uuid',
required: false
},
{
column_name: 'col24',
display_label: 'col24 - JSON',
type: 'json',
required: false
}
],
steps: {
file_upload: {
types: ['.csv'],
title: 'File Upload',
help: 'Upload your CSV file',
sample_file_url: '',
size_mb: 200,
validation_msg: 'upto 200mb allowed',
copy_paste: true,
copy_delimiter: 'comma',
show_upload: true,
worksheet_select: true,
description_option: true,
lang: 'en',
excel_date_format: 'custom',
excel_date_custom: 'DD-MM-YYYY',
hide_cancel: false,
split: true,
split_rows: 1000,
split_confirm: 'no',
extract_types: ['pdf', 'images'],
page_limit: 10,
accept_raw_value: false,
skip_min_rows: 2,
skip_max_rows: 1000,
skip_min_cols: 2,
skip_max_cols: 20
},
select_header: {
skip: true,
help: 'Select header row',
default_row: '2',
encoding_option: true,
encoding: 'windows-1252',
row_column_switch: false
},
map_columns: {
skip: true,
help: 'Map columns',
mapping_mode: 'template_fields',
bulk_cols_dd: false,
accept_unmapped: true,
accept_unmapped_select: true,
allow_zero_template: true,
ignore_cols: true,
ignore_cols_default: true,
user_keywords: false
},
verify_data: {
skip: true,
help: 'Verify data',
row_display_mode: 'invalid',
export_option: true,
search_option: false,
ai_transform: true,
allow_new_rows: false,
rows_display: 25,
allow_invalid: true,
invalid_confirmation: false,
max_rows: 600,
allow_upload_if_max: false,
max_rows_msg: 'maaaaaax',
min_rows: 2,
min_rows_msg: 'miiiiin'
},
results: {
close_mode: 'close_on_success',
redirect_url: '',
success_type: 'static',
success_text: 'Import successful',
success_method: 'get',
success_url: '',
success_headers: [{key: 'Content-Type', value: 'application/json'}],
failed_type: 'static',
failed_text: 'Failure',
failed_method: 'get',
failed_url: '',
failed_headers: [{key: 'Content-Type', value: 'application/json'}],
show_resubmit: false,
show_error_text: false
}
},
security_settings: {
region: 'us',
domains: ['example.com'],
import_url_upload: true,
s3_upload: true
},
virtual_columns: [
{
column_name: 'full_name',
js_code: 'const a = csvbox.row[\'col1\'] || \'\'; const b = csvbox.row[\'col2\'] || \'\'; return (a + \' \' + b).trim();',
active: true,
dependencies: [],
_delete: false
}
],
validation_functions: [
{
function_name: 'check_email',
scope: 'column',
columns: ['col4'],
js_code: 'const rows = csvbox.column[\'col4\'] || []; const errs = []; for (let i = 0; i < rows.length; i++) { if (String(rows[i]).indexOf(\'@\') === -1) { errs.push({ row_id: i + 1, column: \'col4\', message: \'Not a valid email\' }); } } return errs;',
active: true
},
{
function_name: 'check_date',
scope: 'column',
columns: ['col5'],
js_code: 'const rows = csvbox.column[\'col5\'] || []; const errs = []; const today = dayjs(); for (let i = 0; i < rows.length; i++) { const raw = String(rows[i] || \'\').trim(); if (raw === \'\') { continue; } const d = dayjs(raw); if (!d.isValid() || d.format(\'YYYY-MM-DD\') !== raw) { errs.push({ row_id: i + 1, column: \'col5\', message: \'Use YYYY-MM-DD, e.g. 2024-01-31\' }); } else if (d.isAfter(today)) { errs.push({ row_id: i + 1, column: \'col5\', message: \'Date cannot be in the future\' }); } else if (d.year() < 1900) { errs.push({ row_id: i + 1, column: \'col5\', message: \'Date must be 1900 or later\' }); } } return errs;',
dependencies: [
{
url: 'https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js',
globals: ['dayjs']
}
],
active: true
}
],
data_transforms: [
{
transform_name: 'uppercase_country',
scope: 'column',
run_at: 'before_validation',
columns: ['col1'],
dynamic_columns: ['region'],
js_code: 'for (let i = 0; i < csvbox.column[\'col1\'].length; i++) { csvbox.column[\'col1\'][i] = String(csvbox.column[\'col1\'][i]).toUpperCase(); } return csvbox;',
active: true,
dependencies: [],
_delete: false
}
],
pdf_metadata_config: [
{name: 'Author', source: 'native'},
{name: 'Invoice Number', source: 'document-kv'},
{name: 'processed_by', source: 'static', value: 'AP Team'},
{name: 'invoice_date', source: 'line-match', value: 'Invoice Date:'}
]
})
};
fetch('https://api.csvbox.io/1.1/sheet', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.csvbox.io/1.1/sheet",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'title' => 'Customer Import',
'webhooks' => [
[
'import_complete' => [
'url' => 'https://example.com/webhook',
'send_copy' => false,
'custom_headers' => [
[
'key' => 'Content-Type',
'value' => 'application/json'
]
]
]
]
],
'destinations' => [
[
'type' => 'webhook',
'isActive' => true,
'settings' => [
'method' => 'POST',
'url' => 'https://example.com/api/import',
'post_data_format' => 'JSON',
'rows_per_chunk' => 100,
'request_type' => 'parallel',
'server_side_validation' => true,
'allow_resubmit' => 'all_rows',
'custom_headers' => [
[
'key' => 'Content-Type',
'value' => 'application/json'
]
]
]
]
],
'sheet_columns' => [
[
'column_name' => 'col1',
'display_label' => 'Col1 - Text',
'info_hint' => 'What is your highest educational degree',
'matching_keywords' => 'degree, education',
'type' => 'text',
'validators' => [
'min_length' => 2,
'max_length' => 50
],
'default_value' => '',
'required' => false,
'position' => 5
],
[
'column_name' => 'col2',
'display_label' => 'col2 - Number',
'info_hint' => 'Years of work experience',
'type' => 'number',
'validators' => [
'min_value' => 1,
'max_value' => 100
],
'required' => false,
'position' => 6
],
[
'column_name' => 'col4',
'display_label' => 'col4 - Email',
'type' => 'email',
'required' => false,
'position' => 7
],
[
'column_name' => 'col5',
'display_label' => 'col5 - Date',
'type' => 'date',
'required' => false,
'validators' => [
'format' => 'YYYY-MM-DD'
],
'position' => 8
],
[
'column_name' => 'col6',
'display_label' => 'col6 - Time',
'type' => 'time',
'required' => false,
'validators' => [
'format' => 'HH:mm:ss'
]
],
[
'column_name' => 'col7',
'display_label' => 'col7 - Boolean',
'type' => 'boolean',
'required' => false
],
[
'column_name' => 'col8',
'display_label' => 'col8 - Regex',
'type' => 'regex',
'required' => false,
'validators' => [
'expression' => '^\\d{10}$',
'error_message' => 'Please enter a valid 10 digit phone number'
]
],
[
'column_name' => 'col9',
'display_label' => 'col9 - IP',
'type' => 'ip',
'required' => false,
'validators' => [
'version' => 'ipv4'
]
],
[
'column_name' => 'col10',
'display_label' => 'col10 - URL',
'type' => 'url',
'required' => false
],
[
'column_name' => 'col11',
'display_label' => 'col11 - Credit Card',
'type' => 'credit_card',
'required' => false
],
[
'column_name' => 'col12',
'display_label' => 'col12 - Phone Number',
'type' => 'phone_number',
'required' => false,
'validators' => [
'country_code' => 'IN'
]
],
[
'column_name' => 'col13',
'display_label' => 'col13 - Currency',
'type' => 'currency',
'required' => false,
'validators' => [
'symbol' => '$',
'require_symbol' => false
]
],
[
'column_name' => 'col14',
'display_label' => 'col14 - List',
'type' => 'list',
'required' => false,
'validators' => [
'values' => [
[
'value' => 'ind',
'display_label' => 'India',
'dependents' => [
[
'value' => 'mh',
'display_label' => 'Maharashtra',
'dependents' => [
[
'value' => 'mum',
'display_label' => 'Mumbai'
],
[
'value' => 'pun',
'display_label' => 'Pune'
]
]
],
[
'value' => 'gj',
'display_label' => 'Gujarat',
'dependents' => [
[
'value' => 'amd',
'display_label' => 'Ahmedabad'
],
[
'value' => 'sur',
'display_label' => 'Surat'
]
]
]
]
],
[
'value' => 'usa',
'display_label' => 'United States',
'dependents' => [
[
'value' => 'ca',
'display_label' => 'California',
'dependents' => [
[
'value' => 'la',
'display_label' => 'Los Angeles'
],
[
'value' => 'sf',
'display_label' => 'San Francisco'
]
]
],
[
'value' => 'ny',
'display_label' => 'New York',
'dependents' => [
[
'value' => 'nyc',
'display_label' => 'New York City'
],
[
'value' => 'buf',
'display_label' => 'Buffalo'
]
]
]
]
],
[
'value' => 'can',
'display_label' => 'Canada',
'dependents' => [
[
'value' => 'on',
'display_label' => 'Ontario',
'dependents' => [
[
'value' => 'tor',
'display_label' => 'Toronto'
],
[
'value' => 'ott',
'display_label' => 'Ottawa'
]
]
],
[
'value' => 'bc',
'display_label' => 'British Columbia',
'dependents' => [
[
'value' => 'van',
'display_label' => 'Vancouver'
],
[
'value' => 'vic',
'display_label' => 'Victoria'
]
]
]
]
]
],
'case_sensitive' => false
]
],
[
'column_name' => 'col15',
'display_label' => 'col15 - Dependent List',
'type' => 'dependent_list',
'required' => false,
'validators' => [
'primary_column' => 'col14'
]
],
[
'column_name' => 'col16',
'display_label' => 'col16 - Dependent List',
'type' => 'dependent_list',
'required' => false,
'validators' => [
'primary_column' => 'col15'
]
],
[
'column_name' => 'col17',
'display_label' => 'col17 - Dynamic List',
'type' => 'dynamic_list',
'required' => false,
'validators' => [
'source_url' => 'https://example.com/api/dynamic-list-options',
'request_method' => 'GET',
'request_headers' => [
],
'custom_user_attributes' => true,
'other_values' => false
]
],
[
'column_name' => 'col18',
'display_label' => 'col18 - Dependent Dynamic List',
'type' => 'dependent_dynamic_list',
'required' => false,
'validators' => [
'primary_column' => 'col17'
]
],
[
'column_name' => 'col19',
'display_label' => 'col19 - Dependent Dynamic List',
'type' => 'dependent_dynamic_list',
'required' => false,
'validators' => [
'primary_column' => 'col18'
]
],
[
'column_name' => 'col20',
'display_label' => 'col20 - Multiselect List',
'type' => 'multiselect_list',
'required' => false,
'validators' => [
'values' => [
'Red',
'Green',
'Blue',
'orange',
'yellow',
'black'
],
'delimiter' => ',',
'case_sensitive' => false,
'other_values' => false
]
],
[
'column_name' => 'col21',
'display_label' => 'col21 - Multiselect Dynamic List',
'type' => 'multiselect_dynamic_list',
'required' => false,
'validators' => [
'dml_source_url' => 'https://example.com/api/multiselect-dynamic-options',
'dml_request_method' => 'GET',
'dml_request_headers' => [
],
'delimiter' => ',',
'dml_other_values' => false
]
],
[
'column_name' => 'col22',
'display_label' => 'col22 - Percentage',
'type' => 'percentage',
'required' => false,
'validators' => [
'min_value' => 0,
'max_value' => 100,
'output' => 'percent'
]
],
[
'column_name' => 'col23',
'display_label' => 'col23 - UUID',
'type' => 'uuid',
'required' => false
],
[
'column_name' => 'col24',
'display_label' => 'col24 - JSON',
'type' => 'json',
'required' => false
]
],
'steps' => [
'file_upload' => [
'types' => [
'.csv'
],
'title' => 'File Upload',
'help' => 'Upload your CSV file',
'sample_file_url' => '',
'size_mb' => 200,
'validation_msg' => 'upto 200mb allowed',
'copy_paste' => true,
'copy_delimiter' => 'comma',
'show_upload' => true,
'worksheet_select' => true,
'description_option' => true,
'lang' => 'en',
'excel_date_format' => 'custom',
'excel_date_custom' => 'DD-MM-YYYY',
'hide_cancel' => false,
'split' => true,
'split_rows' => 1000,
'split_confirm' => 'no',
'extract_types' => [
'pdf',
'images'
],
'page_limit' => 10,
'accept_raw_value' => false,
'skip_min_rows' => 2,
'skip_max_rows' => 1000,
'skip_min_cols' => 2,
'skip_max_cols' => 20
],
'select_header' => [
'skip' => true,
'help' => 'Select header row',
'default_row' => '2',
'encoding_option' => true,
'encoding' => 'windows-1252',
'row_column_switch' => false
],
'map_columns' => [
'skip' => true,
'help' => 'Map columns',
'mapping_mode' => 'template_fields',
'bulk_cols_dd' => false,
'accept_unmapped' => true,
'accept_unmapped_select' => true,
'allow_zero_template' => true,
'ignore_cols' => true,
'ignore_cols_default' => true,
'user_keywords' => false
],
'verify_data' => [
'skip' => true,
'help' => 'Verify data',
'row_display_mode' => 'invalid',
'export_option' => true,
'search_option' => false,
'ai_transform' => true,
'allow_new_rows' => false,
'rows_display' => 25,
'allow_invalid' => true,
'invalid_confirmation' => false,
'max_rows' => 600,
'allow_upload_if_max' => false,
'max_rows_msg' => 'maaaaaax',
'min_rows' => 2,
'min_rows_msg' => 'miiiiin'
],
'results' => [
'close_mode' => 'close_on_success',
'redirect_url' => '',
'success_type' => 'static',
'success_text' => 'Import successful',
'success_method' => 'get',
'success_url' => '',
'success_headers' => [
[
'key' => 'Content-Type',
'value' => 'application/json'
]
],
'failed_type' => 'static',
'failed_text' => 'Failure',
'failed_method' => 'get',
'failed_url' => '',
'failed_headers' => [
[
'key' => 'Content-Type',
'value' => 'application/json'
]
],
'show_resubmit' => false,
'show_error_text' => false
]
],
'security_settings' => [
'region' => 'us',
'domains' => [
'example.com'
],
'import_url_upload' => true,
's3_upload' => true
],
'virtual_columns' => [
[
'column_name' => 'full_name',
'js_code' => 'const a = csvbox.row[\'col1\'] || \'\'; const b = csvbox.row[\'col2\'] || \'\'; return (a + \' \' + b).trim();',
'active' => true,
'dependencies' => [
],
'_delete' => false
]
],
'validation_functions' => [
[
'function_name' => 'check_email',
'scope' => 'column',
'columns' => [
'col4'
],
'js_code' => 'const rows = csvbox.column[\'col4\'] || []; const errs = []; for (let i = 0; i < rows.length; i++) { if (String(rows[i]).indexOf(\'@\') === -1) { errs.push({ row_id: i + 1, column: \'col4\', message: \'Not a valid email\' }); } } return errs;',
'active' => true
],
[
'function_name' => 'check_date',
'scope' => 'column',
'columns' => [
'col5'
],
'js_code' => 'const rows = csvbox.column[\'col5\'] || []; const errs = []; const today = dayjs(); for (let i = 0; i < rows.length; i++) { const raw = String(rows[i] || \'\').trim(); if (raw === \'\') { continue; } const d = dayjs(raw); if (!d.isValid() || d.format(\'YYYY-MM-DD\') !== raw) { errs.push({ row_id: i + 1, column: \'col5\', message: \'Use YYYY-MM-DD, e.g. 2024-01-31\' }); } else if (d.isAfter(today)) { errs.push({ row_id: i + 1, column: \'col5\', message: \'Date cannot be in the future\' }); } else if (d.year() < 1900) { errs.push({ row_id: i + 1, column: \'col5\', message: \'Date must be 1900 or later\' }); } } return errs;',
'dependencies' => [
[
'url' => 'https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js',
'globals' => [
'dayjs'
]
]
],
'active' => true
]
],
'data_transforms' => [
[
'transform_name' => 'uppercase_country',
'scope' => 'column',
'run_at' => 'before_validation',
'columns' => [
'col1'
],
'dynamic_columns' => [
'region'
],
'js_code' => 'for (let i = 0; i < csvbox.column[\'col1\'].length; i++) { csvbox.column[\'col1\'][i] = String(csvbox.column[\'col1\'][i]).toUpperCase(); } return csvbox;',
'active' => true,
'dependencies' => [
],
'_delete' => false
]
],
'pdf_metadata_config' => [
[
'name' => 'Author',
'source' => 'native'
],
[
'name' => 'Invoice Number',
'source' => 'document-kv'
],
[
'name' => 'processed_by',
'source' => 'static',
'value' => 'AP Team'
],
[
'name' => 'invoice_date',
'source' => 'line-match',
'value' => 'Invoice Date:'
]
]
]),
CURLOPT_HTTPHEADER => [
"Accept: <accept>",
"Content-Type: <content-type>",
"x-csvbox-api-key: <api-key>",
"x-csvbox-secret-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.csvbox.io/1.1/sheet"
payload := strings.NewReader("{\n \"title\": \"Customer Import\",\n \"webhooks\": [\n {\n \"import_complete\": {\n \"url\": \"https://example.com/webhook\",\n \"send_copy\": false,\n \"custom_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ]\n }\n }\n ],\n \"destinations\": [\n {\n \"type\": \"webhook\",\n \"isActive\": true,\n \"settings\": {\n \"method\": \"POST\",\n \"url\": \"https://example.com/api/import\",\n \"post_data_format\": \"JSON\",\n \"rows_per_chunk\": 100,\n \"request_type\": \"parallel\",\n \"server_side_validation\": true,\n \"allow_resubmit\": \"all_rows\",\n \"custom_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ]\n }\n }\n ],\n \"sheet_columns\": [\n {\n \"column_name\": \"col1\",\n \"display_label\": \"Col1 - Text\",\n \"info_hint\": \"What is your highest educational degree\",\n \"matching_keywords\": \"degree, education\",\n \"type\": \"text\",\n \"validators\": {\n \"min_length\": 2,\n \"max_length\": 50\n },\n \"default_value\": \"\",\n \"required\": false,\n \"position\": 5\n },\n {\n \"column_name\": \"col2\",\n \"display_label\": \"col2 - Number\",\n \"info_hint\": \"Years of work experience\",\n \"type\": \"number\",\n \"validators\": {\n \"min_value\": 1,\n \"max_value\": 100\n },\n \"required\": false,\n \"position\": 6\n },\n {\n \"column_name\": \"col4\",\n \"display_label\": \"col4 - Email\",\n \"type\": \"email\",\n \"required\": false,\n \"position\": 7\n },\n {\n \"column_name\": \"col5\",\n \"display_label\": \"col5 - Date\",\n \"type\": \"date\",\n \"required\": false,\n \"validators\": {\n \"format\": \"YYYY-MM-DD\"\n },\n \"position\": 8\n },\n {\n \"column_name\": \"col6\",\n \"display_label\": \"col6 - Time\",\n \"type\": \"time\",\n \"required\": false,\n \"validators\": {\n \"format\": \"HH:mm:ss\"\n }\n },\n {\n \"column_name\": \"col7\",\n \"display_label\": \"col7 - Boolean\",\n \"type\": \"boolean\",\n \"required\": false\n },\n {\n \"column_name\": \"col8\",\n \"display_label\": \"col8 - Regex\",\n \"type\": \"regex\",\n \"required\": false,\n \"validators\": {\n \"expression\": \"^\\\\d{10}$\",\n \"error_message\": \"Please enter a valid 10 digit phone number\"\n }\n },\n {\n \"column_name\": \"col9\",\n \"display_label\": \"col9 - IP\",\n \"type\": \"ip\",\n \"required\": false,\n \"validators\": {\n \"version\": \"ipv4\"\n }\n },\n {\n \"column_name\": \"col10\",\n \"display_label\": \"col10 - URL\",\n \"type\": \"url\",\n \"required\": false\n },\n {\n \"column_name\": \"col11\",\n \"display_label\": \"col11 - Credit Card\",\n \"type\": \"credit_card\",\n \"required\": false\n },\n {\n \"column_name\": \"col12\",\n \"display_label\": \"col12 - Phone Number\",\n \"type\": \"phone_number\",\n \"required\": false,\n \"validators\": {\n \"country_code\": \"IN\"\n }\n },\n {\n \"column_name\": \"col13\",\n \"display_label\": \"col13 - Currency\",\n \"type\": \"currency\",\n \"required\": false,\n \"validators\": {\n \"symbol\": \"$\",\n \"require_symbol\": false\n }\n },\n {\n \"column_name\": \"col14\",\n \"display_label\": \"col14 - List\",\n \"type\": \"list\",\n \"required\": false,\n \"validators\": {\n \"values\": [\n {\n \"value\": \"ind\",\n \"display_label\": \"India\",\n \"dependents\": [\n {\n \"value\": \"mh\",\n \"display_label\": \"Maharashtra\",\n \"dependents\": [\n {\n \"value\": \"mum\",\n \"display_label\": \"Mumbai\"\n },\n {\n \"value\": \"pun\",\n \"display_label\": \"Pune\"\n }\n ]\n },\n {\n \"value\": \"gj\",\n \"display_label\": \"Gujarat\",\n \"dependents\": [\n {\n \"value\": \"amd\",\n \"display_label\": \"Ahmedabad\"\n },\n {\n \"value\": \"sur\",\n \"display_label\": \"Surat\"\n }\n ]\n }\n ]\n },\n {\n \"value\": \"usa\",\n \"display_label\": \"United States\",\n \"dependents\": [\n {\n \"value\": \"ca\",\n \"display_label\": \"California\",\n \"dependents\": [\n {\n \"value\": \"la\",\n \"display_label\": \"Los Angeles\"\n },\n {\n \"value\": \"sf\",\n \"display_label\": \"San Francisco\"\n }\n ]\n },\n {\n \"value\": \"ny\",\n \"display_label\": \"New York\",\n \"dependents\": [\n {\n \"value\": \"nyc\",\n \"display_label\": \"New York City\"\n },\n {\n \"value\": \"buf\",\n \"display_label\": \"Buffalo\"\n }\n ]\n }\n ]\n },\n {\n \"value\": \"can\",\n \"display_label\": \"Canada\",\n \"dependents\": [\n {\n \"value\": \"on\",\n \"display_label\": \"Ontario\",\n \"dependents\": [\n {\n \"value\": \"tor\",\n \"display_label\": \"Toronto\"\n },\n {\n \"value\": \"ott\",\n \"display_label\": \"Ottawa\"\n }\n ]\n },\n {\n \"value\": \"bc\",\n \"display_label\": \"British Columbia\",\n \"dependents\": [\n {\n \"value\": \"van\",\n \"display_label\": \"Vancouver\"\n },\n {\n \"value\": \"vic\",\n \"display_label\": \"Victoria\"\n }\n ]\n }\n ]\n }\n ],\n \"case_sensitive\": false\n }\n },\n {\n \"column_name\": \"col15\",\n \"display_label\": \"col15 - Dependent List\",\n \"type\": \"dependent_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col14\"\n }\n },\n {\n \"column_name\": \"col16\",\n \"display_label\": \"col16 - Dependent List\",\n \"type\": \"dependent_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col15\"\n }\n },\n {\n \"column_name\": \"col17\",\n \"display_label\": \"col17 - Dynamic List\",\n \"type\": \"dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"source_url\": \"https://example.com/api/dynamic-list-options\",\n \"request_method\": \"GET\",\n \"request_headers\": [],\n \"custom_user_attributes\": true,\n \"other_values\": false\n }\n },\n {\n \"column_name\": \"col18\",\n \"display_label\": \"col18 - Dependent Dynamic List\",\n \"type\": \"dependent_dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col17\"\n }\n },\n {\n \"column_name\": \"col19\",\n \"display_label\": \"col19 - Dependent Dynamic List\",\n \"type\": \"dependent_dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col18\"\n }\n },\n {\n \"column_name\": \"col20\",\n \"display_label\": \"col20 - Multiselect List\",\n \"type\": \"multiselect_list\",\n \"required\": false,\n \"validators\": {\n \"values\": [\n \"Red\",\n \"Green\",\n \"Blue\",\n \"orange\",\n \"yellow\",\n \"black\"\n ],\n \"delimiter\": \",\",\n \"case_sensitive\": false,\n \"other_values\": false\n }\n },\n {\n \"column_name\": \"col21\",\n \"display_label\": \"col21 - Multiselect Dynamic List\",\n \"type\": \"multiselect_dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"dml_source_url\": \"https://example.com/api/multiselect-dynamic-options\",\n \"dml_request_method\": \"GET\",\n \"dml_request_headers\": [],\n \"delimiter\": \",\",\n \"dml_other_values\": false\n }\n },\n {\n \"column_name\": \"col22\",\n \"display_label\": \"col22 - Percentage\",\n \"type\": \"percentage\",\n \"required\": false,\n \"validators\": {\n \"min_value\": 0,\n \"max_value\": 100,\n \"output\": \"percent\"\n }\n },\n {\n \"column_name\": \"col23\",\n \"display_label\": \"col23 - UUID\",\n \"type\": \"uuid\",\n \"required\": false\n },\n {\n \"column_name\": \"col24\",\n \"display_label\": \"col24 - JSON\",\n \"type\": \"json\",\n \"required\": false\n }\n ],\n \"steps\": {\n \"file_upload\": {\n \"types\": [\n \".csv\"\n ],\n \"title\": \"File Upload\",\n \"help\": \"Upload your CSV file\",\n \"sample_file_url\": \"\",\n \"size_mb\": 200,\n \"validation_msg\": \"upto 200mb allowed\",\n \"copy_paste\": true,\n \"copy_delimiter\": \"comma\",\n \"show_upload\": true,\n \"worksheet_select\": true,\n \"description_option\": true,\n \"lang\": \"en\",\n \"excel_date_format\": \"custom\",\n \"excel_date_custom\": \"DD-MM-YYYY\",\n \"hide_cancel\": false,\n \"split\": true,\n \"split_rows\": 1000,\n \"split_confirm\": \"no\",\n \"extract_types\": [\n \"pdf\",\n \"images\"\n ],\n \"page_limit\": 10,\n \"accept_raw_value\": false,\n \"skip_min_rows\": 2,\n \"skip_max_rows\": 1000,\n \"skip_min_cols\": 2,\n \"skip_max_cols\": 20\n },\n \"select_header\": {\n \"skip\": true,\n \"help\": \"Select header row\",\n \"default_row\": \"2\",\n \"encoding_option\": true,\n \"encoding\": \"windows-1252\",\n \"row_column_switch\": false\n },\n \"map_columns\": {\n \"skip\": true,\n \"help\": \"Map columns\",\n \"mapping_mode\": \"template_fields\",\n \"bulk_cols_dd\": false,\n \"accept_unmapped\": true,\n \"accept_unmapped_select\": true,\n \"allow_zero_template\": true,\n \"ignore_cols\": true,\n \"ignore_cols_default\": true,\n \"user_keywords\": false\n },\n \"verify_data\": {\n \"skip\": true,\n \"help\": \"Verify data\",\n \"row_display_mode\": \"invalid\",\n \"export_option\": true,\n \"search_option\": false,\n \"ai_transform\": true,\n \"allow_new_rows\": false,\n \"rows_display\": 25,\n \"allow_invalid\": true,\n \"invalid_confirmation\": false,\n \"max_rows\": 600,\n \"allow_upload_if_max\": false,\n \"max_rows_msg\": \"maaaaaax\",\n \"min_rows\": 2,\n \"min_rows_msg\": \"miiiiin\"\n },\n \"results\": {\n \"close_mode\": \"close_on_success\",\n \"redirect_url\": \"\",\n \"success_type\": \"static\",\n \"success_text\": \"Import successful\",\n \"success_method\": \"get\",\n \"success_url\": \"\",\n \"success_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ],\n \"failed_type\": \"static\",\n \"failed_text\": \"Failure\",\n \"failed_method\": \"get\",\n \"failed_url\": \"\",\n \"failed_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ],\n \"show_resubmit\": false,\n \"show_error_text\": false\n }\n },\n \"security_settings\": {\n \"region\": \"us\",\n \"domains\": [\n \"example.com\"\n ],\n \"import_url_upload\": true,\n \"s3_upload\": true\n },\n \"virtual_columns\": [\n {\n \"column_name\": \"full_name\",\n \"js_code\": \"const a = csvbox.row['col1'] || ''; const b = csvbox.row['col2'] || ''; return (a + ' ' + b).trim();\",\n \"active\": true,\n \"dependencies\": [],\n \"_delete\": false\n }\n ],\n \"validation_functions\": [\n {\n \"function_name\": \"check_email\",\n \"scope\": \"column\",\n \"columns\": [\n \"col4\"\n ],\n \"js_code\": \"const rows = csvbox.column['col4'] || []; const errs = []; for (let i = 0; i < rows.length; i++) { if (String(rows[i]).indexOf('@') === -1) { errs.push({ row_id: i + 1, column: 'col4', message: 'Not a valid email' }); } } return errs;\",\n \"active\": true\n },\n {\n \"function_name\": \"check_date\",\n \"scope\": \"column\",\n \"columns\": [\n \"col5\"\n ],\n \"js_code\": \"const rows = csvbox.column['col5'] || []; const errs = []; const today = dayjs(); for (let i = 0; i < rows.length; i++) { const raw = String(rows[i] || '').trim(); if (raw === '') { continue; } const d = dayjs(raw); if (!d.isValid() || d.format('YYYY-MM-DD') !== raw) { errs.push({ row_id: i + 1, column: 'col5', message: 'Use YYYY-MM-DD, e.g. 2024-01-31' }); } else if (d.isAfter(today)) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date cannot be in the future' }); } else if (d.year() < 1900) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date must be 1900 or later' }); } } return errs;\",\n \"dependencies\": [\n {\n \"url\": \"https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js\",\n \"globals\": [\n \"dayjs\"\n ]\n }\n ],\n \"active\": true\n }\n ],\n \"data_transforms\": [\n {\n \"transform_name\": \"uppercase_country\",\n \"scope\": \"column\",\n \"run_at\": \"before_validation\",\n \"columns\": [\n \"col1\"\n ],\n \"dynamic_columns\": [\n \"region\"\n ],\n \"js_code\": \"for (let i = 0; i < csvbox.column['col1'].length; i++) { csvbox.column['col1'][i] = String(csvbox.column['col1'][i]).toUpperCase(); } return csvbox;\",\n \"active\": true,\n \"dependencies\": [],\n \"_delete\": false\n }\n ],\n \"pdf_metadata_config\": [\n {\n \"name\": \"Author\",\n \"source\": \"native\"\n },\n {\n \"name\": \"Invoice Number\",\n \"source\": \"document-kv\"\n },\n {\n \"name\": \"processed_by\",\n \"source\": \"static\",\n \"value\": \"AP Team\"\n },\n {\n \"name\": \"invoice_date\",\n \"source\": \"line-match\",\n \"value\": \"Invoice Date:\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Accept", "<accept>")
req.Header.Add("Content-Type", "<content-type>")
req.Header.Add("x-csvbox-api-key", "<api-key>")
req.Header.Add("x-csvbox-secret-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.csvbox.io/1.1/sheet")
.header("Accept", "<accept>")
.header("Content-Type", "<content-type>")
.header("x-csvbox-api-key", "<api-key>")
.header("x-csvbox-secret-api-key", "<api-key>")
.body("{\n \"title\": \"Customer Import\",\n \"webhooks\": [\n {\n \"import_complete\": {\n \"url\": \"https://example.com/webhook\",\n \"send_copy\": false,\n \"custom_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ]\n }\n }\n ],\n \"destinations\": [\n {\n \"type\": \"webhook\",\n \"isActive\": true,\n \"settings\": {\n \"method\": \"POST\",\n \"url\": \"https://example.com/api/import\",\n \"post_data_format\": \"JSON\",\n \"rows_per_chunk\": 100,\n \"request_type\": \"parallel\",\n \"server_side_validation\": true,\n \"allow_resubmit\": \"all_rows\",\n \"custom_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ]\n }\n }\n ],\n \"sheet_columns\": [\n {\n \"column_name\": \"col1\",\n \"display_label\": \"Col1 - Text\",\n \"info_hint\": \"What is your highest educational degree\",\n \"matching_keywords\": \"degree, education\",\n \"type\": \"text\",\n \"validators\": {\n \"min_length\": 2,\n \"max_length\": 50\n },\n \"default_value\": \"\",\n \"required\": false,\n \"position\": 5\n },\n {\n \"column_name\": \"col2\",\n \"display_label\": \"col2 - Number\",\n \"info_hint\": \"Years of work experience\",\n \"type\": \"number\",\n \"validators\": {\n \"min_value\": 1,\n \"max_value\": 100\n },\n \"required\": false,\n \"position\": 6\n },\n {\n \"column_name\": \"col4\",\n \"display_label\": \"col4 - Email\",\n \"type\": \"email\",\n \"required\": false,\n \"position\": 7\n },\n {\n \"column_name\": \"col5\",\n \"display_label\": \"col5 - Date\",\n \"type\": \"date\",\n \"required\": false,\n \"validators\": {\n \"format\": \"YYYY-MM-DD\"\n },\n \"position\": 8\n },\n {\n \"column_name\": \"col6\",\n \"display_label\": \"col6 - Time\",\n \"type\": \"time\",\n \"required\": false,\n \"validators\": {\n \"format\": \"HH:mm:ss\"\n }\n },\n {\n \"column_name\": \"col7\",\n \"display_label\": \"col7 - Boolean\",\n \"type\": \"boolean\",\n \"required\": false\n },\n {\n \"column_name\": \"col8\",\n \"display_label\": \"col8 - Regex\",\n \"type\": \"regex\",\n \"required\": false,\n \"validators\": {\n \"expression\": \"^\\\\d{10}$\",\n \"error_message\": \"Please enter a valid 10 digit phone number\"\n }\n },\n {\n \"column_name\": \"col9\",\n \"display_label\": \"col9 - IP\",\n \"type\": \"ip\",\n \"required\": false,\n \"validators\": {\n \"version\": \"ipv4\"\n }\n },\n {\n \"column_name\": \"col10\",\n \"display_label\": \"col10 - URL\",\n \"type\": \"url\",\n \"required\": false\n },\n {\n \"column_name\": \"col11\",\n \"display_label\": \"col11 - Credit Card\",\n \"type\": \"credit_card\",\n \"required\": false\n },\n {\n \"column_name\": \"col12\",\n \"display_label\": \"col12 - Phone Number\",\n \"type\": \"phone_number\",\n \"required\": false,\n \"validators\": {\n \"country_code\": \"IN\"\n }\n },\n {\n \"column_name\": \"col13\",\n \"display_label\": \"col13 - Currency\",\n \"type\": \"currency\",\n \"required\": false,\n \"validators\": {\n \"symbol\": \"$\",\n \"require_symbol\": false\n }\n },\n {\n \"column_name\": \"col14\",\n \"display_label\": \"col14 - List\",\n \"type\": \"list\",\n \"required\": false,\n \"validators\": {\n \"values\": [\n {\n \"value\": \"ind\",\n \"display_label\": \"India\",\n \"dependents\": [\n {\n \"value\": \"mh\",\n \"display_label\": \"Maharashtra\",\n \"dependents\": [\n {\n \"value\": \"mum\",\n \"display_label\": \"Mumbai\"\n },\n {\n \"value\": \"pun\",\n \"display_label\": \"Pune\"\n }\n ]\n },\n {\n \"value\": \"gj\",\n \"display_label\": \"Gujarat\",\n \"dependents\": [\n {\n \"value\": \"amd\",\n \"display_label\": \"Ahmedabad\"\n },\n {\n \"value\": \"sur\",\n \"display_label\": \"Surat\"\n }\n ]\n }\n ]\n },\n {\n \"value\": \"usa\",\n \"display_label\": \"United States\",\n \"dependents\": [\n {\n \"value\": \"ca\",\n \"display_label\": \"California\",\n \"dependents\": [\n {\n \"value\": \"la\",\n \"display_label\": \"Los Angeles\"\n },\n {\n \"value\": \"sf\",\n \"display_label\": \"San Francisco\"\n }\n ]\n },\n {\n \"value\": \"ny\",\n \"display_label\": \"New York\",\n \"dependents\": [\n {\n \"value\": \"nyc\",\n \"display_label\": \"New York City\"\n },\n {\n \"value\": \"buf\",\n \"display_label\": \"Buffalo\"\n }\n ]\n }\n ]\n },\n {\n \"value\": \"can\",\n \"display_label\": \"Canada\",\n \"dependents\": [\n {\n \"value\": \"on\",\n \"display_label\": \"Ontario\",\n \"dependents\": [\n {\n \"value\": \"tor\",\n \"display_label\": \"Toronto\"\n },\n {\n \"value\": \"ott\",\n \"display_label\": \"Ottawa\"\n }\n ]\n },\n {\n \"value\": \"bc\",\n \"display_label\": \"British Columbia\",\n \"dependents\": [\n {\n \"value\": \"van\",\n \"display_label\": \"Vancouver\"\n },\n {\n \"value\": \"vic\",\n \"display_label\": \"Victoria\"\n }\n ]\n }\n ]\n }\n ],\n \"case_sensitive\": false\n }\n },\n {\n \"column_name\": \"col15\",\n \"display_label\": \"col15 - Dependent List\",\n \"type\": \"dependent_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col14\"\n }\n },\n {\n \"column_name\": \"col16\",\n \"display_label\": \"col16 - Dependent List\",\n \"type\": \"dependent_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col15\"\n }\n },\n {\n \"column_name\": \"col17\",\n \"display_label\": \"col17 - Dynamic List\",\n \"type\": \"dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"source_url\": \"https://example.com/api/dynamic-list-options\",\n \"request_method\": \"GET\",\n \"request_headers\": [],\n \"custom_user_attributes\": true,\n \"other_values\": false\n }\n },\n {\n \"column_name\": \"col18\",\n \"display_label\": \"col18 - Dependent Dynamic List\",\n \"type\": \"dependent_dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col17\"\n }\n },\n {\n \"column_name\": \"col19\",\n \"display_label\": \"col19 - Dependent Dynamic List\",\n \"type\": \"dependent_dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col18\"\n }\n },\n {\n \"column_name\": \"col20\",\n \"display_label\": \"col20 - Multiselect List\",\n \"type\": \"multiselect_list\",\n \"required\": false,\n \"validators\": {\n \"values\": [\n \"Red\",\n \"Green\",\n \"Blue\",\n \"orange\",\n \"yellow\",\n \"black\"\n ],\n \"delimiter\": \",\",\n \"case_sensitive\": false,\n \"other_values\": false\n }\n },\n {\n \"column_name\": \"col21\",\n \"display_label\": \"col21 - Multiselect Dynamic List\",\n \"type\": \"multiselect_dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"dml_source_url\": \"https://example.com/api/multiselect-dynamic-options\",\n \"dml_request_method\": \"GET\",\n \"dml_request_headers\": [],\n \"delimiter\": \",\",\n \"dml_other_values\": false\n }\n },\n {\n \"column_name\": \"col22\",\n \"display_label\": \"col22 - Percentage\",\n \"type\": \"percentage\",\n \"required\": false,\n \"validators\": {\n \"min_value\": 0,\n \"max_value\": 100,\n \"output\": \"percent\"\n }\n },\n {\n \"column_name\": \"col23\",\n \"display_label\": \"col23 - UUID\",\n \"type\": \"uuid\",\n \"required\": false\n },\n {\n \"column_name\": \"col24\",\n \"display_label\": \"col24 - JSON\",\n \"type\": \"json\",\n \"required\": false\n }\n ],\n \"steps\": {\n \"file_upload\": {\n \"types\": [\n \".csv\"\n ],\n \"title\": \"File Upload\",\n \"help\": \"Upload your CSV file\",\n \"sample_file_url\": \"\",\n \"size_mb\": 200,\n \"validation_msg\": \"upto 200mb allowed\",\n \"copy_paste\": true,\n \"copy_delimiter\": \"comma\",\n \"show_upload\": true,\n \"worksheet_select\": true,\n \"description_option\": true,\n \"lang\": \"en\",\n \"excel_date_format\": \"custom\",\n \"excel_date_custom\": \"DD-MM-YYYY\",\n \"hide_cancel\": false,\n \"split\": true,\n \"split_rows\": 1000,\n \"split_confirm\": \"no\",\n \"extract_types\": [\n \"pdf\",\n \"images\"\n ],\n \"page_limit\": 10,\n \"accept_raw_value\": false,\n \"skip_min_rows\": 2,\n \"skip_max_rows\": 1000,\n \"skip_min_cols\": 2,\n \"skip_max_cols\": 20\n },\n \"select_header\": {\n \"skip\": true,\n \"help\": \"Select header row\",\n \"default_row\": \"2\",\n \"encoding_option\": true,\n \"encoding\": \"windows-1252\",\n \"row_column_switch\": false\n },\n \"map_columns\": {\n \"skip\": true,\n \"help\": \"Map columns\",\n \"mapping_mode\": \"template_fields\",\n \"bulk_cols_dd\": false,\n \"accept_unmapped\": true,\n \"accept_unmapped_select\": true,\n \"allow_zero_template\": true,\n \"ignore_cols\": true,\n \"ignore_cols_default\": true,\n \"user_keywords\": false\n },\n \"verify_data\": {\n \"skip\": true,\n \"help\": \"Verify data\",\n \"row_display_mode\": \"invalid\",\n \"export_option\": true,\n \"search_option\": false,\n \"ai_transform\": true,\n \"allow_new_rows\": false,\n \"rows_display\": 25,\n \"allow_invalid\": true,\n \"invalid_confirmation\": false,\n \"max_rows\": 600,\n \"allow_upload_if_max\": false,\n \"max_rows_msg\": \"maaaaaax\",\n \"min_rows\": 2,\n \"min_rows_msg\": \"miiiiin\"\n },\n \"results\": {\n \"close_mode\": \"close_on_success\",\n \"redirect_url\": \"\",\n \"success_type\": \"static\",\n \"success_text\": \"Import successful\",\n \"success_method\": \"get\",\n \"success_url\": \"\",\n \"success_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ],\n \"failed_type\": \"static\",\n \"failed_text\": \"Failure\",\n \"failed_method\": \"get\",\n \"failed_url\": \"\",\n \"failed_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ],\n \"show_resubmit\": false,\n \"show_error_text\": false\n }\n },\n \"security_settings\": {\n \"region\": \"us\",\n \"domains\": [\n \"example.com\"\n ],\n \"import_url_upload\": true,\n \"s3_upload\": true\n },\n \"virtual_columns\": [\n {\n \"column_name\": \"full_name\",\n \"js_code\": \"const a = csvbox.row['col1'] || ''; const b = csvbox.row['col2'] || ''; return (a + ' ' + b).trim();\",\n \"active\": true,\n \"dependencies\": [],\n \"_delete\": false\n }\n ],\n \"validation_functions\": [\n {\n \"function_name\": \"check_email\",\n \"scope\": \"column\",\n \"columns\": [\n \"col4\"\n ],\n \"js_code\": \"const rows = csvbox.column['col4'] || []; const errs = []; for (let i = 0; i < rows.length; i++) { if (String(rows[i]).indexOf('@') === -1) { errs.push({ row_id: i + 1, column: 'col4', message: 'Not a valid email' }); } } return errs;\",\n \"active\": true\n },\n {\n \"function_name\": \"check_date\",\n \"scope\": \"column\",\n \"columns\": [\n \"col5\"\n ],\n \"js_code\": \"const rows = csvbox.column['col5'] || []; const errs = []; const today = dayjs(); for (let i = 0; i < rows.length; i++) { const raw = String(rows[i] || '').trim(); if (raw === '') { continue; } const d = dayjs(raw); if (!d.isValid() || d.format('YYYY-MM-DD') !== raw) { errs.push({ row_id: i + 1, column: 'col5', message: 'Use YYYY-MM-DD, e.g. 2024-01-31' }); } else if (d.isAfter(today)) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date cannot be in the future' }); } else if (d.year() < 1900) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date must be 1900 or later' }); } } return errs;\",\n \"dependencies\": [\n {\n \"url\": \"https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js\",\n \"globals\": [\n \"dayjs\"\n ]\n }\n ],\n \"active\": true\n }\n ],\n \"data_transforms\": [\n {\n \"transform_name\": \"uppercase_country\",\n \"scope\": \"column\",\n \"run_at\": \"before_validation\",\n \"columns\": [\n \"col1\"\n ],\n \"dynamic_columns\": [\n \"region\"\n ],\n \"js_code\": \"for (let i = 0; i < csvbox.column['col1'].length; i++) { csvbox.column['col1'][i] = String(csvbox.column['col1'][i]).toUpperCase(); } return csvbox;\",\n \"active\": true,\n \"dependencies\": [],\n \"_delete\": false\n }\n ],\n \"pdf_metadata_config\": [\n {\n \"name\": \"Author\",\n \"source\": \"native\"\n },\n {\n \"name\": \"Invoice Number\",\n \"source\": \"document-kv\"\n },\n {\n \"name\": \"processed_by\",\n \"source\": \"static\",\n \"value\": \"AP Team\"\n },\n {\n \"name\": \"invoice_date\",\n \"source\": \"line-match\",\n \"value\": \"Invoice Date:\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.csvbox.io/1.1/sheet")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Accept"] = '<accept>'
request["Content-Type"] = '<content-type>'
request["x-csvbox-api-key"] = '<api-key>'
request["x-csvbox-secret-api-key"] = '<api-key>'
request.body = "{\n \"title\": \"Customer Import\",\n \"webhooks\": [\n {\n \"import_complete\": {\n \"url\": \"https://example.com/webhook\",\n \"send_copy\": false,\n \"custom_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ]\n }\n }\n ],\n \"destinations\": [\n {\n \"type\": \"webhook\",\n \"isActive\": true,\n \"settings\": {\n \"method\": \"POST\",\n \"url\": \"https://example.com/api/import\",\n \"post_data_format\": \"JSON\",\n \"rows_per_chunk\": 100,\n \"request_type\": \"parallel\",\n \"server_side_validation\": true,\n \"allow_resubmit\": \"all_rows\",\n \"custom_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ]\n }\n }\n ],\n \"sheet_columns\": [\n {\n \"column_name\": \"col1\",\n \"display_label\": \"Col1 - Text\",\n \"info_hint\": \"What is your highest educational degree\",\n \"matching_keywords\": \"degree, education\",\n \"type\": \"text\",\n \"validators\": {\n \"min_length\": 2,\n \"max_length\": 50\n },\n \"default_value\": \"\",\n \"required\": false,\n \"position\": 5\n },\n {\n \"column_name\": \"col2\",\n \"display_label\": \"col2 - Number\",\n \"info_hint\": \"Years of work experience\",\n \"type\": \"number\",\n \"validators\": {\n \"min_value\": 1,\n \"max_value\": 100\n },\n \"required\": false,\n \"position\": 6\n },\n {\n \"column_name\": \"col4\",\n \"display_label\": \"col4 - Email\",\n \"type\": \"email\",\n \"required\": false,\n \"position\": 7\n },\n {\n \"column_name\": \"col5\",\n \"display_label\": \"col5 - Date\",\n \"type\": \"date\",\n \"required\": false,\n \"validators\": {\n \"format\": \"YYYY-MM-DD\"\n },\n \"position\": 8\n },\n {\n \"column_name\": \"col6\",\n \"display_label\": \"col6 - Time\",\n \"type\": \"time\",\n \"required\": false,\n \"validators\": {\n \"format\": \"HH:mm:ss\"\n }\n },\n {\n \"column_name\": \"col7\",\n \"display_label\": \"col7 - Boolean\",\n \"type\": \"boolean\",\n \"required\": false\n },\n {\n \"column_name\": \"col8\",\n \"display_label\": \"col8 - Regex\",\n \"type\": \"regex\",\n \"required\": false,\n \"validators\": {\n \"expression\": \"^\\\\d{10}$\",\n \"error_message\": \"Please enter a valid 10 digit phone number\"\n }\n },\n {\n \"column_name\": \"col9\",\n \"display_label\": \"col9 - IP\",\n \"type\": \"ip\",\n \"required\": false,\n \"validators\": {\n \"version\": \"ipv4\"\n }\n },\n {\n \"column_name\": \"col10\",\n \"display_label\": \"col10 - URL\",\n \"type\": \"url\",\n \"required\": false\n },\n {\n \"column_name\": \"col11\",\n \"display_label\": \"col11 - Credit Card\",\n \"type\": \"credit_card\",\n \"required\": false\n },\n {\n \"column_name\": \"col12\",\n \"display_label\": \"col12 - Phone Number\",\n \"type\": \"phone_number\",\n \"required\": false,\n \"validators\": {\n \"country_code\": \"IN\"\n }\n },\n {\n \"column_name\": \"col13\",\n \"display_label\": \"col13 - Currency\",\n \"type\": \"currency\",\n \"required\": false,\n \"validators\": {\n \"symbol\": \"$\",\n \"require_symbol\": false\n }\n },\n {\n \"column_name\": \"col14\",\n \"display_label\": \"col14 - List\",\n \"type\": \"list\",\n \"required\": false,\n \"validators\": {\n \"values\": [\n {\n \"value\": \"ind\",\n \"display_label\": \"India\",\n \"dependents\": [\n {\n \"value\": \"mh\",\n \"display_label\": \"Maharashtra\",\n \"dependents\": [\n {\n \"value\": \"mum\",\n \"display_label\": \"Mumbai\"\n },\n {\n \"value\": \"pun\",\n \"display_label\": \"Pune\"\n }\n ]\n },\n {\n \"value\": \"gj\",\n \"display_label\": \"Gujarat\",\n \"dependents\": [\n {\n \"value\": \"amd\",\n \"display_label\": \"Ahmedabad\"\n },\n {\n \"value\": \"sur\",\n \"display_label\": \"Surat\"\n }\n ]\n }\n ]\n },\n {\n \"value\": \"usa\",\n \"display_label\": \"United States\",\n \"dependents\": [\n {\n \"value\": \"ca\",\n \"display_label\": \"California\",\n \"dependents\": [\n {\n \"value\": \"la\",\n \"display_label\": \"Los Angeles\"\n },\n {\n \"value\": \"sf\",\n \"display_label\": \"San Francisco\"\n }\n ]\n },\n {\n \"value\": \"ny\",\n \"display_label\": \"New York\",\n \"dependents\": [\n {\n \"value\": \"nyc\",\n \"display_label\": \"New York City\"\n },\n {\n \"value\": \"buf\",\n \"display_label\": \"Buffalo\"\n }\n ]\n }\n ]\n },\n {\n \"value\": \"can\",\n \"display_label\": \"Canada\",\n \"dependents\": [\n {\n \"value\": \"on\",\n \"display_label\": \"Ontario\",\n \"dependents\": [\n {\n \"value\": \"tor\",\n \"display_label\": \"Toronto\"\n },\n {\n \"value\": \"ott\",\n \"display_label\": \"Ottawa\"\n }\n ]\n },\n {\n \"value\": \"bc\",\n \"display_label\": \"British Columbia\",\n \"dependents\": [\n {\n \"value\": \"van\",\n \"display_label\": \"Vancouver\"\n },\n {\n \"value\": \"vic\",\n \"display_label\": \"Victoria\"\n }\n ]\n }\n ]\n }\n ],\n \"case_sensitive\": false\n }\n },\n {\n \"column_name\": \"col15\",\n \"display_label\": \"col15 - Dependent List\",\n \"type\": \"dependent_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col14\"\n }\n },\n {\n \"column_name\": \"col16\",\n \"display_label\": \"col16 - Dependent List\",\n \"type\": \"dependent_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col15\"\n }\n },\n {\n \"column_name\": \"col17\",\n \"display_label\": \"col17 - Dynamic List\",\n \"type\": \"dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"source_url\": \"https://example.com/api/dynamic-list-options\",\n \"request_method\": \"GET\",\n \"request_headers\": [],\n \"custom_user_attributes\": true,\n \"other_values\": false\n }\n },\n {\n \"column_name\": \"col18\",\n \"display_label\": \"col18 - Dependent Dynamic List\",\n \"type\": \"dependent_dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col17\"\n }\n },\n {\n \"column_name\": \"col19\",\n \"display_label\": \"col19 - Dependent Dynamic List\",\n \"type\": \"dependent_dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"primary_column\": \"col18\"\n }\n },\n {\n \"column_name\": \"col20\",\n \"display_label\": \"col20 - Multiselect List\",\n \"type\": \"multiselect_list\",\n \"required\": false,\n \"validators\": {\n \"values\": [\n \"Red\",\n \"Green\",\n \"Blue\",\n \"orange\",\n \"yellow\",\n \"black\"\n ],\n \"delimiter\": \",\",\n \"case_sensitive\": false,\n \"other_values\": false\n }\n },\n {\n \"column_name\": \"col21\",\n \"display_label\": \"col21 - Multiselect Dynamic List\",\n \"type\": \"multiselect_dynamic_list\",\n \"required\": false,\n \"validators\": {\n \"dml_source_url\": \"https://example.com/api/multiselect-dynamic-options\",\n \"dml_request_method\": \"GET\",\n \"dml_request_headers\": [],\n \"delimiter\": \",\",\n \"dml_other_values\": false\n }\n },\n {\n \"column_name\": \"col22\",\n \"display_label\": \"col22 - Percentage\",\n \"type\": \"percentage\",\n \"required\": false,\n \"validators\": {\n \"min_value\": 0,\n \"max_value\": 100,\n \"output\": \"percent\"\n }\n },\n {\n \"column_name\": \"col23\",\n \"display_label\": \"col23 - UUID\",\n \"type\": \"uuid\",\n \"required\": false\n },\n {\n \"column_name\": \"col24\",\n \"display_label\": \"col24 - JSON\",\n \"type\": \"json\",\n \"required\": false\n }\n ],\n \"steps\": {\n \"file_upload\": {\n \"types\": [\n \".csv\"\n ],\n \"title\": \"File Upload\",\n \"help\": \"Upload your CSV file\",\n \"sample_file_url\": \"\",\n \"size_mb\": 200,\n \"validation_msg\": \"upto 200mb allowed\",\n \"copy_paste\": true,\n \"copy_delimiter\": \"comma\",\n \"show_upload\": true,\n \"worksheet_select\": true,\n \"description_option\": true,\n \"lang\": \"en\",\n \"excel_date_format\": \"custom\",\n \"excel_date_custom\": \"DD-MM-YYYY\",\n \"hide_cancel\": false,\n \"split\": true,\n \"split_rows\": 1000,\n \"split_confirm\": \"no\",\n \"extract_types\": [\n \"pdf\",\n \"images\"\n ],\n \"page_limit\": 10,\n \"accept_raw_value\": false,\n \"skip_min_rows\": 2,\n \"skip_max_rows\": 1000,\n \"skip_min_cols\": 2,\n \"skip_max_cols\": 20\n },\n \"select_header\": {\n \"skip\": true,\n \"help\": \"Select header row\",\n \"default_row\": \"2\",\n \"encoding_option\": true,\n \"encoding\": \"windows-1252\",\n \"row_column_switch\": false\n },\n \"map_columns\": {\n \"skip\": true,\n \"help\": \"Map columns\",\n \"mapping_mode\": \"template_fields\",\n \"bulk_cols_dd\": false,\n \"accept_unmapped\": true,\n \"accept_unmapped_select\": true,\n \"allow_zero_template\": true,\n \"ignore_cols\": true,\n \"ignore_cols_default\": true,\n \"user_keywords\": false\n },\n \"verify_data\": {\n \"skip\": true,\n \"help\": \"Verify data\",\n \"row_display_mode\": \"invalid\",\n \"export_option\": true,\n \"search_option\": false,\n \"ai_transform\": true,\n \"allow_new_rows\": false,\n \"rows_display\": 25,\n \"allow_invalid\": true,\n \"invalid_confirmation\": false,\n \"max_rows\": 600,\n \"allow_upload_if_max\": false,\n \"max_rows_msg\": \"maaaaaax\",\n \"min_rows\": 2,\n \"min_rows_msg\": \"miiiiin\"\n },\n \"results\": {\n \"close_mode\": \"close_on_success\",\n \"redirect_url\": \"\",\n \"success_type\": \"static\",\n \"success_text\": \"Import successful\",\n \"success_method\": \"get\",\n \"success_url\": \"\",\n \"success_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ],\n \"failed_type\": \"static\",\n \"failed_text\": \"Failure\",\n \"failed_method\": \"get\",\n \"failed_url\": \"\",\n \"failed_headers\": [\n {\n \"key\": \"Content-Type\",\n \"value\": \"application/json\"\n }\n ],\n \"show_resubmit\": false,\n \"show_error_text\": false\n }\n },\n \"security_settings\": {\n \"region\": \"us\",\n \"domains\": [\n \"example.com\"\n ],\n \"import_url_upload\": true,\n \"s3_upload\": true\n },\n \"virtual_columns\": [\n {\n \"column_name\": \"full_name\",\n \"js_code\": \"const a = csvbox.row['col1'] || ''; const b = csvbox.row['col2'] || ''; return (a + ' ' + b).trim();\",\n \"active\": true,\n \"dependencies\": [],\n \"_delete\": false\n }\n ],\n \"validation_functions\": [\n {\n \"function_name\": \"check_email\",\n \"scope\": \"column\",\n \"columns\": [\n \"col4\"\n ],\n \"js_code\": \"const rows = csvbox.column['col4'] || []; const errs = []; for (let i = 0; i < rows.length; i++) { if (String(rows[i]).indexOf('@') === -1) { errs.push({ row_id: i + 1, column: 'col4', message: 'Not a valid email' }); } } return errs;\",\n \"active\": true\n },\n {\n \"function_name\": \"check_date\",\n \"scope\": \"column\",\n \"columns\": [\n \"col5\"\n ],\n \"js_code\": \"const rows = csvbox.column['col5'] || []; const errs = []; const today = dayjs(); for (let i = 0; i < rows.length; i++) { const raw = String(rows[i] || '').trim(); if (raw === '') { continue; } const d = dayjs(raw); if (!d.isValid() || d.format('YYYY-MM-DD') !== raw) { errs.push({ row_id: i + 1, column: 'col5', message: 'Use YYYY-MM-DD, e.g. 2024-01-31' }); } else if (d.isAfter(today)) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date cannot be in the future' }); } else if (d.year() < 1900) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date must be 1900 or later' }); } } return errs;\",\n \"dependencies\": [\n {\n \"url\": \"https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js\",\n \"globals\": [\n \"dayjs\"\n ]\n }\n ],\n \"active\": true\n }\n ],\n \"data_transforms\": [\n {\n \"transform_name\": \"uppercase_country\",\n \"scope\": \"column\",\n \"run_at\": \"before_validation\",\n \"columns\": [\n \"col1\"\n ],\n \"dynamic_columns\": [\n \"region\"\n ],\n \"js_code\": \"for (let i = 0; i < csvbox.column['col1'].length; i++) { csvbox.column['col1'][i] = String(csvbox.column['col1'][i]).toUpperCase(); } return csvbox;\",\n \"active\": true,\n \"dependencies\": [],\n \"_delete\": false\n }\n ],\n \"pdf_metadata_config\": [\n {\n \"name\": \"Author\",\n \"source\": \"native\"\n },\n {\n \"name\": \"Invoice Number\",\n \"source\": \"document-kv\"\n },\n {\n \"name\": \"processed_by\",\n \"source\": \"static\",\n \"value\": \"AP Team\"\n },\n {\n \"name\": \"invoice_date\",\n \"source\": \"line-match\",\n \"value\": \"Invoice Date:\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"status": "Sheet Created Successfully",
"data": {
"sheet_license_key": "<string>",
"title": "<string>",
"virtual_columns": [
{
"column_name": "full_name",
"result": "created"
}
],
"validation_functions": [
{
"function_name": "check_email",
"result": "updated"
}
],
"data_transforms": [
{
"transform_name": "uppercase_country",
"result": "unchanged"
}
]
}
}{
"status": "Sheet Creation Failed",
"errors": {
"virtual_columns.0.js_code": [
{
"code": "js_disallowed_global",
"message": "Disallowed global `fetch`. Snippets may only reference the `csvbox` argument, standard built-ins, and globals declared in this item's dependencies.",
"identifier": "fetch",
"line": 1,
"column": 7
}
]
}
}{
"status": "Sheet Creation Failed",
"errors": {
"virtual_columns.0.js_code": [
{
"code": "js_disallowed_global",
"message": "Disallowed global `fetch`. Snippets may only reference the `csvbox` argument, standard built-ins, and globals declared in this item's dependencies.",
"identifier": "fetch",
"line": 1,
"column": 7
}
]
}
}{
"status": "Sheet Creation Failed",
"errors": {
"virtual_columns.0.js_code": [
{
"code": "js_disallowed_global",
"message": "Disallowed global `fetch`. Snippets may only reference the `csvbox` argument, standard built-ins, and globals declared in this item's dependencies.",
"identifier": "fetch",
"line": 1,
"column": 7
}
]
}
}{
"status": "Sheet Creation Failed",
"errors": {
"virtual_columns.0.js_code": [
{
"code": "js_disallowed_global",
"message": "Disallowed global `fetch`. Snippets may only reference the `csvbox` argument, standard built-ins, and globals declared in this item's dependencies.",
"identifier": "fetch",
"line": 1,
"column": 7
}
]
}
}Headers
Must be application/json
"application/json"
Content type must be application/json
"application/json"
Body
"Customer Import"
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
[
{
"column_name": "col1",
"display_label": "Col1 - Text",
"info_hint": "What is your highest educational degree",
"matching_keywords": "degree, education",
"type": "text",
"validators": { "min_length": 2, "max_length": 50 },
"default_value": "",
"required": false,
"position": 5
},
{
"column_name": "col2",
"display_label": "col2 - Number",
"info_hint": "Years of work experience",
"type": "number",
"validators": { "min_value": 1, "max_value": 100 },
"required": false,
"position": 6
},
{
"column_name": "col4",
"display_label": "col4 - Email",
"type": "email",
"required": false,
"position": 7
},
{
"column_name": "col5",
"display_label": "col5 - Date",
"type": "date",
"required": false,
"validators": { "format": "YYYY-MM-DD" },
"position": 8
},
{
"column_name": "col6",
"display_label": "col6 - Time",
"type": "time",
"required": false,
"validators": { "format": "HH:mm:ss" }
},
{
"column_name": "col7",
"display_label": "col7 - Boolean",
"type": "boolean",
"required": false
},
{
"column_name": "col8",
"display_label": "col8 - Regex",
"type": "regex",
"required": false,
"validators": {
"expression": "^\\d{10}$",
"error_message": "Please enter a valid 10 digit phone number"
}
},
{
"column_name": "col9",
"display_label": "col9 - IP",
"type": "ip",
"required": false,
"validators": { "version": "ipv4" }
},
{
"column_name": "col10",
"display_label": "col10 - URL",
"type": "url",
"required": false
},
{
"column_name": "col11",
"display_label": "col11 - Credit Card",
"type": "credit_card",
"required": false
},
{
"column_name": "col12",
"display_label": "col12 - Phone Number",
"type": "phone_number",
"required": false,
"validators": { "country_code": "IN" }
},
{
"column_name": "col13",
"display_label": "col13 - Currency",
"type": "currency",
"required": false,
"validators": { "symbol": "$", "require_symbol": false }
},
{
"column_name": "col14",
"display_label": "col14 - List",
"type": "list",
"required": false,
"validators": {
"values": [
{
"value": "ind",
"display_label": "India",
"dependents": [
{
"value": "mh",
"display_label": "Maharashtra",
"dependents": [
{ "value": "mum", "display_label": "Mumbai" },
{ "value": "pun", "display_label": "Pune" }
]
},
{
"value": "gj",
"display_label": "Gujarat",
"dependents": [
{
"value": "amd",
"display_label": "Ahmedabad"
},
{ "value": "sur", "display_label": "Surat" }
]
}
]
},
{
"value": "usa",
"display_label": "United States",
"dependents": [
{
"value": "ca",
"display_label": "California",
"dependents": [
{
"value": "la",
"display_label": "Los Angeles"
},
{
"value": "sf",
"display_label": "San Francisco"
}
]
},
{
"value": "ny",
"display_label": "New York",
"dependents": [
{
"value": "nyc",
"display_label": "New York City"
},
{
"value": "buf",
"display_label": "Buffalo"
}
]
}
]
},
{
"value": "can",
"display_label": "Canada",
"dependents": [
{
"value": "on",
"display_label": "Ontario",
"dependents": [
{
"value": "tor",
"display_label": "Toronto"
},
{ "value": "ott", "display_label": "Ottawa" }
]
},
{
"value": "bc",
"display_label": "British Columbia",
"dependents": [
{
"value": "van",
"display_label": "Vancouver"
},
{
"value": "vic",
"display_label": "Victoria"
}
]
}
]
}
],
"case_sensitive": false
}
},
{
"column_name": "col15",
"display_label": "col15 - Dependent List",
"type": "dependent_list",
"required": false,
"validators": { "primary_column": "col14" }
},
{
"column_name": "col16",
"display_label": "col16 - Dependent List",
"type": "dependent_list",
"required": false,
"validators": { "primary_column": "col15" }
},
{
"column_name": "col17",
"display_label": "col17 - Dynamic List",
"type": "dynamic_list",
"required": false,
"validators": {
"source_url": "https://example.com/api/dynamic-list-options",
"request_method": "GET",
"request_headers": [],
"custom_user_attributes": true,
"other_values": false
}
},
{
"column_name": "col18",
"display_label": "col18 - Dependent Dynamic List",
"type": "dependent_dynamic_list",
"required": false,
"validators": { "primary_column": "col17" }
},
{
"column_name": "col19",
"display_label": "col19 - Dependent Dynamic List",
"type": "dependent_dynamic_list",
"required": false,
"validators": { "primary_column": "col18" }
},
{
"column_name": "col20",
"display_label": "col20 - Multiselect List",
"type": "multiselect_list",
"required": false,
"validators": {
"values": [
"Red",
"Green",
"Blue",
"orange",
"yellow",
"black"
],
"delimiter": ",",
"case_sensitive": false,
"other_values": false
}
},
{
"column_name": "col21",
"display_label": "col21 - Multiselect Dynamic List",
"type": "multiselect_dynamic_list",
"required": false,
"validators": {
"dml_source_url": "https://example.com/api/multiselect-dynamic-options",
"dml_request_method": "GET",
"dml_request_headers": [],
"delimiter": ",",
"dml_other_values": false
}
},
{
"column_name": "col22",
"display_label": "col22 - Percentage",
"type": "percentage",
"required": false,
"validators": {
"min_value": 0,
"max_value": 100,
"output": "percent"
}
},
{
"column_name": "col23",
"display_label": "col23 - UUID",
"type": "uuid",
"required": false
},
{
"column_name": "col24",
"display_label": "col24 - JSON",
"type": "json",
"required": false
}
]
Show child attributes
Show child attributes
Show child attributes
Show child attributes
POST: every item listed is created. Omitting the key creates nothing.
20Show child attributes
Show child attributes
POST: every item listed is created. Omitting the key creates nothing. Two functions are shown: check_email needs nothing beyond the built-ins, while check_date declares dayjs — remove that dependency and its code is rejected with js_disallowed_global. That entry omits the optional integrity field so this body can be sent unmodified; in your own sheet add "integrity": "sha384-<digest published by the CDN>" beside the url, and add further scripts as further comma-separated objects in the same array (5 max).
10Show child attributes
Show child attributes
[
{
"function_name": "check_email",
"scope": "column",
"columns": ["col4"],
"js_code": "const rows = csvbox.column['col4'] || []; const errs = []; for (let i = 0; i < rows.length; i++) { if (String(rows[i]).indexOf('@') === -1) { errs.push({ row_id: i + 1, column: 'col4', message: 'Not a valid email' }); } } return errs;",
"active": true
},
{
"function_name": "check_date",
"scope": "column",
"columns": ["col5"],
"js_code": "const rows = csvbox.column['col5'] || []; const errs = []; const today = dayjs(); for (let i = 0; i < rows.length; i++) { const raw = String(rows[i] || '').trim(); if (raw === '') { continue; } const d = dayjs(raw); if (!d.isValid() || d.format('YYYY-MM-DD') !== raw) { errs.push({ row_id: i + 1, column: 'col5', message: 'Use YYYY-MM-DD, e.g. 2024-01-31' }); } else if (d.isAfter(today)) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date cannot be in the future' }); } else if (d.year() < 1900) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date must be 1900 or later' }); } } return errs;",
"dependencies": [
{
"url": "https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js",
"globals": ["dayjs"]
}
],
"active": true
}
]
POST: every item listed is created. Omitting the key creates nothing.
10Show child attributes
Show child attributes
Fields to extract from an uploaded PDF/DOCX. Sending the key replaces the whole stored array; omitting it leaves any existing configuration untouched.
20Show child attributes
Show child attributes
[
{ "name": "Author", "source": "native" },
{
"name": "Invoice Number",
"source": "document-kv"
},
{
"name": "processed_by",
"source": "static",
"value": "AP Team"
},
{
"name": "invoice_date",
"source": "line-match",
"value": "Invoice Date:"
}
]

