[{"data":1,"prerenderedAt":2116},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fapi\u002Ffiles-and-storage":3},{"id":4,"title":5,"body":6,"description":2107,"extension":2108,"meta":2109,"navigation":2110,"path":2111,"redirect":2112,"seo":2113,"stem":2114,"__hash__":2115},"docs\u002Fdocs\u002Fapi\u002Ffiles-and-storage.md","Working with Files and S3",{"type":7,"value":8,"toc":2084},"minimark",[9,13,17,20,23,48,53,58,81,85,105,109,131,135,151,154,180,187,191,239,242,280,284,287,290,293,310,313,364,367,421,424,501,504,536,540,543,545,572,575,635,638,706,709,767,770,839,842,917,919,950,954,965,968,985,988,1068,1070,1090,1093,1170,1178,1187,1191,1194,1197,1199,1221,1224,1298,1301,1343,1346,1406,1409,1481,1483,1502,1506,1509,1511,1523,1526,1577,1580,1631,1633,1648,1652,1655,1677,1688,1691,1694,1886,1888,1910,1914,1917,1959,1963,1969,1989,1995,2006,2010,2025,2029,2045,2049,2080],[10,11,5],"h1",{"id":12},"working-with-files-and-s3",[14,15,16],"p",{},"Use this page to explore, query, and modify files (CSV, JSON, JSONL, Parquet) and S3 datasets through the DBConvert Streams API.",[14,18,19],{},"Files are treated as queryable datasets in DBConvert Streams, so you can inspect and run SQL against CSV, JSON, JSONL, and Parquet files without creating streams first.",[14,21,22],{},"This page covers how to:",[24,25,26,30,33,36,39,42,45],"ul",{},[27,28,29],"li",{},"browse local filesystem roots and folders",[27,31,32],{},"verify a local folder is writable",[27,34,35],{},"inspect file metadata, preview rows, and get exact counts",[27,37,38],{},"run SQL against CSV, JSON, JSONL, and Parquet files",[27,40,41],{},"configure and browse S3-compatible storage",[27,43,44],{},"validate S3 paths and manifests",[27,46,47],{},"apply row-level edits, inserts, and deletes to files",[49,50,52],"h2",{"id":51},"common-workflows","Common workflows",[54,55,57],"h3",{"id":56},"explore-a-local-file","Explore a local file",[59,60,61,69,75],"ol",{},[27,62,63,64,68],{},"Call ",[65,66,67],"code",{},"\u002Ffiles\u002Fmeta"," to confirm format and schema.",[27,70,63,71,74],{},[65,72,73],{},"\u002Ffiles\u002Fdata"," to preview rows.",[27,76,63,77,80],{},[65,78,79],{},"\u002Ffiles\u002Fcount"," if you need an exact total.",[54,82,84],{"id":83},"validate-an-s3-dataset-before-using-it","Validate an S3 dataset before using it",[59,86,87,93,99],{},[27,88,63,89,92],{},[65,90,91],{},"\u002Ffiles\u002Fs3\u002Fconfigure"," to establish credentials.",[27,94,63,95,98],{},[65,96,97],{},"\u002Ffiles\u002Fs3\u002Fvalidate"," to confirm the path and recommended read mode.",[27,100,63,101,104],{},[65,102,103],{},"\u002Ffiles\u002Fs3\u002Fmanifest"," if the dataset is manifest-driven.",[54,106,108],{"id":107},"edit-rows-in-a-file","Edit rows in a file",[59,110,111,120,126],{},[27,112,63,113,115,116,119],{},[65,114,73],{}," and keep the returned ",[65,117,118],{},"__rowid"," values.",[27,121,63,122,125],{},[65,123,124],{},"\u002Ffiles\u002Frows\u002Fapply"," with edits, inserts, or deletes.",[27,127,63,128,130],{},[65,129,73],{}," again to confirm the rewritten file contains the expected rows.",[49,132,134],{"id":133},"prerequisites","Prerequisites",[24,136,137,140,143],{},[27,138,139],{},"A running DBConvert Streams API server",[27,141,142],{},"Your API base URL",[27,144,145,146],{},"Access to the authentication headers described in ",[147,148,150],"a",{"href":149},"\u002Fdocs\u002Fapi\u002Freference#authentication-headers","API Reference",[14,152,153],{},"Path format depends on where DBConvert Streams is running:",[24,155,156,162,168,174],{},[27,157,158,159],{},"Desktop app on Windows: use an absolute Windows path such as ",[65,160,161],{},"C:\\Users\\alice\\Downloads\\customers.csv",[27,163,164,165],{},"Desktop app on macOS or Linux: use an absolute local path such as ",[65,166,167],{},"\u002FUsers\u002Falice\u002FDownloads\u002Fcustomers.csv",[27,169,170,171],{},"Docker or server deployment: use the path that exists inside the running container or host, such as ",[65,172,173],{},"\u002Fdata\u002Fimports\u002Fcustomers.csv",[27,175,176,177],{},"S3-compatible storage: use an S3 URI such as ",[65,178,179],{},"s3:\u002F\u002Fanalytics-bucket\u002Fexports\u002Fcustomers.parquet",[14,181,182,183,186],{},"The commands below use ",[65,184,185],{},"ABSOLUTE_FILE_PATH"," as a placeholder. Replace it with the correct path for your environment.",[49,188,190],{"id":189},"use-a-common-request-pattern","Use a common request pattern",[192,193,198],"pre",{"className":194,"code":195,"language":196,"meta":197,"style":197},"language-bash shiki shiki-themes github-light github-dark","API_URL=\"http:\u002F\u002F127.0.0.1:8020\u002Fapi\u002Fv1\"\nAPI_KEY=\"YOUR_API_KEY\"\nINSTALL_ID=\"YOUR_INSTALL_ID\"\n","bash","",[65,199,200,217,228],{"__ignoreMap":197},[201,202,205,209,213],"span",{"class":203,"line":204},"line",1,[201,206,208],{"class":207},"sVt8B","API_URL",[201,210,212],{"class":211},"szBVR","=",[201,214,216],{"class":215},"sZZnC","\"http:\u002F\u002F127.0.0.1:8020\u002Fapi\u002Fv1\"\n",[201,218,220,223,225],{"class":203,"line":219},2,[201,221,222],{"class":207},"API_KEY",[201,224,212],{"class":211},[201,226,227],{"class":215},"\"YOUR_API_KEY\"\n",[201,229,231,234,236],{"class":203,"line":230},3,[201,232,233],{"class":207},"INSTALL_ID",[201,235,212],{"class":211},[201,237,238],{"class":215},"\"YOUR_INSTALL_ID\"\n",[14,240,241],{},"All routes on this page use the same authenticated header pattern:",[192,243,245],{"className":194,"code":244,"language":196,"meta":197,"style":197},"-H \"X-API-Key: $API_KEY\" \\\n-H \"X-Install-ID: $INSTALL_ID\"\n",[65,246,247,266],{"__ignoreMap":197},[201,248,249,253,256,259,262],{"class":203,"line":204},[201,250,252],{"class":251},"sScJk","-H",[201,254,255],{"class":215}," \"X-API-Key: ",[201,257,258],{"class":207},"$API_KEY",[201,260,261],{"class":215},"\"",[201,263,265],{"class":264},"sj4cs"," \\\n",[201,267,268,271,274,277],{"class":203,"line":219},[201,269,270],{"class":207},"-H ",[201,272,273],{"class":215},"\"X-Install-ID: ",[201,275,276],{"class":207},"$INSTALL_ID",[201,278,279],{"class":215},"\"\n",[49,281,283],{"id":282},"local-filesystem-helpers","Local filesystem helpers",[14,285,286],{},"Use the filesystem helper routes when building file pickers or validating paths before stream or SQL work.",[14,288,289],{},"These endpoints are typically used by UIs or automation scripts before reading or writing files.",[14,291,292],{},"Routes:",[24,294,295,300,305],{},[27,296,297],{},[65,298,299],{},"GET \u002Ffs\u002Froots",[27,301,302],{},[65,303,304],{},"GET \u002Ffs\u002Flist",[27,306,307],{},[65,308,309],{},"POST \u002Ffs\u002Fwritable",[14,311,312],{},"Get common roots for quick navigation:",[192,314,316],{"className":194,"code":315,"language":196,"meta":197,"style":197},"curl -X GET \"$API_URL\u002Ffs\u002Froots\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\"\n",[65,317,318,340,353],{"__ignoreMap":197},[201,319,320,323,326,329,332,335,338],{"class":203,"line":204},[201,321,322],{"class":251},"curl",[201,324,325],{"class":264}," -X",[201,327,328],{"class":215}," GET",[201,330,331],{"class":215}," \"",[201,333,334],{"class":207},"$API_URL",[201,336,337],{"class":215},"\u002Ffs\u002Froots\"",[201,339,265],{"class":264},[201,341,342,345,347,349,351],{"class":203,"line":219},[201,343,344],{"class":264},"  -H",[201,346,255],{"class":215},[201,348,258],{"class":207},[201,350,261],{"class":215},[201,352,265],{"class":264},[201,354,355,357,360,362],{"class":203,"line":230},[201,356,344],{"class":264},[201,358,359],{"class":215}," \"X-Install-ID: ",[201,361,276],{"class":207},[201,363,279],{"class":215},[14,365,366],{},"List a folder:",[192,368,370],{"className":194,"code":369,"language":196,"meta":197,"style":197},"curl -G \"$API_URL\u002Ffs\u002Flist\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\" \\\n  --data-urlencode \"path=ABSOLUTE_FOLDER_PATH\"\n",[65,371,372,388,400,412],{"__ignoreMap":197},[201,373,374,376,379,381,383,386],{"class":203,"line":204},[201,375,322],{"class":251},[201,377,378],{"class":264}," -G",[201,380,331],{"class":215},[201,382,334],{"class":207},[201,384,385],{"class":215},"\u002Ffs\u002Flist\"",[201,387,265],{"class":264},[201,389,390,392,394,396,398],{"class":203,"line":219},[201,391,344],{"class":264},[201,393,255],{"class":215},[201,395,258],{"class":207},[201,397,261],{"class":215},[201,399,265],{"class":264},[201,401,402,404,406,408,410],{"class":203,"line":230},[201,403,344],{"class":264},[201,405,359],{"class":215},[201,407,276],{"class":207},[201,409,261],{"class":215},[201,411,265],{"class":264},[201,413,415,418],{"class":203,"line":414},4,[201,416,417],{"class":264},"  --data-urlencode",[201,419,420],{"class":215}," \"path=ABSOLUTE_FOLDER_PATH\"\n",[14,422,423],{},"Check whether a folder is writable:",[192,425,427],{"className":194,"code":426,"language":196,"meta":197,"style":197},"curl -X POST \"$API_URL\u002Ffs\u002Fwritable\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"path\": \"ABSOLUTE_FOLDER_PATH\"\n  }'\n",[65,428,429,447,459,471,480,489,495],{"__ignoreMap":197},[201,430,431,433,435,438,440,442,445],{"class":203,"line":204},[201,432,322],{"class":251},[201,434,325],{"class":264},[201,436,437],{"class":215}," POST",[201,439,331],{"class":215},[201,441,334],{"class":207},[201,443,444],{"class":215},"\u002Ffs\u002Fwritable\"",[201,446,265],{"class":264},[201,448,449,451,453,455,457],{"class":203,"line":219},[201,450,344],{"class":264},[201,452,255],{"class":215},[201,454,258],{"class":207},[201,456,261],{"class":215},[201,458,265],{"class":264},[201,460,461,463,465,467,469],{"class":203,"line":230},[201,462,344],{"class":264},[201,464,359],{"class":215},[201,466,276],{"class":207},[201,468,261],{"class":215},[201,470,265],{"class":264},[201,472,473,475,478],{"class":203,"line":414},[201,474,344],{"class":264},[201,476,477],{"class":215}," \"Content-Type: application\u002Fjson\"",[201,479,265],{"class":264},[201,481,483,486],{"class":203,"line":482},5,[201,484,485],{"class":264},"  -d",[201,487,488],{"class":215}," '{\n",[201,490,492],{"class":203,"line":491},6,[201,493,494],{"class":215},"    \"path\": \"ABSOLUTE_FOLDER_PATH\"\n",[201,496,498],{"class":203,"line":497},7,[201,499,500],{"class":215},"  }'\n",[14,502,503],{},"Verify by checking:",[24,505,506,512,526],{},[27,507,508,511],{},[65,509,510],{},"\u002Ffs\u002Froots"," returns at least one directory you can navigate from your deployment environment",[27,513,514,517,518,521,522,525],{},[65,515,516],{},"\u002Ffs\u002Flist"," echoes the requested ",[65,519,520],{},"path"," and returns ",[65,523,524],{},"entries"," for that location",[27,527,528,531,532,535],{},[65,529,530],{},"\u002Ffs\u002Fwritable"," returns ",[65,533,534],{},"\"ok\": true"," before you use the folder as an output location",[49,537,539],{"id":538},"file-inspection","File inspection",[14,541,542],{},"Use these routes when you need file structure, preview data, CSV dialect details, or exact row counts.",[14,544,292],{},[24,546,547,552,557,562,567],{},[27,548,549],{},[65,550,551],{},"GET \u002Ffiles\u002Fmeta",[27,553,554],{},[65,555,556],{},"GET \u002Ffiles\u002Fdata",[27,558,559],{},[65,560,561],{},"GET \u002Ffiles\u002Fcount",[27,563,564],{},[65,565,566],{},"POST \u002Ffiles\u002Fcsv\u002Fsniff",[27,568,569],{},[65,570,571],{},"POST \u002Ffiles\u002Fsummary",[14,573,574],{},"Read metadata for a file:",[192,576,578],{"className":194,"code":577,"language":196,"meta":197,"style":197},"curl -G \"$API_URL\u002Ffiles\u002Fmeta\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\" \\\n  --data-urlencode \"path=ABSOLUTE_FILE_PATH\" \\\n  --data-urlencode \"format=csv\"\n",[65,579,580,595,607,619,628],{"__ignoreMap":197},[201,581,582,584,586,588,590,593],{"class":203,"line":204},[201,583,322],{"class":251},[201,585,378],{"class":264},[201,587,331],{"class":215},[201,589,334],{"class":207},[201,591,592],{"class":215},"\u002Ffiles\u002Fmeta\"",[201,594,265],{"class":264},[201,596,597,599,601,603,605],{"class":203,"line":219},[201,598,344],{"class":264},[201,600,255],{"class":215},[201,602,258],{"class":207},[201,604,261],{"class":215},[201,606,265],{"class":264},[201,608,609,611,613,615,617],{"class":203,"line":230},[201,610,344],{"class":264},[201,612,359],{"class":215},[201,614,276],{"class":207},[201,616,261],{"class":215},[201,618,265],{"class":264},[201,620,621,623,626],{"class":203,"line":414},[201,622,417],{"class":264},[201,624,625],{"class":215}," \"path=ABSOLUTE_FILE_PATH\"",[201,627,265],{"class":264},[201,629,630,632],{"class":203,"line":482},[201,631,417],{"class":264},[201,633,634],{"class":215}," \"format=csv\"\n",[14,636,637],{},"Preview rows from a file:",[192,639,641],{"className":194,"code":640,"language":196,"meta":197,"style":197},"curl -G \"$API_URL\u002Ffiles\u002Fdata\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\" \\\n  --data-urlencode \"path=ABSOLUTE_FILE_PATH\" \\\n  --data-urlencode \"format=csv\" \\\n  --data-urlencode \"limit=50\"\n",[65,642,643,658,670,682,690,699],{"__ignoreMap":197},[201,644,645,647,649,651,653,656],{"class":203,"line":204},[201,646,322],{"class":251},[201,648,378],{"class":264},[201,650,331],{"class":215},[201,652,334],{"class":207},[201,654,655],{"class":215},"\u002Ffiles\u002Fdata\"",[201,657,265],{"class":264},[201,659,660,662,664,666,668],{"class":203,"line":219},[201,661,344],{"class":264},[201,663,255],{"class":215},[201,665,258],{"class":207},[201,667,261],{"class":215},[201,669,265],{"class":264},[201,671,672,674,676,678,680],{"class":203,"line":230},[201,673,344],{"class":264},[201,675,359],{"class":215},[201,677,276],{"class":207},[201,679,261],{"class":215},[201,681,265],{"class":264},[201,683,684,686,688],{"class":203,"line":414},[201,685,417],{"class":264},[201,687,625],{"class":215},[201,689,265],{"class":264},[201,691,692,694,697],{"class":203,"line":482},[201,693,417],{"class":264},[201,695,696],{"class":215}," \"format=csv\"",[201,698,265],{"class":264},[201,700,701,703],{"class":203,"line":491},[201,702,417],{"class":264},[201,704,705],{"class":215}," \"limit=50\"\n",[14,707,708],{},"Get an exact count for the same file:",[192,710,712],{"className":194,"code":711,"language":196,"meta":197,"style":197},"curl -G \"$API_URL\u002Ffiles\u002Fcount\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\" \\\n  --data-urlencode \"path=ABSOLUTE_FILE_PATH\" \\\n  --data-urlencode \"format=csv\"\n",[65,713,714,729,741,753,761],{"__ignoreMap":197},[201,715,716,718,720,722,724,727],{"class":203,"line":204},[201,717,322],{"class":251},[201,719,378],{"class":264},[201,721,331],{"class":215},[201,723,334],{"class":207},[201,725,726],{"class":215},"\u002Ffiles\u002Fcount\"",[201,728,265],{"class":264},[201,730,731,733,735,737,739],{"class":203,"line":219},[201,732,344],{"class":264},[201,734,255],{"class":215},[201,736,258],{"class":207},[201,738,261],{"class":215},[201,740,265],{"class":264},[201,742,743,745,747,749,751],{"class":203,"line":230},[201,744,344],{"class":264},[201,746,359],{"class":215},[201,748,276],{"class":207},[201,750,261],{"class":215},[201,752,265],{"class":264},[201,754,755,757,759],{"class":203,"line":414},[201,756,417],{"class":264},[201,758,625],{"class":215},[201,760,265],{"class":264},[201,762,763,765],{"class":203,"line":482},[201,764,417],{"class":264},[201,766,634],{"class":215},[14,768,769],{},"Sniff CSV dialect and inferred column options:",[192,771,773],{"className":194,"code":772,"language":196,"meta":197,"style":197},"curl -X POST \"$API_URL\u002Ffiles\u002Fcsv\u002Fsniff\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"path\": \"ABSOLUTE_FILE_PATH\"\n  }'\n",[65,774,775,792,804,816,824,830,835],{"__ignoreMap":197},[201,776,777,779,781,783,785,787,790],{"class":203,"line":204},[201,778,322],{"class":251},[201,780,325],{"class":264},[201,782,437],{"class":215},[201,784,331],{"class":215},[201,786,334],{"class":207},[201,788,789],{"class":215},"\u002Ffiles\u002Fcsv\u002Fsniff\"",[201,791,265],{"class":264},[201,793,794,796,798,800,802],{"class":203,"line":219},[201,795,344],{"class":264},[201,797,255],{"class":215},[201,799,258],{"class":207},[201,801,261],{"class":215},[201,803,265],{"class":264},[201,805,806,808,810,812,814],{"class":203,"line":230},[201,807,344],{"class":264},[201,809,359],{"class":215},[201,811,276],{"class":207},[201,813,261],{"class":215},[201,815,265],{"class":264},[201,817,818,820,822],{"class":203,"line":414},[201,819,344],{"class":264},[201,821,477],{"class":215},[201,823,265],{"class":264},[201,825,826,828],{"class":203,"line":482},[201,827,485],{"class":264},[201,829,488],{"class":215},[201,831,832],{"class":203,"line":491},[201,833,834],{"class":215},"    \"path\": \"ABSOLUTE_FILE_PATH\"\n",[201,836,837],{"class":203,"line":497},[201,838,500],{"class":215},[14,840,841],{},"Get column-level summary statistics:",[192,843,845],{"className":194,"code":844,"language":196,"meta":197,"style":197},"curl -X POST \"$API_URL\u002Ffiles\u002Fsummary\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"path\": \"ABSOLUTE_FILE_PATH\",\n    \"format\": \"csv\"\n  }'\n",[65,846,847,864,876,888,896,902,907,912],{"__ignoreMap":197},[201,848,849,851,853,855,857,859,862],{"class":203,"line":204},[201,850,322],{"class":251},[201,852,325],{"class":264},[201,854,437],{"class":215},[201,856,331],{"class":215},[201,858,334],{"class":207},[201,860,861],{"class":215},"\u002Ffiles\u002Fsummary\"",[201,863,265],{"class":264},[201,865,866,868,870,872,874],{"class":203,"line":219},[201,867,344],{"class":264},[201,869,255],{"class":215},[201,871,258],{"class":207},[201,873,261],{"class":215},[201,875,265],{"class":264},[201,877,878,880,882,884,886],{"class":203,"line":230},[201,879,344],{"class":264},[201,881,359],{"class":215},[201,883,276],{"class":207},[201,885,261],{"class":215},[201,887,265],{"class":264},[201,889,890,892,894],{"class":203,"line":414},[201,891,344],{"class":264},[201,893,477],{"class":215},[201,895,265],{"class":264},[201,897,898,900],{"class":203,"line":482},[201,899,485],{"class":264},[201,901,488],{"class":215},[201,903,904],{"class":203,"line":491},[201,905,906],{"class":215},"    \"path\": \"ABSOLUTE_FILE_PATH\",\n",[201,908,909],{"class":203,"line":497},[201,910,911],{"class":215},"    \"format\": \"csv\"\n",[201,913,915],{"class":203,"line":914},8,[201,916,500],{"class":215},[14,918,503],{},[24,920,921,926,933,938,944],{},[27,922,923,925],{},[65,924,67],{}," returns a non-empty schema for a known file",[27,927,928,930,931],{},[65,929,73],{}," returns rows, and rows you may edit later include ",[65,932,118],{},[27,934,935,937],{},[65,936,79],{}," returns a stable numeric total for the same path and format",[27,939,940,943],{},[65,941,942],{},"\u002Ffiles\u002Fcsv\u002Fsniff"," reports a delimiter and header setting that match the real CSV file",[27,945,946,949],{},[65,947,948],{},"\u002Ffiles\u002Fsummary"," includes the same columns you saw in metadata or preview output",[49,951,953],{"id":952},"sql-on-files","SQL on files",[14,955,956,957,960,961,964],{},"Use ",[65,958,959],{},"POST \u002Ffiles\u002Fquery"," when you need to run a ",[65,962,963],{},"SELECT"," query over files without creating a stream first.",[14,966,967],{},"Supported file readers in the current contract include:",[24,969,970,975,980],{},[27,971,972],{},[65,973,974],{},"read_csv_auto(...)",[27,976,977],{},[65,978,979],{},"read_json_auto(...)",[27,981,982],{},[65,983,984],{},"read_parquet(...)",[14,986,987],{},"Example: inspect the first rows in a file",[192,989,991],{"className":194,"code":990,"language":196,"meta":197,"style":197},"curl -X POST \"$API_URL\u002Ffiles\u002Fquery\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"query\": \"SELECT * FROM read_csv_auto('\\''ABSOLUTE_FILE_PATH'\\'') LIMIT 10\"\n  }'\n",[65,992,993,1010,1022,1034,1042,1048,1064],{"__ignoreMap":197},[201,994,995,997,999,1001,1003,1005,1008],{"class":203,"line":204},[201,996,322],{"class":251},[201,998,325],{"class":264},[201,1000,437],{"class":215},[201,1002,331],{"class":215},[201,1004,334],{"class":207},[201,1006,1007],{"class":215},"\u002Ffiles\u002Fquery\"",[201,1009,265],{"class":264},[201,1011,1012,1014,1016,1018,1020],{"class":203,"line":219},[201,1013,344],{"class":264},[201,1015,255],{"class":215},[201,1017,258],{"class":207},[201,1019,261],{"class":215},[201,1021,265],{"class":264},[201,1023,1024,1026,1028,1030,1032],{"class":203,"line":230},[201,1025,344],{"class":264},[201,1027,359],{"class":215},[201,1029,276],{"class":207},[201,1031,261],{"class":215},[201,1033,265],{"class":264},[201,1035,1036,1038,1040],{"class":203,"line":414},[201,1037,344],{"class":264},[201,1039,477],{"class":215},[201,1041,265],{"class":264},[201,1043,1044,1046],{"class":203,"line":482},[201,1045,485],{"class":264},[201,1047,488],{"class":215},[201,1049,1050,1053,1056,1059,1061],{"class":203,"line":491},[201,1051,1052],{"class":215},"    \"query\": \"SELECT * FROM read_csv_auto('",[201,1054,1055],{"class":264},"\\'",[201,1057,1058],{"class":215},"'ABSOLUTE_FILE_PATH'",[201,1060,1055],{"class":264},[201,1062,1063],{"class":215},"') LIMIT 10\"\n",[201,1065,1066],{"class":203,"line":497},[201,1067,500],{"class":215},[14,1069,503],{},[24,1071,1072,1078,1084],{},[27,1073,1074,1075],{},"the response contains ",[65,1076,1077],{},"status: \"success\"",[27,1079,1080,1083],{},[65,1081,1082],{},"columns"," match the selected query projection",[27,1085,1086,1089],{},[65,1087,1088],{},"rows"," contain only the records your SQL should return",[14,1091,1092],{},"Example: aggregate records in a Parquet dataset",[192,1094,1096],{"className":194,"code":1095,"language":196,"meta":197,"style":197},"curl -X POST \"$API_URL\u002Ffiles\u002Fquery\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"query\": \"SELECT country, count(*) AS row_count FROM read_parquet('\\''ABSOLUTE_FILE_PATH'\\'') GROUP BY country ORDER BY row_count DESC\"\n  }'\n",[65,1097,1098,1114,1126,1138,1146,1152,1166],{"__ignoreMap":197},[201,1099,1100,1102,1104,1106,1108,1110,1112],{"class":203,"line":204},[201,1101,322],{"class":251},[201,1103,325],{"class":264},[201,1105,437],{"class":215},[201,1107,331],{"class":215},[201,1109,334],{"class":207},[201,1111,1007],{"class":215},[201,1113,265],{"class":264},[201,1115,1116,1118,1120,1122,1124],{"class":203,"line":219},[201,1117,344],{"class":264},[201,1119,255],{"class":215},[201,1121,258],{"class":207},[201,1123,261],{"class":215},[201,1125,265],{"class":264},[201,1127,1128,1130,1132,1134,1136],{"class":203,"line":230},[201,1129,344],{"class":264},[201,1131,359],{"class":215},[201,1133,276],{"class":207},[201,1135,261],{"class":215},[201,1137,265],{"class":264},[201,1139,1140,1142,1144],{"class":203,"line":414},[201,1141,344],{"class":264},[201,1143,477],{"class":215},[201,1145,265],{"class":264},[201,1147,1148,1150],{"class":203,"line":482},[201,1149,485],{"class":264},[201,1151,488],{"class":215},[201,1153,1154,1157,1159,1161,1163],{"class":203,"line":491},[201,1155,1156],{"class":215},"    \"query\": \"SELECT country, count(*) AS row_count FROM read_parquet('",[201,1158,1055],{"class":264},[201,1160,1058],{"class":215},[201,1162,1055],{"class":264},[201,1164,1165],{"class":215},"') GROUP BY country ORDER BY row_count DESC\"\n",[201,1167,1168],{"class":203,"line":497},[201,1169,500],{"class":215},[14,1171,1172,1173,1177],{},"You can also join multiple files in one query. For mixed file and database SQL, see ",[147,1174,1176],{"href":1175},"\u002Fdocs\u002Fapi\u002Ffederated-queries","Federated Query Workflows",".\nYou can also join multiple files or combine file queries with database tables.",[14,1179,1180,1181,1183,1184,1186],{},"For example, you can join a Parquet dataset with a CSV file or a PostgreSQL table in a single query. See ",[147,1182,1176],{"href":1175}," for cross-source SQL examples.\nOnly read-only SQL is allowed on this route, so treat it as a file query endpoint for ",[65,1185,963],{},"-style inspection rather than file mutation.",[49,1188,1190],{"id":1189},"s3-compatible-storage","S3-compatible storage",[14,1192,1193],{},"Use these routes when the file lives in AWS S3, MinIO, DigitalOcean Spaces, Wasabi, or another S3-compatible provider.",[14,1195,1196],{},"S3 storage is treated the same as local files once configured, so you can inspect and query objects through the same file APIs.",[14,1198,292],{},[24,1200,1201,1206,1211,1216],{},[27,1202,1203],{},[65,1204,1205],{},"POST \u002Ffiles\u002Fs3\u002Fconfigure",[27,1207,1208],{},[65,1209,1210],{},"GET \u002Ffiles\u002Fs3\u002Fbuckets",[27,1212,1213],{},[65,1214,1215],{},"POST \u002Ffiles\u002Fs3\u002Fbuckets",[27,1217,1218],{},[65,1219,1220],{},"GET \u002Ffiles\u002Fs3\u002Flist",[14,1222,1223],{},"Configure an S3 session first:",[192,1225,1227],{"className":194,"code":1226,"language":196,"meta":197,"style":197},"curl -X POST \"$API_URL\u002Ffiles\u002Fs3\u002Fconfigure\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"credentialSource\": \"aws\",\n    \"region\": \"us-east-1\"\n  }'\n",[65,1228,1229,1246,1258,1270,1278,1284,1289,1294],{"__ignoreMap":197},[201,1230,1231,1233,1235,1237,1239,1241,1244],{"class":203,"line":204},[201,1232,322],{"class":251},[201,1234,325],{"class":264},[201,1236,437],{"class":215},[201,1238,331],{"class":215},[201,1240,334],{"class":207},[201,1242,1243],{"class":215},"\u002Ffiles\u002Fs3\u002Fconfigure\"",[201,1245,265],{"class":264},[201,1247,1248,1250,1252,1254,1256],{"class":203,"line":219},[201,1249,344],{"class":264},[201,1251,255],{"class":215},[201,1253,258],{"class":207},[201,1255,261],{"class":215},[201,1257,265],{"class":264},[201,1259,1260,1262,1264,1266,1268],{"class":203,"line":230},[201,1261,344],{"class":264},[201,1263,359],{"class":215},[201,1265,276],{"class":207},[201,1267,261],{"class":215},[201,1269,265],{"class":264},[201,1271,1272,1274,1276],{"class":203,"line":414},[201,1273,344],{"class":264},[201,1275,477],{"class":215},[201,1277,265],{"class":264},[201,1279,1280,1282],{"class":203,"line":482},[201,1281,485],{"class":264},[201,1283,488],{"class":215},[201,1285,1286],{"class":203,"line":491},[201,1287,1288],{"class":215},"    \"credentialSource\": \"aws\",\n",[201,1290,1291],{"class":203,"line":497},[201,1292,1293],{"class":215},"    \"region\": \"us-east-1\"\n",[201,1295,1296],{"class":203,"line":914},[201,1297,500],{"class":215},[14,1299,1300],{},"List available buckets:",[192,1302,1304],{"className":194,"code":1303,"language":196,"meta":197,"style":197},"curl -G \"$API_URL\u002Ffiles\u002Fs3\u002Fbuckets\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\"\n",[65,1305,1306,1321,1333],{"__ignoreMap":197},[201,1307,1308,1310,1312,1314,1316,1319],{"class":203,"line":204},[201,1309,322],{"class":251},[201,1311,378],{"class":264},[201,1313,331],{"class":215},[201,1315,334],{"class":207},[201,1317,1318],{"class":215},"\u002Ffiles\u002Fs3\u002Fbuckets\"",[201,1320,265],{"class":264},[201,1322,1323,1325,1327,1329,1331],{"class":203,"line":219},[201,1324,344],{"class":264},[201,1326,255],{"class":215},[201,1328,258],{"class":207},[201,1330,261],{"class":215},[201,1332,265],{"class":264},[201,1334,1335,1337,1339,1341],{"class":203,"line":230},[201,1336,344],{"class":264},[201,1338,359],{"class":215},[201,1340,276],{"class":207},[201,1342,279],{"class":215},[14,1344,1345],{},"List objects in a bucket:",[192,1347,1349],{"className":194,"code":1348,"language":196,"meta":197,"style":197},"curl -G \"$API_URL\u002Ffiles\u002Fs3\u002Flist\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\" \\\n  --data-urlencode \"bucket=YOUR_BUCKET\" \\\n  --data-urlencode \"prefix=optional\u002Fpath\u002F\"\n",[65,1350,1351,1366,1378,1390,1399],{"__ignoreMap":197},[201,1352,1353,1355,1357,1359,1361,1364],{"class":203,"line":204},[201,1354,322],{"class":251},[201,1356,378],{"class":264},[201,1358,331],{"class":215},[201,1360,334],{"class":207},[201,1362,1363],{"class":215},"\u002Ffiles\u002Fs3\u002Flist\"",[201,1365,265],{"class":264},[201,1367,1368,1370,1372,1374,1376],{"class":203,"line":219},[201,1369,344],{"class":264},[201,1371,255],{"class":215},[201,1373,258],{"class":207},[201,1375,261],{"class":215},[201,1377,265],{"class":264},[201,1379,1380,1382,1384,1386,1388],{"class":203,"line":230},[201,1381,344],{"class":264},[201,1383,359],{"class":215},[201,1385,276],{"class":207},[201,1387,261],{"class":215},[201,1389,265],{"class":264},[201,1391,1392,1394,1397],{"class":203,"line":414},[201,1393,417],{"class":264},[201,1395,1396],{"class":215}," \"bucket=YOUR_BUCKET\"",[201,1398,265],{"class":264},[201,1400,1401,1403],{"class":203,"line":482},[201,1402,417],{"class":264},[201,1404,1405],{"class":215}," \"prefix=optional\u002Fpath\u002F\"\n",[14,1407,1408],{},"Create a bucket when your credentials allow it:",[192,1410,1412],{"className":194,"code":1411,"language":196,"meta":197,"style":197},"curl -X POST \"$API_URL\u002Ffiles\u002Fs3\u002Fbuckets\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"bucket\": \"analytics-exports\",\n    \"region\": \"us-east-1\"\n  }'\n",[65,1413,1414,1430,1442,1454,1462,1468,1473,1477],{"__ignoreMap":197},[201,1415,1416,1418,1420,1422,1424,1426,1428],{"class":203,"line":204},[201,1417,322],{"class":251},[201,1419,325],{"class":264},[201,1421,437],{"class":215},[201,1423,331],{"class":215},[201,1425,334],{"class":207},[201,1427,1318],{"class":215},[201,1429,265],{"class":264},[201,1431,1432,1434,1436,1438,1440],{"class":203,"line":219},[201,1433,344],{"class":264},[201,1435,255],{"class":215},[201,1437,258],{"class":207},[201,1439,261],{"class":215},[201,1441,265],{"class":264},[201,1443,1444,1446,1448,1450,1452],{"class":203,"line":230},[201,1445,344],{"class":264},[201,1447,359],{"class":215},[201,1449,276],{"class":207},[201,1451,261],{"class":215},[201,1453,265],{"class":264},[201,1455,1456,1458,1460],{"class":203,"line":414},[201,1457,344],{"class":264},[201,1459,477],{"class":215},[201,1461,265],{"class":264},[201,1463,1464,1466],{"class":203,"line":482},[201,1465,485],{"class":264},[201,1467,488],{"class":215},[201,1469,1470],{"class":203,"line":491},[201,1471,1472],{"class":215},"    \"bucket\": \"analytics-exports\",\n",[201,1474,1475],{"class":203,"line":497},[201,1476,1293],{"class":215},[201,1478,1479],{"class":203,"line":914},[201,1480,500],{"class":215},[14,1482,503],{},[24,1484,1485,1490,1496],{},[27,1486,1487,1489],{},[65,1488,91],{}," returns a configured session without credential errors",[27,1491,1492,1495],{},[65,1493,1494],{},"\u002Ffiles\u002Fs3\u002Fbuckets"," includes a bucket you expect to access",[27,1497,1498,1501],{},[65,1499,1500],{},"\u002Ffiles\u002Fs3\u002Flist"," returns keys for the requested bucket or prefix",[49,1503,1505],{"id":1504},"validate-s3-paths-and-manifests","Validate S3 paths and manifests",[14,1507,1508],{},"Use these routes before large file reads or manifest-driven workflows.",[14,1510,292],{},[24,1512,1513,1518],{},[27,1514,1515],{},[65,1516,1517],{},"GET \u002Ffiles\u002Fs3\u002Fvalidate",[27,1519,1520],{},[65,1521,1522],{},"GET \u002Ffiles\u002Fs3\u002Fmanifest",[14,1524,1525],{},"Validate an S3 path or glob:",[192,1527,1529],{"className":194,"code":1528,"language":196,"meta":197,"style":197},"curl -G \"$API_URL\u002Ffiles\u002Fs3\u002Fvalidate\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\" \\\n  --data-urlencode \"path=s3:\u002F\u002FYOUR_BUCKET\u002Fpath\u002F*.parquet\"\n",[65,1530,1531,1546,1558,1570],{"__ignoreMap":197},[201,1532,1533,1535,1537,1539,1541,1544],{"class":203,"line":204},[201,1534,322],{"class":251},[201,1536,378],{"class":264},[201,1538,331],{"class":215},[201,1540,334],{"class":207},[201,1542,1543],{"class":215},"\u002Ffiles\u002Fs3\u002Fvalidate\"",[201,1545,265],{"class":264},[201,1547,1548,1550,1552,1554,1556],{"class":203,"line":219},[201,1549,344],{"class":264},[201,1551,255],{"class":215},[201,1553,258],{"class":207},[201,1555,261],{"class":215},[201,1557,265],{"class":264},[201,1559,1560,1562,1564,1566,1568],{"class":203,"line":230},[201,1561,344],{"class":264},[201,1563,359],{"class":215},[201,1565,276],{"class":207},[201,1567,261],{"class":215},[201,1569,265],{"class":264},[201,1571,1572,1574],{"class":203,"line":414},[201,1573,417],{"class":264},[201,1575,1576],{"class":215}," \"path=s3:\u002F\u002FYOUR_BUCKET\u002Fpath\u002F*.parquet\"\n",[14,1578,1579],{},"Read a manifest file:",[192,1581,1583],{"className":194,"code":1582,"language":196,"meta":197,"style":197},"curl -G \"$API_URL\u002Ffiles\u002Fs3\u002Fmanifest\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\" \\\n  --data-urlencode \"path=s3:\u002F\u002FYOUR_BUCKET\u002Fpath\u002Fmanifest.json\"\n",[65,1584,1585,1600,1612,1624],{"__ignoreMap":197},[201,1586,1587,1589,1591,1593,1595,1598],{"class":203,"line":204},[201,1588,322],{"class":251},[201,1590,378],{"class":264},[201,1592,331],{"class":215},[201,1594,334],{"class":207},[201,1596,1597],{"class":215},"\u002Ffiles\u002Fs3\u002Fmanifest\"",[201,1599,265],{"class":264},[201,1601,1602,1604,1606,1608,1610],{"class":203,"line":219},[201,1603,344],{"class":264},[201,1605,255],{"class":215},[201,1607,258],{"class":207},[201,1609,261],{"class":215},[201,1611,265],{"class":264},[201,1613,1614,1616,1618,1620,1622],{"class":203,"line":230},[201,1615,344],{"class":264},[201,1617,359],{"class":215},[201,1619,276],{"class":207},[201,1621,261],{"class":215},[201,1623,265],{"class":264},[201,1625,1626,1628],{"class":203,"line":414},[201,1627,417],{"class":264},[201,1629,1630],{"class":215}," \"path=s3:\u002F\u002FYOUR_BUCKET\u002Fpath\u002Fmanifest.json\"\n",[14,1632,503],{},[24,1634,1635,1643],{},[27,1636,1637,1639,1640],{},[65,1638,97],{}," marks the path as valid and returns a plausible ",[65,1641,1642],{},"recommendedMode",[27,1644,1645,1647],{},[65,1646,103],{}," returns the manifest payload you expect, including listed files or metadata",[49,1649,1651],{"id":1650},"file-row-mutations","File row mutations",[14,1653,1654],{},"The current Swagger contract also includes file row mutation routes:",[24,1656,1657,1662,1667,1672],{},[27,1658,1659],{},[65,1660,1661],{},"POST \u002Ffiles\u002Frows\u002Fapply",[27,1663,1664],{},[65,1665,1666],{},"PATCH \u002Ffiles\u002Frows\u002Fedit",[27,1668,1669],{},[65,1670,1671],{},"POST \u002Ffiles\u002Frows\u002Finsert",[27,1673,1674],{},[65,1675,1676],{},"DELETE \u002Ffiles\u002Frows\u002Fdelete",[14,1678,956,1679,1681,1682,1684,1685,1687],{},[65,1680,1661],{}," when you want inserts, updates, and deletes in one call. Use the ",[65,1683,118],{}," value from ",[65,1686,73],{}," to target existing rows.",[14,1689,1690],{},"These operations rewrite the underlying file. Use them for interactive fixes and small or medium file updates, not as a substitute for large batch processing.",[14,1692,1693],{},"Example:",[192,1695,1697],{"className":194,"code":1696,"language":196,"meta":197,"style":197},"curl -X POST \"$API_URL\u002Ffiles\u002Frows\u002Fapply\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"path\": \"ABSOLUTE_FILE_PATH\",\n    \"format\": \"csv\",\n    \"edits\": [\n      {\n        \"rowId\": 2,\n        \"changes\": {\n          \"status\": \"active\"\n        }\n      }\n    ],\n    \"inserts\": [\n      {\n        \"values\": {\n          \"name\": \"Alice\",\n          \"status\": \"active\"\n        }\n      }\n    ],\n    \"deletes\": [\n      {\n        \"rowId\": 5\n      }\n    ]\n  }'\n",[65,1698,1699,1716,1728,1740,1748,1754,1758,1763,1768,1774,1780,1786,1792,1798,1804,1810,1816,1821,1827,1833,1838,1843,1848,1853,1859,1864,1870,1875,1881],{"__ignoreMap":197},[201,1700,1701,1703,1705,1707,1709,1711,1714],{"class":203,"line":204},[201,1702,322],{"class":251},[201,1704,325],{"class":264},[201,1706,437],{"class":215},[201,1708,331],{"class":215},[201,1710,334],{"class":207},[201,1712,1713],{"class":215},"\u002Ffiles\u002Frows\u002Fapply\"",[201,1715,265],{"class":264},[201,1717,1718,1720,1722,1724,1726],{"class":203,"line":219},[201,1719,344],{"class":264},[201,1721,255],{"class":215},[201,1723,258],{"class":207},[201,1725,261],{"class":215},[201,1727,265],{"class":264},[201,1729,1730,1732,1734,1736,1738],{"class":203,"line":230},[201,1731,344],{"class":264},[201,1733,359],{"class":215},[201,1735,276],{"class":207},[201,1737,261],{"class":215},[201,1739,265],{"class":264},[201,1741,1742,1744,1746],{"class":203,"line":414},[201,1743,344],{"class":264},[201,1745,477],{"class":215},[201,1747,265],{"class":264},[201,1749,1750,1752],{"class":203,"line":482},[201,1751,485],{"class":264},[201,1753,488],{"class":215},[201,1755,1756],{"class":203,"line":491},[201,1757,906],{"class":215},[201,1759,1760],{"class":203,"line":497},[201,1761,1762],{"class":215},"    \"format\": \"csv\",\n",[201,1764,1765],{"class":203,"line":914},[201,1766,1767],{"class":215},"    \"edits\": [\n",[201,1769,1771],{"class":203,"line":1770},9,[201,1772,1773],{"class":215},"      {\n",[201,1775,1777],{"class":203,"line":1776},10,[201,1778,1779],{"class":215},"        \"rowId\": 2,\n",[201,1781,1783],{"class":203,"line":1782},11,[201,1784,1785],{"class":215},"        \"changes\": {\n",[201,1787,1789],{"class":203,"line":1788},12,[201,1790,1791],{"class":215},"          \"status\": \"active\"\n",[201,1793,1795],{"class":203,"line":1794},13,[201,1796,1797],{"class":215},"        }\n",[201,1799,1801],{"class":203,"line":1800},14,[201,1802,1803],{"class":215},"      }\n",[201,1805,1807],{"class":203,"line":1806},15,[201,1808,1809],{"class":215},"    ],\n",[201,1811,1813],{"class":203,"line":1812},16,[201,1814,1815],{"class":215},"    \"inserts\": [\n",[201,1817,1819],{"class":203,"line":1818},17,[201,1820,1773],{"class":215},[201,1822,1824],{"class":203,"line":1823},18,[201,1825,1826],{"class":215},"        \"values\": {\n",[201,1828,1830],{"class":203,"line":1829},19,[201,1831,1832],{"class":215},"          \"name\": \"Alice\",\n",[201,1834,1836],{"class":203,"line":1835},20,[201,1837,1791],{"class":215},[201,1839,1841],{"class":203,"line":1840},21,[201,1842,1797],{"class":215},[201,1844,1846],{"class":203,"line":1845},22,[201,1847,1803],{"class":215},[201,1849,1851],{"class":203,"line":1850},23,[201,1852,1809],{"class":215},[201,1854,1856],{"class":203,"line":1855},24,[201,1857,1858],{"class":215},"    \"deletes\": [\n",[201,1860,1862],{"class":203,"line":1861},25,[201,1863,1773],{"class":215},[201,1865,1867],{"class":203,"line":1866},26,[201,1868,1869],{"class":215},"        \"rowId\": 5\n",[201,1871,1873],{"class":203,"line":1872},27,[201,1874,1803],{"class":215},[201,1876,1878],{"class":203,"line":1877},28,[201,1879,1880],{"class":215},"    ]\n",[201,1882,1884],{"class":203,"line":1883},29,[201,1885,500],{"class":215},[14,1887,503],{},[24,1889,1890,1904],{},[27,1891,1892,1893,1896,1897,1900,1901],{},"the response reports the row counts you expected in ",[65,1894,1895],{},"updated",", ",[65,1898,1899],{},"inserted",", and ",[65,1902,1903],{},"deleted",[27,1905,1906,1907,1909],{},"a follow-up ",[65,1908,73],{}," call shows the changed rows for the same file",[49,1911,1913],{"id":1912},"end-to-end-sanity-check","End-to-end sanity check",[14,1915,1916],{},"Use these checks after wiring a client or workflow:",[59,1918,1919,1927,1932,1941,1950],{},[27,1920,63,1921,1923,1924,1926],{},[65,1922,510],{}," or ",[65,1925,516],{}," and confirm the target folder is visible.",[27,1928,63,1929,1931],{},[65,1930,67],{}," on one known file and confirm the schema is returned.",[27,1933,63,1934,1936,1937,1940],{},[65,1935,73],{}," with a small ",[65,1938,1939],{},"limit"," and confirm rows are returned.",[27,1942,1943,1944,1946,1947,1949],{},"If you use S3, call ",[65,1945,91],{}," and then ",[65,1948,1494],{},".",[27,1951,1952,1953,1955,1956,1958],{},"If you use row edits, confirm the ",[65,1954,118],{}," values from ",[65,1957,73],{}," match the rows you intend to update.",[49,1960,1962],{"id":1961},"troubleshooting","Troubleshooting",[54,1964,1966],{"id":1965},"_401-unauthorized",[65,1967,1968],{},"401 Unauthorized",[24,1970,1971,1982],{},[27,1972,1973,1974,1977,1978,1981],{},"confirm ",[65,1975,1976],{},"X-API-Key"," and ",[65,1979,1980],{},"X-Install-ID"," are present on the request",[27,1983,1984,1985],{},"verify the values against the ",[147,1986,1988],{"href":1987},"\u002Faccount","Account page",[54,1990,1992],{"id":1991},"_404-file-not-found",[65,1993,1994],{},"404 File not found",[24,1996,1997,2000,2003],{},[27,1998,1999],{},"make sure the path is absolute for local files",[27,2001,2002],{},"make sure the path exists in the same environment where the API is running",[27,2004,2005],{},"if you are on Docker, use the container-visible path rather than your host-only path",[54,2007,2009],{"id":2008},"invalid-format-or-parse-errors","Invalid format or parse errors",[24,2011,2012,2019],{},[27,2013,2014,2015,2018],{},"make sure ",[65,2016,2017],{},"format"," matches the actual file type",[27,2020,2021,2022,2024],{},"use ",[65,2023,942],{}," before CSV reads if delimiter or header detection is uncertain",[54,2026,2028],{"id":2027},"s3-session-not-configured","S3 session not configured",[24,2030,2031,2042],{},[27,2032,2033,2034,2036,2037,1896,2039,2041],{},"call ",[65,2035,91],{}," before ",[65,2038,1494],{},[65,2040,1500],{},", or S3-backed reads",[27,2043,2044],{},"confirm the credentials have the required bucket and object permissions",[49,2046,2048],{"id":2047},"related-docs","Related docs",[24,2050,2051,2057,2063,2069,2075],{},[27,2052,2053],{},[147,2054,2056],{"href":2055},"\u002Fdocs\u002Fconnections\u002Flocal-files","Local Files",[27,2058,2059],{},[147,2060,2062],{"href":2061},"\u002Fdocs\u002Fconnections\u002Fs3-compatible-storage","S3-Compatible Storage",[27,2064,2065],{},[147,2066,2068],{"href":2067},"\u002Fdocs\u002Fconnections\u002Fcompressed-files","Compressed Files",[27,2070,2071],{},[147,2072,2074],{"href":2073},"\u002Fdocs\u002Fdatabase-explorer\u002Fsql-console","SQL Console",[27,2076,2077],{},[147,2078,150],{"href":2079},"\u002Fdocs\u002Fapi\u002Freference",[2081,2082,2083],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":197,"searchDepth":219,"depth":219,"links":2085},[2086,2091,2092,2093,2094,2095,2096,2097,2098,2099,2100,2106],{"id":51,"depth":219,"text":52,"children":2087},[2088,2089,2090],{"id":56,"depth":230,"text":57},{"id":83,"depth":230,"text":84},{"id":107,"depth":230,"text":108},{"id":133,"depth":219,"text":134},{"id":189,"depth":219,"text":190},{"id":282,"depth":219,"text":283},{"id":538,"depth":219,"text":539},{"id":952,"depth":219,"text":953},{"id":1189,"depth":219,"text":1190},{"id":1504,"depth":219,"text":1505},{"id":1650,"depth":219,"text":1651},{"id":1912,"depth":219,"text":1913},{"id":1961,"depth":219,"text":1962,"children":2101},[2102,2103,2104,2105],{"id":1965,"depth":230,"text":1968},{"id":1991,"depth":230,"text":1994},{"id":2008,"depth":230,"text":2009},{"id":2027,"depth":230,"text":2028},{"id":2047,"depth":219,"text":2048},"Browse local paths, inspect file contents, run SQL over files, configure S3 access, and apply file row changes through the DBConvert Streams API.","md",{},false,"\u002Fdocs\u002Fapi\u002Ffiles-and-storage",null,{"title":5,"description":2107},"docs\u002Fapi\u002Ffiles-and-storage","hwVlHexeIrnvpZDYCUgiIlIxCEUKvFKu0G3ou_AKTQ4",1783896284427]