[{"data":1,"prerenderedAt":3403},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fapi\u002Fexamples-connections":3},{"id":4,"title":5,"body":6,"description":3394,"extension":3395,"meta":3396,"navigation":3397,"path":3398,"redirect":3399,"seo":3400,"stem":3401,"__hash__":3402},"docs\u002Fdocs\u002Fapi\u002Fexamples-connections.md","Connection API Code Examples",{"type":7,"value":8,"toc":3388},"minimark",[9,13,23,28,70,74,77,3218,3222,3225,3311,3314,3366,3370,3384],[10,11,5],"h1",{"id":12},"connection-api-code-examples",[14,15,16,17,22],"p",{},"Practical code examples for the DBConvert Streams Connection API. For the complete endpoint reference, see ",[18,19,21],"a",{"href":20},"\u002Fdocs\u002Fapi\u002Fconnections","Connections API Workflows",".",[24,25,27],"h2",{"id":26},"prerequisites","Prerequisites",[29,30,31,35,43],"ul",{},[32,33,34],"li",{},"A valid DBConvert Streams API key and Install ID",[32,36,37,38,42],{},"The API server running (default: ",[39,40,41],"code",{},"http:\u002F\u002F127.0.0.1:8020\u002Fapi\u002Fv1",")",[32,44,45,46],{},"Language-specific dependencies:\n",[29,47,48,58,67],{},[32,49,50,51,54,55,42],{},"Python: ",[39,52,53],{},"requests"," (",[39,56,57],{},"pip install requests",[32,59,60,61,54,64,42],{},"Node.js: ",[39,62,63],{},"axios",[39,65,66],{},"npm install axios",[32,68,69],{},"PowerShell: Version 5.1 or later",[24,71,73],{"id":72},"examples-by-technology","Examples by technology",[14,75,76],{},"Select a tab to view the workflow in the client you use.",[78,79,80,772,1267,2823],"api-example-tabs",{},[81,82,84],"template",{"v-slot:curl":83},"",[85,86,90],"pre",{"className":87,"code":88,"language":89,"meta":83,"style":83},"language-bash shiki shiki-themes github-light github-dark","# Set credentials\nexport API_KEY=\"your_api_key_here\"\nexport INSTALL_ID=\"your_install_id_here\"\nexport API_URL=\"http:\u002F\u002F127.0.0.1:8020\u002Fapi\u002Fv1\"\n\n# Load user configurations (required before other endpoints)\ncurl \"$API_URL\u002Fuser\u002Fconfigs\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\"\n\n# List all connections\ncurl \"$API_URL\u002Fconnections\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\"\n\n# Create a MySQL connection\ncurl -X POST \"$API_URL\u002Fconnections\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"name\": \"mysql-source\",\n    \"type\": \"mysql\",\n    \"spec\": {\n      \"database\": {\n        \"host\": \"localhost\",\n        \"port\": 3306,\n        \"username\": \"root\",\n        \"password\": \"your_password\",\n        \"database\": \"source_db\"\n      }\n    }\n  }'\n\n# Create a PostgreSQL connection\ncurl -X POST \"$API_URL\u002Fconnections\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"name\": \"pg-target\",\n    \"type\": \"postgresql\",\n    \"spec\": {\n      \"database\": {\n        \"host\": \"localhost\",\n        \"port\": 5432,\n        \"username\": \"postgres\",\n        \"password\": \"your_password\",\n        \"database\": \"target_db\"\n      }\n    }\n  }'\n\n# Test a saved connection\ncurl -X POST \"$API_URL\u002Fconnections\u002F$CONN_ID\u002Fping\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\"\n\n# List databases\ncurl \"$API_URL\u002Fconnections\u002F$CONN_ID\u002Fdatabases\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\"\n\n# List tables in a database\ncurl \"$API_URL\u002Fconnections\u002F$CONN_ID\u002Fdatabases\u002Fsource_db\u002Ftables\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\"\n\n# Delete a connection (requires confirmation header)\ncurl -X DELETE \"$API_URL\u002Fconnections\u002F$CONN_ID\" \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"X-Install-ID: $INSTALL_ID\" \\\n  -H \"X-Confirm-Delete: true\"\n","bash",[39,91,92,101,119,132,145,152,158,178,195,209,214,220,234,247,258,263,269,288,301,314,324,333,339,345,351,357,363,369,375,381,387,393,399,405,410,416,433,446,459,468,475,481,487,492,497,502,508,514,519,525,530,535,540,545,551,575,588,599,604,610,628,641,652,657,663,681,694,705,710,716,738,751,764],{"__ignoreMap":83},[93,94,97],"span",{"class":95,"line":96},"line",1,[93,98,100],{"class":99},"sJ8bj","# Set credentials\n",[93,102,104,108,112,115],{"class":95,"line":103},2,[93,105,107],{"class":106},"szBVR","export",[93,109,111],{"class":110},"sVt8B"," API_KEY",[93,113,114],{"class":106},"=",[93,116,118],{"class":117},"sZZnC","\"your_api_key_here\"\n",[93,120,122,124,127,129],{"class":95,"line":121},3,[93,123,107],{"class":106},[93,125,126],{"class":110}," INSTALL_ID",[93,128,114],{"class":106},[93,130,131],{"class":117},"\"your_install_id_here\"\n",[93,133,135,137,140,142],{"class":95,"line":134},4,[93,136,107],{"class":106},[93,138,139],{"class":110}," API_URL",[93,141,114],{"class":106},[93,143,144],{"class":117},"\"http:\u002F\u002F127.0.0.1:8020\u002Fapi\u002Fv1\"\n",[93,146,148],{"class":95,"line":147},5,[93,149,151],{"emptyLinePlaceholder":150},true,"\n",[93,153,155],{"class":95,"line":154},6,[93,156,157],{"class":99},"# Load user configurations (required before other endpoints)\n",[93,159,161,165,168,171,174],{"class":95,"line":160},7,[93,162,164],{"class":163},"sScJk","curl",[93,166,167],{"class":117}," \"",[93,169,170],{"class":110},"$API_URL",[93,172,173],{"class":117},"\u002Fuser\u002Fconfigs\"",[93,175,177],{"class":176},"sj4cs"," \\\n",[93,179,181,184,187,190,193],{"class":95,"line":180},8,[93,182,183],{"class":176},"  -H",[93,185,186],{"class":117}," \"X-API-Key: ",[93,188,189],{"class":110},"$API_KEY",[93,191,192],{"class":117},"\"",[93,194,177],{"class":176},[93,196,198,200,203,206],{"class":95,"line":197},9,[93,199,183],{"class":176},[93,201,202],{"class":117}," \"X-Install-ID: ",[93,204,205],{"class":110},"$INSTALL_ID",[93,207,208],{"class":117},"\"\n",[93,210,212],{"class":95,"line":211},10,[93,213,151],{"emptyLinePlaceholder":150},[93,215,217],{"class":95,"line":216},11,[93,218,219],{"class":99},"# List all connections\n",[93,221,223,225,227,229,232],{"class":95,"line":222},12,[93,224,164],{"class":163},[93,226,167],{"class":117},[93,228,170],{"class":110},[93,230,231],{"class":117},"\u002Fconnections\"",[93,233,177],{"class":176},[93,235,237,239,241,243,245],{"class":95,"line":236},13,[93,238,183],{"class":176},[93,240,186],{"class":117},[93,242,189],{"class":110},[93,244,192],{"class":117},[93,246,177],{"class":176},[93,248,250,252,254,256],{"class":95,"line":249},14,[93,251,183],{"class":176},[93,253,202],{"class":117},[93,255,205],{"class":110},[93,257,208],{"class":117},[93,259,261],{"class":95,"line":260},15,[93,262,151],{"emptyLinePlaceholder":150},[93,264,266],{"class":95,"line":265},16,[93,267,268],{"class":99},"# Create a MySQL connection\n",[93,270,272,274,277,280,282,284,286],{"class":95,"line":271},17,[93,273,164],{"class":163},[93,275,276],{"class":176}," -X",[93,278,279],{"class":117}," POST",[93,281,167],{"class":117},[93,283,170],{"class":110},[93,285,231],{"class":117},[93,287,177],{"class":176},[93,289,291,293,295,297,299],{"class":95,"line":290},18,[93,292,183],{"class":176},[93,294,186],{"class":117},[93,296,189],{"class":110},[93,298,192],{"class":117},[93,300,177],{"class":176},[93,302,304,306,308,310,312],{"class":95,"line":303},19,[93,305,183],{"class":176},[93,307,202],{"class":117},[93,309,205],{"class":110},[93,311,192],{"class":117},[93,313,177],{"class":176},[93,315,317,319,322],{"class":95,"line":316},20,[93,318,183],{"class":176},[93,320,321],{"class":117}," \"Content-Type: application\u002Fjson\"",[93,323,177],{"class":176},[93,325,327,330],{"class":95,"line":326},21,[93,328,329],{"class":176},"  -d",[93,331,332],{"class":117}," '{\n",[93,334,336],{"class":95,"line":335},22,[93,337,338],{"class":117},"    \"name\": \"mysql-source\",\n",[93,340,342],{"class":95,"line":341},23,[93,343,344],{"class":117},"    \"type\": \"mysql\",\n",[93,346,348],{"class":95,"line":347},24,[93,349,350],{"class":117},"    \"spec\": {\n",[93,352,354],{"class":95,"line":353},25,[93,355,356],{"class":117},"      \"database\": {\n",[93,358,360],{"class":95,"line":359},26,[93,361,362],{"class":117},"        \"host\": \"localhost\",\n",[93,364,366],{"class":95,"line":365},27,[93,367,368],{"class":117},"        \"port\": 3306,\n",[93,370,372],{"class":95,"line":371},28,[93,373,374],{"class":117},"        \"username\": \"root\",\n",[93,376,378],{"class":95,"line":377},29,[93,379,380],{"class":117},"        \"password\": \"your_password\",\n",[93,382,384],{"class":95,"line":383},30,[93,385,386],{"class":117},"        \"database\": \"source_db\"\n",[93,388,390],{"class":95,"line":389},31,[93,391,392],{"class":117},"      }\n",[93,394,396],{"class":95,"line":395},32,[93,397,398],{"class":117},"    }\n",[93,400,402],{"class":95,"line":401},33,[93,403,404],{"class":117},"  }'\n",[93,406,408],{"class":95,"line":407},34,[93,409,151],{"emptyLinePlaceholder":150},[93,411,413],{"class":95,"line":412},35,[93,414,415],{"class":99},"# Create a PostgreSQL connection\n",[93,417,419,421,423,425,427,429,431],{"class":95,"line":418},36,[93,420,164],{"class":163},[93,422,276],{"class":176},[93,424,279],{"class":117},[93,426,167],{"class":117},[93,428,170],{"class":110},[93,430,231],{"class":117},[93,432,177],{"class":176},[93,434,436,438,440,442,444],{"class":95,"line":435},37,[93,437,183],{"class":176},[93,439,186],{"class":117},[93,441,189],{"class":110},[93,443,192],{"class":117},[93,445,177],{"class":176},[93,447,449,451,453,455,457],{"class":95,"line":448},38,[93,450,183],{"class":176},[93,452,202],{"class":117},[93,454,205],{"class":110},[93,456,192],{"class":117},[93,458,177],{"class":176},[93,460,462,464,466],{"class":95,"line":461},39,[93,463,183],{"class":176},[93,465,321],{"class":117},[93,467,177],{"class":176},[93,469,471,473],{"class":95,"line":470},40,[93,472,329],{"class":176},[93,474,332],{"class":117},[93,476,478],{"class":95,"line":477},41,[93,479,480],{"class":117},"    \"name\": \"pg-target\",\n",[93,482,484],{"class":95,"line":483},42,[93,485,486],{"class":117},"    \"type\": \"postgresql\",\n",[93,488,490],{"class":95,"line":489},43,[93,491,350],{"class":117},[93,493,495],{"class":95,"line":494},44,[93,496,356],{"class":117},[93,498,500],{"class":95,"line":499},45,[93,501,362],{"class":117},[93,503,505],{"class":95,"line":504},46,[93,506,507],{"class":117},"        \"port\": 5432,\n",[93,509,511],{"class":95,"line":510},47,[93,512,513],{"class":117},"        \"username\": \"postgres\",\n",[93,515,517],{"class":95,"line":516},48,[93,518,380],{"class":117},[93,520,522],{"class":95,"line":521},49,[93,523,524],{"class":117},"        \"database\": \"target_db\"\n",[93,526,528],{"class":95,"line":527},50,[93,529,392],{"class":117},[93,531,533],{"class":95,"line":532},51,[93,534,398],{"class":117},[93,536,538],{"class":95,"line":537},52,[93,539,404],{"class":117},[93,541,543],{"class":95,"line":542},53,[93,544,151],{"emptyLinePlaceholder":150},[93,546,548],{"class":95,"line":547},54,[93,549,550],{"class":99},"# Test a saved connection\n",[93,552,554,556,558,560,562,564,567,570,573],{"class":95,"line":553},55,[93,555,164],{"class":163},[93,557,276],{"class":176},[93,559,279],{"class":117},[93,561,167],{"class":117},[93,563,170],{"class":110},[93,565,566],{"class":117},"\u002Fconnections\u002F",[93,568,569],{"class":110},"$CONN_ID",[93,571,572],{"class":117},"\u002Fping\"",[93,574,177],{"class":176},[93,576,578,580,582,584,586],{"class":95,"line":577},56,[93,579,183],{"class":176},[93,581,186],{"class":117},[93,583,189],{"class":110},[93,585,192],{"class":117},[93,587,177],{"class":176},[93,589,591,593,595,597],{"class":95,"line":590},57,[93,592,183],{"class":176},[93,594,202],{"class":117},[93,596,205],{"class":110},[93,598,208],{"class":117},[93,600,602],{"class":95,"line":601},58,[93,603,151],{"emptyLinePlaceholder":150},[93,605,607],{"class":95,"line":606},59,[93,608,609],{"class":99},"# List databases\n",[93,611,613,615,617,619,621,623,626],{"class":95,"line":612},60,[93,614,164],{"class":163},[93,616,167],{"class":117},[93,618,170],{"class":110},[93,620,566],{"class":117},[93,622,569],{"class":110},[93,624,625],{"class":117},"\u002Fdatabases\"",[93,627,177],{"class":176},[93,629,631,633,635,637,639],{"class":95,"line":630},61,[93,632,183],{"class":176},[93,634,186],{"class":117},[93,636,189],{"class":110},[93,638,192],{"class":117},[93,640,177],{"class":176},[93,642,644,646,648,650],{"class":95,"line":643},62,[93,645,183],{"class":176},[93,647,202],{"class":117},[93,649,205],{"class":110},[93,651,208],{"class":117},[93,653,655],{"class":95,"line":654},63,[93,656,151],{"emptyLinePlaceholder":150},[93,658,660],{"class":95,"line":659},64,[93,661,662],{"class":99},"# List tables in a database\n",[93,664,666,668,670,672,674,676,679],{"class":95,"line":665},65,[93,667,164],{"class":163},[93,669,167],{"class":117},[93,671,170],{"class":110},[93,673,566],{"class":117},[93,675,569],{"class":110},[93,677,678],{"class":117},"\u002Fdatabases\u002Fsource_db\u002Ftables\"",[93,680,177],{"class":176},[93,682,684,686,688,690,692],{"class":95,"line":683},66,[93,685,183],{"class":176},[93,687,186],{"class":117},[93,689,189],{"class":110},[93,691,192],{"class":117},[93,693,177],{"class":176},[93,695,697,699,701,703],{"class":95,"line":696},67,[93,698,183],{"class":176},[93,700,202],{"class":117},[93,702,205],{"class":110},[93,704,208],{"class":117},[93,706,708],{"class":95,"line":707},68,[93,709,151],{"emptyLinePlaceholder":150},[93,711,713],{"class":95,"line":712},69,[93,714,715],{"class":99},"# Delete a connection (requires confirmation header)\n",[93,717,719,721,723,726,728,730,732,734,736],{"class":95,"line":718},70,[93,720,164],{"class":163},[93,722,276],{"class":176},[93,724,725],{"class":117}," DELETE",[93,727,167],{"class":117},[93,729,170],{"class":110},[93,731,566],{"class":117},[93,733,569],{"class":110},[93,735,192],{"class":117},[93,737,177],{"class":176},[93,739,741,743,745,747,749],{"class":95,"line":740},71,[93,742,183],{"class":176},[93,744,186],{"class":117},[93,746,189],{"class":110},[93,748,192],{"class":117},[93,750,177],{"class":176},[93,752,754,756,758,760,762],{"class":95,"line":753},72,[93,755,183],{"class":176},[93,757,202],{"class":117},[93,759,205],{"class":110},[93,761,192],{"class":117},[93,763,177],{"class":176},[93,765,767,769],{"class":95,"line":766},73,[93,768,183],{"class":176},[93,770,771],{"class":117}," \"X-Confirm-Delete: true\"\n",[81,773,774],{"v-slot:python":83},[85,775,779],{"className":776,"code":777,"language":778,"meta":83,"style":83},"language-python shiki shiki-themes github-light github-dark","import requests\n\nclass DBConvertStreamsAPI:\n    def __init__(self, api_key, install_id, base_url=\"http:\u002F\u002F127.0.0.1:8020\u002Fapi\u002Fv1\"):\n        self.base_url = base_url\n        self.headers = {\n            \"X-API-Key\": api_key,\n            \"X-Install-ID\": install_id,\n            \"Content-Type\": \"application\u002Fjson\",\n        }\n\n    def load_user_configs(self):\n        \"\"\"Load user configurations (required before other endpoints).\"\"\"\n        response = requests.get(f\"{self.base_url}\u002Fuser\u002Fconfigs\", headers=self.headers)\n        response.raise_for_status()\n        return response.json()\n\n    def list_connections(self):\n        \"\"\"List all connections. Returns {items, total, filtered}.\"\"\"\n        response = requests.get(f\"{self.base_url}\u002Fconnections\", headers=self.headers)\n        response.raise_for_status()\n        return response.json()\n\n    def create_connection(self, connection_data):\n        \"\"\"Create a connection. Returns {id, created}.\"\"\"\n        response = requests.post(\n            f\"{self.base_url}\u002Fconnections\", headers=self.headers, json=connection_data\n        )\n        response.raise_for_status()\n        return response.json()\n\n    def ping(self, conn_id):\n        \"\"\"Test a saved connection. Returns {ping, error?}.\"\"\"\n        response = requests.post(\n            f\"{self.base_url}\u002Fconnections\u002F{conn_id}\u002Fping\", headers=self.headers\n        )\n        response.raise_for_status()\n        return response.json()\n\n    def list_databases(self, conn_id):\n        \"\"\"List databases for a connection.\"\"\"\n        response = requests.get(\n            f\"{self.base_url}\u002Fconnections\u002F{conn_id}\u002Fdatabases\", headers=self.headers\n        )\n        response.raise_for_status()\n        return response.json()\n\n    def list_tables(self, conn_id, database, schemas=None):\n        \"\"\"List tables in a database. Returns string array.\"\"\"\n        params = {}\n        if schemas:\n            params[\"schemas\"] = schemas\n        response = requests.get(\n            f\"{self.base_url}\u002Fconnections\u002F{conn_id}\u002Fdatabases\u002F{database}\u002Ftables\",\n            headers=self.headers,\n            params=params,\n        )\n        response.raise_for_status()\n        return response.json()\n\n    def delete_connection(self, conn_id):\n        \"\"\"Delete a connection. Requires X-Confirm-Delete header.\"\"\"\n        headers = {**self.headers, \"X-Confirm-Delete\": \"true\"}\n        response = requests.delete(\n            f\"{self.base_url}\u002Fconnections\u002F{conn_id}\", headers=headers\n        )\n        response.raise_for_status()\n\n\n# Usage\napi = DBConvertStreamsAPI(\"your_api_key\", \"your_install_id\")\napi.load_user_configs()\n\n# Create a MySQL connection\nresult = api.create_connection({\n    \"name\": \"mysql-source\",\n    \"type\": \"mysql\",\n    \"spec\": {\n        \"database\": {\n            \"host\": \"localhost\",\n            \"port\": 3306,\n            \"username\": \"root\",\n            \"password\": \"secret\",\n            \"database\": \"source_db\",\n        }\n    },\n})\nprint(f\"Created: {result['id']}\")\n\n# Test connectivity\nping = api.ping(result[\"id\"])\nprint(f\"Ping: {ping['ping']}\")\n\n# List databases and tables\ndatabases = api.list_databases(result[\"id\"])\nfor db in databases:\n    if not db[\"isSystem\"]:\n        tables = api.list_tables(result[\"id\"], db[\"name\"])\n        print(f\"{db['name']}: {tables}\")\n","python",[39,780,781,786,790,795,800,805,810,815,820,825,830,834,839,844,849,854,859,863,868,873,878,882,886,890,895,900,905,910,915,919,923,927,932,937,941,946,950,954,958,962,967,972,977,982,986,990,994,998,1003,1008,1013,1018,1023,1027,1032,1037,1042,1046,1050,1054,1058,1063,1068,1073,1078,1083,1087,1091,1095,1099,1104,1109,1114,1118,1123,1129,1134,1139,1144,1150,1156,1162,1168,1174,1180,1185,1191,1197,1203,1208,1214,1220,1226,1231,1237,1243,1249,1255,1261],{"__ignoreMap":83},[93,782,783],{"class":95,"line":96},[93,784,785],{},"import requests\n",[93,787,788],{"class":95,"line":103},[93,789,151],{"emptyLinePlaceholder":150},[93,791,792],{"class":95,"line":121},[93,793,794],{},"class DBConvertStreamsAPI:\n",[93,796,797],{"class":95,"line":134},[93,798,799],{},"    def __init__(self, api_key, install_id, base_url=\"http:\u002F\u002F127.0.0.1:8020\u002Fapi\u002Fv1\"):\n",[93,801,802],{"class":95,"line":147},[93,803,804],{},"        self.base_url = base_url\n",[93,806,807],{"class":95,"line":154},[93,808,809],{},"        self.headers = {\n",[93,811,812],{"class":95,"line":160},[93,813,814],{},"            \"X-API-Key\": api_key,\n",[93,816,817],{"class":95,"line":180},[93,818,819],{},"            \"X-Install-ID\": install_id,\n",[93,821,822],{"class":95,"line":197},[93,823,824],{},"            \"Content-Type\": \"application\u002Fjson\",\n",[93,826,827],{"class":95,"line":211},[93,828,829],{},"        }\n",[93,831,832],{"class":95,"line":216},[93,833,151],{"emptyLinePlaceholder":150},[93,835,836],{"class":95,"line":222},[93,837,838],{},"    def load_user_configs(self):\n",[93,840,841],{"class":95,"line":236},[93,842,843],{},"        \"\"\"Load user configurations (required before other endpoints).\"\"\"\n",[93,845,846],{"class":95,"line":249},[93,847,848],{},"        response = requests.get(f\"{self.base_url}\u002Fuser\u002Fconfigs\", headers=self.headers)\n",[93,850,851],{"class":95,"line":260},[93,852,853],{},"        response.raise_for_status()\n",[93,855,856],{"class":95,"line":265},[93,857,858],{},"        return response.json()\n",[93,860,861],{"class":95,"line":271},[93,862,151],{"emptyLinePlaceholder":150},[93,864,865],{"class":95,"line":290},[93,866,867],{},"    def list_connections(self):\n",[93,869,870],{"class":95,"line":303},[93,871,872],{},"        \"\"\"List all connections. Returns {items, total, filtered}.\"\"\"\n",[93,874,875],{"class":95,"line":316},[93,876,877],{},"        response = requests.get(f\"{self.base_url}\u002Fconnections\", headers=self.headers)\n",[93,879,880],{"class":95,"line":326},[93,881,853],{},[93,883,884],{"class":95,"line":335},[93,885,858],{},[93,887,888],{"class":95,"line":341},[93,889,151],{"emptyLinePlaceholder":150},[93,891,892],{"class":95,"line":347},[93,893,894],{},"    def create_connection(self, connection_data):\n",[93,896,897],{"class":95,"line":353},[93,898,899],{},"        \"\"\"Create a connection. Returns {id, created}.\"\"\"\n",[93,901,902],{"class":95,"line":359},[93,903,904],{},"        response = requests.post(\n",[93,906,907],{"class":95,"line":365},[93,908,909],{},"            f\"{self.base_url}\u002Fconnections\", headers=self.headers, json=connection_data\n",[93,911,912],{"class":95,"line":371},[93,913,914],{},"        )\n",[93,916,917],{"class":95,"line":377},[93,918,853],{},[93,920,921],{"class":95,"line":383},[93,922,858],{},[93,924,925],{"class":95,"line":389},[93,926,151],{"emptyLinePlaceholder":150},[93,928,929],{"class":95,"line":395},[93,930,931],{},"    def ping(self, conn_id):\n",[93,933,934],{"class":95,"line":401},[93,935,936],{},"        \"\"\"Test a saved connection. Returns {ping, error?}.\"\"\"\n",[93,938,939],{"class":95,"line":407},[93,940,904],{},[93,942,943],{"class":95,"line":412},[93,944,945],{},"            f\"{self.base_url}\u002Fconnections\u002F{conn_id}\u002Fping\", headers=self.headers\n",[93,947,948],{"class":95,"line":418},[93,949,914],{},[93,951,952],{"class":95,"line":435},[93,953,853],{},[93,955,956],{"class":95,"line":448},[93,957,858],{},[93,959,960],{"class":95,"line":461},[93,961,151],{"emptyLinePlaceholder":150},[93,963,964],{"class":95,"line":470},[93,965,966],{},"    def list_databases(self, conn_id):\n",[93,968,969],{"class":95,"line":477},[93,970,971],{},"        \"\"\"List databases for a connection.\"\"\"\n",[93,973,974],{"class":95,"line":483},[93,975,976],{},"        response = requests.get(\n",[93,978,979],{"class":95,"line":489},[93,980,981],{},"            f\"{self.base_url}\u002Fconnections\u002F{conn_id}\u002Fdatabases\", headers=self.headers\n",[93,983,984],{"class":95,"line":494},[93,985,914],{},[93,987,988],{"class":95,"line":499},[93,989,853],{},[93,991,992],{"class":95,"line":504},[93,993,858],{},[93,995,996],{"class":95,"line":510},[93,997,151],{"emptyLinePlaceholder":150},[93,999,1000],{"class":95,"line":516},[93,1001,1002],{},"    def list_tables(self, conn_id, database, schemas=None):\n",[93,1004,1005],{"class":95,"line":521},[93,1006,1007],{},"        \"\"\"List tables in a database. Returns string array.\"\"\"\n",[93,1009,1010],{"class":95,"line":527},[93,1011,1012],{},"        params = {}\n",[93,1014,1015],{"class":95,"line":532},[93,1016,1017],{},"        if schemas:\n",[93,1019,1020],{"class":95,"line":537},[93,1021,1022],{},"            params[\"schemas\"] = schemas\n",[93,1024,1025],{"class":95,"line":542},[93,1026,976],{},[93,1028,1029],{"class":95,"line":547},[93,1030,1031],{},"            f\"{self.base_url}\u002Fconnections\u002F{conn_id}\u002Fdatabases\u002F{database}\u002Ftables\",\n",[93,1033,1034],{"class":95,"line":553},[93,1035,1036],{},"            headers=self.headers,\n",[93,1038,1039],{"class":95,"line":577},[93,1040,1041],{},"            params=params,\n",[93,1043,1044],{"class":95,"line":590},[93,1045,914],{},[93,1047,1048],{"class":95,"line":601},[93,1049,853],{},[93,1051,1052],{"class":95,"line":606},[93,1053,858],{},[93,1055,1056],{"class":95,"line":612},[93,1057,151],{"emptyLinePlaceholder":150},[93,1059,1060],{"class":95,"line":630},[93,1061,1062],{},"    def delete_connection(self, conn_id):\n",[93,1064,1065],{"class":95,"line":643},[93,1066,1067],{},"        \"\"\"Delete a connection. Requires X-Confirm-Delete header.\"\"\"\n",[93,1069,1070],{"class":95,"line":654},[93,1071,1072],{},"        headers = {**self.headers, \"X-Confirm-Delete\": \"true\"}\n",[93,1074,1075],{"class":95,"line":659},[93,1076,1077],{},"        response = requests.delete(\n",[93,1079,1080],{"class":95,"line":665},[93,1081,1082],{},"            f\"{self.base_url}\u002Fconnections\u002F{conn_id}\", headers=headers\n",[93,1084,1085],{"class":95,"line":683},[93,1086,914],{},[93,1088,1089],{"class":95,"line":696},[93,1090,853],{},[93,1092,1093],{"class":95,"line":707},[93,1094,151],{"emptyLinePlaceholder":150},[93,1096,1097],{"class":95,"line":712},[93,1098,151],{"emptyLinePlaceholder":150},[93,1100,1101],{"class":95,"line":718},[93,1102,1103],{},"# Usage\n",[93,1105,1106],{"class":95,"line":740},[93,1107,1108],{},"api = DBConvertStreamsAPI(\"your_api_key\", \"your_install_id\")\n",[93,1110,1111],{"class":95,"line":753},[93,1112,1113],{},"api.load_user_configs()\n",[93,1115,1116],{"class":95,"line":766},[93,1117,151],{"emptyLinePlaceholder":150},[93,1119,1121],{"class":95,"line":1120},74,[93,1122,268],{},[93,1124,1126],{"class":95,"line":1125},75,[93,1127,1128],{},"result = api.create_connection({\n",[93,1130,1132],{"class":95,"line":1131},76,[93,1133,338],{},[93,1135,1137],{"class":95,"line":1136},77,[93,1138,344],{},[93,1140,1142],{"class":95,"line":1141},78,[93,1143,350],{},[93,1145,1147],{"class":95,"line":1146},79,[93,1148,1149],{},"        \"database\": {\n",[93,1151,1153],{"class":95,"line":1152},80,[93,1154,1155],{},"            \"host\": \"localhost\",\n",[93,1157,1159],{"class":95,"line":1158},81,[93,1160,1161],{},"            \"port\": 3306,\n",[93,1163,1165],{"class":95,"line":1164},82,[93,1166,1167],{},"            \"username\": \"root\",\n",[93,1169,1171],{"class":95,"line":1170},83,[93,1172,1173],{},"            \"password\": \"secret\",\n",[93,1175,1177],{"class":95,"line":1176},84,[93,1178,1179],{},"            \"database\": \"source_db\",\n",[93,1181,1183],{"class":95,"line":1182},85,[93,1184,829],{},[93,1186,1188],{"class":95,"line":1187},86,[93,1189,1190],{},"    },\n",[93,1192,1194],{"class":95,"line":1193},87,[93,1195,1196],{},"})\n",[93,1198,1200],{"class":95,"line":1199},88,[93,1201,1202],{},"print(f\"Created: {result['id']}\")\n",[93,1204,1206],{"class":95,"line":1205},89,[93,1207,151],{"emptyLinePlaceholder":150},[93,1209,1211],{"class":95,"line":1210},90,[93,1212,1213],{},"# Test connectivity\n",[93,1215,1217],{"class":95,"line":1216},91,[93,1218,1219],{},"ping = api.ping(result[\"id\"])\n",[93,1221,1223],{"class":95,"line":1222},92,[93,1224,1225],{},"print(f\"Ping: {ping['ping']}\")\n",[93,1227,1229],{"class":95,"line":1228},93,[93,1230,151],{"emptyLinePlaceholder":150},[93,1232,1234],{"class":95,"line":1233},94,[93,1235,1236],{},"# List databases and tables\n",[93,1238,1240],{"class":95,"line":1239},95,[93,1241,1242],{},"databases = api.list_databases(result[\"id\"])\n",[93,1244,1246],{"class":95,"line":1245},96,[93,1247,1248],{},"for db in databases:\n",[93,1250,1252],{"class":95,"line":1251},97,[93,1253,1254],{},"    if not db[\"isSystem\"]:\n",[93,1256,1258],{"class":95,"line":1257},98,[93,1259,1260],{},"        tables = api.list_tables(result[\"id\"], db[\"name\"])\n",[93,1262,1264],{"class":95,"line":1263},99,[93,1265,1266],{},"        print(f\"{db['name']}: {tables}\")\n",[81,1268,1269],{"v-slot:node":83},[85,1270,1274],{"className":1271,"code":1272,"language":1273,"meta":83,"style":83},"language-typescript shiki shiki-themes github-light github-dark","import axios, { AxiosInstance } from 'axios'\n\ninterface ConnectionSpec {\n  database?: {\n    host: string\n    port: number\n    username: string\n    password: string\n    database?: string\n  }\n  snowflake?: {\n    account: string\n    username: string\n    password: string\n    database?: string\n    warehouse?: string\n  }\n  s3?: {\n    region: string\n    credentials?: { accessKey: string; secretKey: string }\n    endpoint?: string\n  }\n}\n\ninterface CreateConnectionRequest {\n  name: string\n  type: 'mysql' | 'postgresql' | 'snowflake' | 'files' | 's3' | 'gcs' | 'azure'\n  spec: ConnectionSpec\n}\n\ninterface ConnectionResult {\n  id: string\n  created: number\n}\n\ninterface PingResponse {\n  ping: 'ok' | 'failed'\n  error?: string\n}\n\ninterface ConnectionListResponse {\n  items: Array\u003C{\n    id: string\n    name: string\n    type: string\n    spec: ConnectionSpec\n    created: number\n  }>\n  total: number\n  filtered: number\n}\n\nclass DBConvertStreamsAPI {\n  private client: AxiosInstance\n\n  constructor(apiKey: string, installId: string, baseURL = 'http:\u002F\u002F127.0.0.1:8020\u002Fapi\u002Fv1') {\n    this.client = axios.create({\n      baseURL,\n      headers: {\n        'X-API-Key': apiKey,\n        'X-Install-ID': installId,\n        'Content-Type': 'application\u002Fjson',\n      },\n    })\n  }\n\n  async loadUserConfigs(): Promise\u003Cvoid> {\n    await this.client.get('\u002Fuser\u002Fconfigs')\n  }\n\n  async listConnections(): Promise\u003CConnectionListResponse> {\n    const { data } = await this.client.get('\u002Fconnections')\n    return data\n  }\n\n  async createConnection(req: CreateConnectionRequest): Promise\u003CConnectionResult> {\n    const { data } = await this.client.post('\u002Fconnections', req)\n    return data\n  }\n\n  async ping(connId: string): Promise\u003CPingResponse> {\n    const { data } = await this.client.post(`\u002Fconnections\u002F${connId}\u002Fping`)\n    return data\n  }\n\n  async listDatabases(connId: string): Promise\u003CArray\u003C{ name: string; isSystem: boolean }>> {\n    const { data } = await this.client.get(`\u002Fconnections\u002F${connId}\u002Fdatabases`)\n    return data\n  }\n\n  async listTables(connId: string, database: string): Promise\u003Cstring[]> {\n    const { data } = await this.client.get(\n      `\u002Fconnections\u002F${connId}\u002Fdatabases\u002F${database}\u002Ftables`\n    )\n    return data\n  }\n\n  async deleteConnection(connId: string): Promise\u003Cvoid> {\n    await this.client.delete(`\u002Fconnections\u002F${connId}`, {\n      headers: { 'X-Confirm-Delete': 'true' },\n    })\n  }\n}\n\n\u002F\u002F Usage\nasync function main() {\n  const api = new DBConvertStreamsAPI('your_api_key', 'your_install_id')\n  await api.loadUserConfigs()\n\n  const result = await api.createConnection({\n    name: 'mysql-source',\n    type: 'mysql',\n    spec: {\n      database: {\n        host: 'localhost',\n        port: 3306,\n        username: 'root',\n        password: 'secret',\n        database: 'source_db',\n      },\n    },\n  })\n  console.log('Created:', result.id)\n\n  const ping = await api.ping(result.id)\n  console.log('Ping:', ping.ping)\n\n  const databases = await api.listDatabases(result.id)\n  for (const db of databases.filter((d) => !d.isSystem)) {\n    const tables = await api.listTables(result.id, db.name)\n    console.log(`${db.name}:`, tables)\n  }\n}\n\nmain().catch(console.error)\n","typescript",[39,1275,1276,1290,1294,1305,1316,1327,1337,1346,1355,1364,1369,1378,1387,1395,1403,1411,1420,1424,1433,1442,1473,1482,1486,1491,1495,1504,1513,1554,1564,1568,1572,1581,1590,1599,1603,1607,1616,1631,1640,1644,1648,1657,1670,1679,1688,1697,1706,1715,1720,1729,1738,1742,1746,1756,1769,1773,1812,1831,1836,1841,1849,1857,1871,1876,1881,1885,1889,1914,1936,1940,1944,1964,1995,2003,2007,2011,2040,2068,2074,2078,2082,2111,2143,2149,2153,2157,2206,2237,2243,2247,2251,2289,2312,2327,2332,2338,2342,2346,2373,2396,2413,2418,2423,2428,2433,2439,2454,2482,2497,2502,2521,2532,2543,2549,2555,2566,2577,2588,2599,2610,2615,2620,2626,2643,2648,2667,2682,2687,2706,2747,2767,2793,2798,2803,2808],{"__ignoreMap":83},[93,1277,1278,1281,1284,1287],{"class":95,"line":96},[93,1279,1280],{"class":106},"import",[93,1282,1283],{"class":110}," axios, { AxiosInstance } ",[93,1285,1286],{"class":106},"from",[93,1288,1289],{"class":117}," 'axios'\n",[93,1291,1292],{"class":95,"line":103},[93,1293,151],{"emptyLinePlaceholder":150},[93,1295,1296,1299,1302],{"class":95,"line":121},[93,1297,1298],{"class":106},"interface",[93,1300,1301],{"class":163}," ConnectionSpec",[93,1303,1304],{"class":110}," {\n",[93,1306,1307,1311,1314],{"class":95,"line":134},[93,1308,1310],{"class":1309},"s4XuR","  database",[93,1312,1313],{"class":106},"?:",[93,1315,1304],{"class":110},[93,1317,1318,1321,1324],{"class":95,"line":147},[93,1319,1320],{"class":1309},"    host",[93,1322,1323],{"class":106},":",[93,1325,1326],{"class":176}," string\n",[93,1328,1329,1332,1334],{"class":95,"line":154},[93,1330,1331],{"class":1309},"    port",[93,1333,1323],{"class":106},[93,1335,1336],{"class":176}," number\n",[93,1338,1339,1342,1344],{"class":95,"line":160},[93,1340,1341],{"class":1309},"    username",[93,1343,1323],{"class":106},[93,1345,1326],{"class":176},[93,1347,1348,1351,1353],{"class":95,"line":180},[93,1349,1350],{"class":1309},"    password",[93,1352,1323],{"class":106},[93,1354,1326],{"class":176},[93,1356,1357,1360,1362],{"class":95,"line":197},[93,1358,1359],{"class":1309},"    database",[93,1361,1313],{"class":106},[93,1363,1326],{"class":176},[93,1365,1366],{"class":95,"line":211},[93,1367,1368],{"class":110},"  }\n",[93,1370,1371,1374,1376],{"class":95,"line":216},[93,1372,1373],{"class":1309},"  snowflake",[93,1375,1313],{"class":106},[93,1377,1304],{"class":110},[93,1379,1380,1383,1385],{"class":95,"line":222},[93,1381,1382],{"class":1309},"    account",[93,1384,1323],{"class":106},[93,1386,1326],{"class":176},[93,1388,1389,1391,1393],{"class":95,"line":236},[93,1390,1341],{"class":1309},[93,1392,1323],{"class":106},[93,1394,1326],{"class":176},[93,1396,1397,1399,1401],{"class":95,"line":249},[93,1398,1350],{"class":1309},[93,1400,1323],{"class":106},[93,1402,1326],{"class":176},[93,1404,1405,1407,1409],{"class":95,"line":260},[93,1406,1359],{"class":1309},[93,1408,1313],{"class":106},[93,1410,1326],{"class":176},[93,1412,1413,1416,1418],{"class":95,"line":265},[93,1414,1415],{"class":1309},"    warehouse",[93,1417,1313],{"class":106},[93,1419,1326],{"class":176},[93,1421,1422],{"class":95,"line":271},[93,1423,1368],{"class":110},[93,1425,1426,1429,1431],{"class":95,"line":290},[93,1427,1428],{"class":1309},"  s3",[93,1430,1313],{"class":106},[93,1432,1304],{"class":110},[93,1434,1435,1438,1440],{"class":95,"line":303},[93,1436,1437],{"class":1309},"    region",[93,1439,1323],{"class":106},[93,1441,1326],{"class":176},[93,1443,1444,1447,1449,1452,1455,1457,1460,1463,1466,1468,1470],{"class":95,"line":316},[93,1445,1446],{"class":1309},"    credentials",[93,1448,1313],{"class":106},[93,1450,1451],{"class":110}," { ",[93,1453,1454],{"class":1309},"accessKey",[93,1456,1323],{"class":106},[93,1458,1459],{"class":176}," string",[93,1461,1462],{"class":110},"; ",[93,1464,1465],{"class":1309},"secretKey",[93,1467,1323],{"class":106},[93,1469,1459],{"class":176},[93,1471,1472],{"class":110}," }\n",[93,1474,1475,1478,1480],{"class":95,"line":326},[93,1476,1477],{"class":1309},"    endpoint",[93,1479,1313],{"class":106},[93,1481,1326],{"class":176},[93,1483,1484],{"class":95,"line":335},[93,1485,1368],{"class":110},[93,1487,1488],{"class":95,"line":341},[93,1489,1490],{"class":110},"}\n",[93,1492,1493],{"class":95,"line":347},[93,1494,151],{"emptyLinePlaceholder":150},[93,1496,1497,1499,1502],{"class":95,"line":353},[93,1498,1298],{"class":106},[93,1500,1501],{"class":163}," CreateConnectionRequest",[93,1503,1304],{"class":110},[93,1505,1506,1509,1511],{"class":95,"line":359},[93,1507,1508],{"class":1309},"  name",[93,1510,1323],{"class":106},[93,1512,1326],{"class":176},[93,1514,1515,1518,1520,1523,1526,1529,1531,1534,1536,1539,1541,1544,1546,1549,1551],{"class":95,"line":365},[93,1516,1517],{"class":1309},"  type",[93,1519,1323],{"class":106},[93,1521,1522],{"class":117}," 'mysql'",[93,1524,1525],{"class":106}," |",[93,1527,1528],{"class":117}," 'postgresql'",[93,1530,1525],{"class":106},[93,1532,1533],{"class":117}," 'snowflake'",[93,1535,1525],{"class":106},[93,1537,1538],{"class":117}," 'files'",[93,1540,1525],{"class":106},[93,1542,1543],{"class":117}," 's3'",[93,1545,1525],{"class":106},[93,1547,1548],{"class":117}," 'gcs'",[93,1550,1525],{"class":106},[93,1552,1553],{"class":117}," 'azure'\n",[93,1555,1556,1559,1561],{"class":95,"line":371},[93,1557,1558],{"class":1309},"  spec",[93,1560,1323],{"class":106},[93,1562,1563],{"class":163}," ConnectionSpec\n",[93,1565,1566],{"class":95,"line":377},[93,1567,1490],{"class":110},[93,1569,1570],{"class":95,"line":383},[93,1571,151],{"emptyLinePlaceholder":150},[93,1573,1574,1576,1579],{"class":95,"line":389},[93,1575,1298],{"class":106},[93,1577,1578],{"class":163}," ConnectionResult",[93,1580,1304],{"class":110},[93,1582,1583,1586,1588],{"class":95,"line":395},[93,1584,1585],{"class":1309},"  id",[93,1587,1323],{"class":106},[93,1589,1326],{"class":176},[93,1591,1592,1595,1597],{"class":95,"line":401},[93,1593,1594],{"class":1309},"  created",[93,1596,1323],{"class":106},[93,1598,1336],{"class":176},[93,1600,1601],{"class":95,"line":407},[93,1602,1490],{"class":110},[93,1604,1605],{"class":95,"line":412},[93,1606,151],{"emptyLinePlaceholder":150},[93,1608,1609,1611,1614],{"class":95,"line":418},[93,1610,1298],{"class":106},[93,1612,1613],{"class":163}," PingResponse",[93,1615,1304],{"class":110},[93,1617,1618,1621,1623,1626,1628],{"class":95,"line":435},[93,1619,1620],{"class":1309},"  ping",[93,1622,1323],{"class":106},[93,1624,1625],{"class":117}," 'ok'",[93,1627,1525],{"class":106},[93,1629,1630],{"class":117}," 'failed'\n",[93,1632,1633,1636,1638],{"class":95,"line":448},[93,1634,1635],{"class":1309},"  error",[93,1637,1313],{"class":106},[93,1639,1326],{"class":176},[93,1641,1642],{"class":95,"line":461},[93,1643,1490],{"class":110},[93,1645,1646],{"class":95,"line":470},[93,1647,151],{"emptyLinePlaceholder":150},[93,1649,1650,1652,1655],{"class":95,"line":477},[93,1651,1298],{"class":106},[93,1653,1654],{"class":163}," ConnectionListResponse",[93,1656,1304],{"class":110},[93,1658,1659,1662,1664,1667],{"class":95,"line":483},[93,1660,1661],{"class":1309},"  items",[93,1663,1323],{"class":106},[93,1665,1666],{"class":163}," Array",[93,1668,1669],{"class":110},"\u003C{\n",[93,1671,1672,1675,1677],{"class":95,"line":489},[93,1673,1674],{"class":1309},"    id",[93,1676,1323],{"class":106},[93,1678,1326],{"class":176},[93,1680,1681,1684,1686],{"class":95,"line":494},[93,1682,1683],{"class":1309},"    name",[93,1685,1323],{"class":106},[93,1687,1326],{"class":176},[93,1689,1690,1693,1695],{"class":95,"line":499},[93,1691,1692],{"class":1309},"    type",[93,1694,1323],{"class":106},[93,1696,1326],{"class":176},[93,1698,1699,1702,1704],{"class":95,"line":504},[93,1700,1701],{"class":1309},"    spec",[93,1703,1323],{"class":106},[93,1705,1563],{"class":163},[93,1707,1708,1711,1713],{"class":95,"line":510},[93,1709,1710],{"class":1309},"    created",[93,1712,1323],{"class":106},[93,1714,1336],{"class":176},[93,1716,1717],{"class":95,"line":516},[93,1718,1719],{"class":110},"  }>\n",[93,1721,1722,1725,1727],{"class":95,"line":521},[93,1723,1724],{"class":1309},"  total",[93,1726,1323],{"class":106},[93,1728,1336],{"class":176},[93,1730,1731,1734,1736],{"class":95,"line":527},[93,1732,1733],{"class":1309},"  filtered",[93,1735,1323],{"class":106},[93,1737,1336],{"class":176},[93,1739,1740],{"class":95,"line":532},[93,1741,1490],{"class":110},[93,1743,1744],{"class":95,"line":537},[93,1745,151],{"emptyLinePlaceholder":150},[93,1747,1748,1751,1754],{"class":95,"line":542},[93,1749,1750],{"class":106},"class",[93,1752,1753],{"class":163}," DBConvertStreamsAPI",[93,1755,1304],{"class":110},[93,1757,1758,1761,1764,1766],{"class":95,"line":547},[93,1759,1760],{"class":106},"  private",[93,1762,1763],{"class":1309}," client",[93,1765,1323],{"class":106},[93,1767,1768],{"class":163}," AxiosInstance\n",[93,1770,1771],{"class":95,"line":553},[93,1772,151],{"emptyLinePlaceholder":150},[93,1774,1775,1778,1781,1784,1786,1788,1791,1794,1796,1798,1800,1803,1806,1809],{"class":95,"line":577},[93,1776,1777],{"class":106},"  constructor",[93,1779,1780],{"class":110},"(",[93,1782,1783],{"class":1309},"apiKey",[93,1785,1323],{"class":106},[93,1787,1459],{"class":176},[93,1789,1790],{"class":110},", ",[93,1792,1793],{"class":1309},"installId",[93,1795,1323],{"class":106},[93,1797,1459],{"class":176},[93,1799,1790],{"class":110},[93,1801,1802],{"class":1309},"baseURL",[93,1804,1805],{"class":106}," =",[93,1807,1808],{"class":117}," 'http:\u002F\u002F127.0.0.1:8020\u002Fapi\u002Fv1'",[93,1810,1811],{"class":110},") {\n",[93,1813,1814,1817,1820,1822,1825,1828],{"class":95,"line":590},[93,1815,1816],{"class":176},"    this",[93,1818,1819],{"class":110},".client ",[93,1821,114],{"class":106},[93,1823,1824],{"class":110}," axios.",[93,1826,1827],{"class":163},"create",[93,1829,1830],{"class":110},"({\n",[93,1832,1833],{"class":95,"line":601},[93,1834,1835],{"class":110},"      baseURL,\n",[93,1837,1838],{"class":95,"line":606},[93,1839,1840],{"class":110},"      headers: {\n",[93,1842,1843,1846],{"class":95,"line":612},[93,1844,1845],{"class":117},"        'X-API-Key'",[93,1847,1848],{"class":110},": apiKey,\n",[93,1850,1851,1854],{"class":95,"line":630},[93,1852,1853],{"class":117},"        'X-Install-ID'",[93,1855,1856],{"class":110},": installId,\n",[93,1858,1859,1862,1865,1868],{"class":95,"line":643},[93,1860,1861],{"class":117},"        'Content-Type'",[93,1863,1864],{"class":110},": ",[93,1866,1867],{"class":117},"'application\u002Fjson'",[93,1869,1870],{"class":110},",\n",[93,1872,1873],{"class":95,"line":654},[93,1874,1875],{"class":110},"      },\n",[93,1877,1878],{"class":95,"line":659},[93,1879,1880],{"class":110},"    })\n",[93,1882,1883],{"class":95,"line":665},[93,1884,1368],{"class":110},[93,1886,1887],{"class":95,"line":683},[93,1888,151],{"emptyLinePlaceholder":150},[93,1890,1891,1894,1897,1900,1902,1905,1908,1911],{"class":95,"line":696},[93,1892,1893],{"class":106},"  async",[93,1895,1896],{"class":163}," loadUserConfigs",[93,1898,1899],{"class":110},"()",[93,1901,1323],{"class":106},[93,1903,1904],{"class":163}," Promise",[93,1906,1907],{"class":110},"\u003C",[93,1909,1910],{"class":176},"void",[93,1912,1913],{"class":110},"> {\n",[93,1915,1916,1919,1922,1925,1928,1930,1933],{"class":95,"line":707},[93,1917,1918],{"class":106},"    await",[93,1920,1921],{"class":176}," this",[93,1923,1924],{"class":110},".client.",[93,1926,1927],{"class":163},"get",[93,1929,1780],{"class":110},[93,1931,1932],{"class":117},"'\u002Fuser\u002Fconfigs'",[93,1934,1935],{"class":110},")\n",[93,1937,1938],{"class":95,"line":712},[93,1939,1368],{"class":110},[93,1941,1942],{"class":95,"line":718},[93,1943,151],{"emptyLinePlaceholder":150},[93,1945,1946,1948,1951,1953,1955,1957,1959,1962],{"class":95,"line":740},[93,1947,1893],{"class":106},[93,1949,1950],{"class":163}," listConnections",[93,1952,1899],{"class":110},[93,1954,1323],{"class":106},[93,1956,1904],{"class":163},[93,1958,1907],{"class":110},[93,1960,1961],{"class":163},"ConnectionListResponse",[93,1963,1913],{"class":110},[93,1965,1966,1969,1971,1974,1977,1979,1982,1984,1986,1988,1990,1993],{"class":95,"line":753},[93,1967,1968],{"class":106},"    const",[93,1970,1451],{"class":110},[93,1972,1973],{"class":176},"data",[93,1975,1976],{"class":110}," } ",[93,1978,114],{"class":106},[93,1980,1981],{"class":106}," await",[93,1983,1921],{"class":176},[93,1985,1924],{"class":110},[93,1987,1927],{"class":163},[93,1989,1780],{"class":110},[93,1991,1992],{"class":117},"'\u002Fconnections'",[93,1994,1935],{"class":110},[93,1996,1997,2000],{"class":95,"line":766},[93,1998,1999],{"class":106},"    return",[93,2001,2002],{"class":110}," data\n",[93,2004,2005],{"class":95,"line":1120},[93,2006,1368],{"class":110},[93,2008,2009],{"class":95,"line":1125},[93,2010,151],{"emptyLinePlaceholder":150},[93,2012,2013,2015,2018,2020,2023,2025,2027,2029,2031,2033,2035,2038],{"class":95,"line":1131},[93,2014,1893],{"class":106},[93,2016,2017],{"class":163}," createConnection",[93,2019,1780],{"class":110},[93,2021,2022],{"class":1309},"req",[93,2024,1323],{"class":106},[93,2026,1501],{"class":163},[93,2028,42],{"class":110},[93,2030,1323],{"class":106},[93,2032,1904],{"class":163},[93,2034,1907],{"class":110},[93,2036,2037],{"class":163},"ConnectionResult",[93,2039,1913],{"class":110},[93,2041,2042,2044,2046,2048,2050,2052,2054,2056,2058,2061,2063,2065],{"class":95,"line":1136},[93,2043,1968],{"class":106},[93,2045,1451],{"class":110},[93,2047,1973],{"class":176},[93,2049,1976],{"class":110},[93,2051,114],{"class":106},[93,2053,1981],{"class":106},[93,2055,1921],{"class":176},[93,2057,1924],{"class":110},[93,2059,2060],{"class":163},"post",[93,2062,1780],{"class":110},[93,2064,1992],{"class":117},[93,2066,2067],{"class":110},", req)\n",[93,2069,2070,2072],{"class":95,"line":1141},[93,2071,1999],{"class":106},[93,2073,2002],{"class":110},[93,2075,2076],{"class":95,"line":1146},[93,2077,1368],{"class":110},[93,2079,2080],{"class":95,"line":1152},[93,2081,151],{"emptyLinePlaceholder":150},[93,2083,2084,2086,2089,2091,2094,2096,2098,2100,2102,2104,2106,2109],{"class":95,"line":1158},[93,2085,1893],{"class":106},[93,2087,2088],{"class":163}," ping",[93,2090,1780],{"class":110},[93,2092,2093],{"class":1309},"connId",[93,2095,1323],{"class":106},[93,2097,1459],{"class":176},[93,2099,42],{"class":110},[93,2101,1323],{"class":106},[93,2103,1904],{"class":163},[93,2105,1907],{"class":110},[93,2107,2108],{"class":163},"PingResponse",[93,2110,1913],{"class":110},[93,2112,2113,2115,2117,2119,2121,2123,2125,2127,2129,2131,2133,2136,2138,2141],{"class":95,"line":1164},[93,2114,1968],{"class":106},[93,2116,1451],{"class":110},[93,2118,1973],{"class":176},[93,2120,1976],{"class":110},[93,2122,114],{"class":106},[93,2124,1981],{"class":106},[93,2126,1921],{"class":176},[93,2128,1924],{"class":110},[93,2130,2060],{"class":163},[93,2132,1780],{"class":110},[93,2134,2135],{"class":117},"`\u002Fconnections\u002F${",[93,2137,2093],{"class":110},[93,2139,2140],{"class":117},"}\u002Fping`",[93,2142,1935],{"class":110},[93,2144,2145,2147],{"class":95,"line":1170},[93,2146,1999],{"class":106},[93,2148,2002],{"class":110},[93,2150,2151],{"class":95,"line":1176},[93,2152,1368],{"class":110},[93,2154,2155],{"class":95,"line":1182},[93,2156,151],{"emptyLinePlaceholder":150},[93,2158,2159,2161,2164,2166,2168,2170,2172,2174,2176,2178,2180,2183,2186,2189,2191,2193,2195,2198,2200,2203],{"class":95,"line":1187},[93,2160,1893],{"class":106},[93,2162,2163],{"class":163}," listDatabases",[93,2165,1780],{"class":110},[93,2167,2093],{"class":1309},[93,2169,1323],{"class":106},[93,2171,1459],{"class":176},[93,2173,42],{"class":110},[93,2175,1323],{"class":106},[93,2177,1904],{"class":163},[93,2179,1907],{"class":110},[93,2181,2182],{"class":163},"Array",[93,2184,2185],{"class":110},"\u003C{ ",[93,2187,2188],{"class":1309},"name",[93,2190,1323],{"class":106},[93,2192,1459],{"class":176},[93,2194,1462],{"class":110},[93,2196,2197],{"class":1309},"isSystem",[93,2199,1323],{"class":106},[93,2201,2202],{"class":176}," boolean",[93,2204,2205],{"class":110}," }>> {\n",[93,2207,2208,2210,2212,2214,2216,2218,2220,2222,2224,2226,2228,2230,2232,2235],{"class":95,"line":1193},[93,2209,1968],{"class":106},[93,2211,1451],{"class":110},[93,2213,1973],{"class":176},[93,2215,1976],{"class":110},[93,2217,114],{"class":106},[93,2219,1981],{"class":106},[93,2221,1921],{"class":176},[93,2223,1924],{"class":110},[93,2225,1927],{"class":163},[93,2227,1780],{"class":110},[93,2229,2135],{"class":117},[93,2231,2093],{"class":110},[93,2233,2234],{"class":117},"}\u002Fdatabases`",[93,2236,1935],{"class":110},[93,2238,2239,2241],{"class":95,"line":1199},[93,2240,1999],{"class":106},[93,2242,2002],{"class":110},[93,2244,2245],{"class":95,"line":1205},[93,2246,1368],{"class":110},[93,2248,2249],{"class":95,"line":1210},[93,2250,151],{"emptyLinePlaceholder":150},[93,2252,2253,2255,2258,2260,2262,2264,2266,2268,2271,2273,2275,2277,2279,2281,2283,2286],{"class":95,"line":1216},[93,2254,1893],{"class":106},[93,2256,2257],{"class":163}," listTables",[93,2259,1780],{"class":110},[93,2261,2093],{"class":1309},[93,2263,1323],{"class":106},[93,2265,1459],{"class":176},[93,2267,1790],{"class":110},[93,2269,2270],{"class":1309},"database",[93,2272,1323],{"class":106},[93,2274,1459],{"class":176},[93,2276,42],{"class":110},[93,2278,1323],{"class":106},[93,2280,1904],{"class":163},[93,2282,1907],{"class":110},[93,2284,2285],{"class":176},"string",[93,2287,2288],{"class":110},"[]> {\n",[93,2290,2291,2293,2295,2297,2299,2301,2303,2305,2307,2309],{"class":95,"line":1222},[93,2292,1968],{"class":106},[93,2294,1451],{"class":110},[93,2296,1973],{"class":176},[93,2298,1976],{"class":110},[93,2300,114],{"class":106},[93,2302,1981],{"class":106},[93,2304,1921],{"class":176},[93,2306,1924],{"class":110},[93,2308,1927],{"class":163},[93,2310,2311],{"class":110},"(\n",[93,2313,2314,2317,2319,2322,2324],{"class":95,"line":1228},[93,2315,2316],{"class":117},"      `\u002Fconnections\u002F${",[93,2318,2093],{"class":110},[93,2320,2321],{"class":117},"}\u002Fdatabases\u002F${",[93,2323,2270],{"class":110},[93,2325,2326],{"class":117},"}\u002Ftables`\n",[93,2328,2329],{"class":95,"line":1233},[93,2330,2331],{"class":110},"    )\n",[93,2333,2334,2336],{"class":95,"line":1239},[93,2335,1999],{"class":106},[93,2337,2002],{"class":110},[93,2339,2340],{"class":95,"line":1245},[93,2341,1368],{"class":110},[93,2343,2344],{"class":95,"line":1251},[93,2345,151],{"emptyLinePlaceholder":150},[93,2347,2348,2350,2353,2355,2357,2359,2361,2363,2365,2367,2369,2371],{"class":95,"line":1257},[93,2349,1893],{"class":106},[93,2351,2352],{"class":163}," deleteConnection",[93,2354,1780],{"class":110},[93,2356,2093],{"class":1309},[93,2358,1323],{"class":106},[93,2360,1459],{"class":176},[93,2362,42],{"class":110},[93,2364,1323],{"class":106},[93,2366,1904],{"class":163},[93,2368,1907],{"class":110},[93,2370,1910],{"class":176},[93,2372,1913],{"class":110},[93,2374,2375,2377,2379,2381,2384,2386,2388,2390,2393],{"class":95,"line":1263},[93,2376,1918],{"class":106},[93,2378,1921],{"class":176},[93,2380,1924],{"class":110},[93,2382,2383],{"class":163},"delete",[93,2385,1780],{"class":110},[93,2387,2135],{"class":117},[93,2389,2093],{"class":110},[93,2391,2392],{"class":117},"}`",[93,2394,2395],{"class":110},", {\n",[93,2397,2399,2402,2405,2407,2410],{"class":95,"line":2398},100,[93,2400,2401],{"class":110},"      headers: { ",[93,2403,2404],{"class":117},"'X-Confirm-Delete'",[93,2406,1864],{"class":110},[93,2408,2409],{"class":117},"'true'",[93,2411,2412],{"class":110}," },\n",[93,2414,2416],{"class":95,"line":2415},101,[93,2417,1880],{"class":110},[93,2419,2421],{"class":95,"line":2420},102,[93,2422,1368],{"class":110},[93,2424,2426],{"class":95,"line":2425},103,[93,2427,1490],{"class":110},[93,2429,2431],{"class":95,"line":2430},104,[93,2432,151],{"emptyLinePlaceholder":150},[93,2434,2436],{"class":95,"line":2435},105,[93,2437,2438],{"class":99},"\u002F\u002F Usage\n",[93,2440,2442,2445,2448,2451],{"class":95,"line":2441},106,[93,2443,2444],{"class":106},"async",[93,2446,2447],{"class":106}," function",[93,2449,2450],{"class":163}," main",[93,2452,2453],{"class":110},"() {\n",[93,2455,2457,2460,2463,2465,2468,2470,2472,2475,2477,2480],{"class":95,"line":2456},107,[93,2458,2459],{"class":106},"  const",[93,2461,2462],{"class":176}," api",[93,2464,1805],{"class":106},[93,2466,2467],{"class":106}," new",[93,2469,1753],{"class":163},[93,2471,1780],{"class":110},[93,2473,2474],{"class":117},"'your_api_key'",[93,2476,1790],{"class":110},[93,2478,2479],{"class":117},"'your_install_id'",[93,2481,1935],{"class":110},[93,2483,2485,2488,2491,2494],{"class":95,"line":2484},108,[93,2486,2487],{"class":106},"  await",[93,2489,2490],{"class":110}," api.",[93,2492,2493],{"class":163},"loadUserConfigs",[93,2495,2496],{"class":110},"()\n",[93,2498,2500],{"class":95,"line":2499},109,[93,2501,151],{"emptyLinePlaceholder":150},[93,2503,2505,2507,2510,2512,2514,2516,2519],{"class":95,"line":2504},110,[93,2506,2459],{"class":106},[93,2508,2509],{"class":176}," result",[93,2511,1805],{"class":106},[93,2513,1981],{"class":106},[93,2515,2490],{"class":110},[93,2517,2518],{"class":163},"createConnection",[93,2520,1830],{"class":110},[93,2522,2524,2527,2530],{"class":95,"line":2523},111,[93,2525,2526],{"class":110},"    name: ",[93,2528,2529],{"class":117},"'mysql-source'",[93,2531,1870],{"class":110},[93,2533,2535,2538,2541],{"class":95,"line":2534},112,[93,2536,2537],{"class":110},"    type: ",[93,2539,2540],{"class":117},"'mysql'",[93,2542,1870],{"class":110},[93,2544,2546],{"class":95,"line":2545},113,[93,2547,2548],{"class":110},"    spec: {\n",[93,2550,2552],{"class":95,"line":2551},114,[93,2553,2554],{"class":110},"      database: {\n",[93,2556,2558,2561,2564],{"class":95,"line":2557},115,[93,2559,2560],{"class":110},"        host: ",[93,2562,2563],{"class":117},"'localhost'",[93,2565,1870],{"class":110},[93,2567,2569,2572,2575],{"class":95,"line":2568},116,[93,2570,2571],{"class":110},"        port: ",[93,2573,2574],{"class":176},"3306",[93,2576,1870],{"class":110},[93,2578,2580,2583,2586],{"class":95,"line":2579},117,[93,2581,2582],{"class":110},"        username: ",[93,2584,2585],{"class":117},"'root'",[93,2587,1870],{"class":110},[93,2589,2591,2594,2597],{"class":95,"line":2590},118,[93,2592,2593],{"class":110},"        password: ",[93,2595,2596],{"class":117},"'secret'",[93,2598,1870],{"class":110},[93,2600,2602,2605,2608],{"class":95,"line":2601},119,[93,2603,2604],{"class":110},"        database: ",[93,2606,2607],{"class":117},"'source_db'",[93,2609,1870],{"class":110},[93,2611,2613],{"class":95,"line":2612},120,[93,2614,1875],{"class":110},[93,2616,2618],{"class":95,"line":2617},121,[93,2619,1190],{"class":110},[93,2621,2623],{"class":95,"line":2622},122,[93,2624,2625],{"class":110},"  })\n",[93,2627,2629,2632,2635,2637,2640],{"class":95,"line":2628},123,[93,2630,2631],{"class":110},"  console.",[93,2633,2634],{"class":163},"log",[93,2636,1780],{"class":110},[93,2638,2639],{"class":117},"'Created:'",[93,2641,2642],{"class":110},", result.id)\n",[93,2644,2646],{"class":95,"line":2645},124,[93,2647,151],{"emptyLinePlaceholder":150},[93,2649,2651,2653,2655,2657,2659,2661,2664],{"class":95,"line":2650},125,[93,2652,2459],{"class":106},[93,2654,2088],{"class":176},[93,2656,1805],{"class":106},[93,2658,1981],{"class":106},[93,2660,2490],{"class":110},[93,2662,2663],{"class":163},"ping",[93,2665,2666],{"class":110},"(result.id)\n",[93,2668,2670,2672,2674,2676,2679],{"class":95,"line":2669},126,[93,2671,2631],{"class":110},[93,2673,2634],{"class":163},[93,2675,1780],{"class":110},[93,2677,2678],{"class":117},"'Ping:'",[93,2680,2681],{"class":110},", ping.ping)\n",[93,2683,2685],{"class":95,"line":2684},127,[93,2686,151],{"emptyLinePlaceholder":150},[93,2688,2690,2692,2695,2697,2699,2701,2704],{"class":95,"line":2689},128,[93,2691,2459],{"class":106},[93,2693,2694],{"class":176}," databases",[93,2696,1805],{"class":106},[93,2698,1981],{"class":106},[93,2700,2490],{"class":110},[93,2702,2703],{"class":163},"listDatabases",[93,2705,2666],{"class":110},[93,2707,2709,2712,2714,2717,2720,2723,2726,2729,2732,2735,2738,2741,2744],{"class":95,"line":2708},129,[93,2710,2711],{"class":106},"  for",[93,2713,54],{"class":110},[93,2715,2716],{"class":106},"const",[93,2718,2719],{"class":176}," db",[93,2721,2722],{"class":106}," of",[93,2724,2725],{"class":110}," databases.",[93,2727,2728],{"class":163},"filter",[93,2730,2731],{"class":110},"((",[93,2733,2734],{"class":1309},"d",[93,2736,2737],{"class":110},") ",[93,2739,2740],{"class":106},"=>",[93,2742,2743],{"class":106}," !",[93,2745,2746],{"class":110},"d.isSystem)) {\n",[93,2748,2750,2752,2755,2757,2759,2761,2764],{"class":95,"line":2749},130,[93,2751,1968],{"class":106},[93,2753,2754],{"class":176}," tables",[93,2756,1805],{"class":106},[93,2758,1981],{"class":106},[93,2760,2490],{"class":110},[93,2762,2763],{"class":163},"listTables",[93,2765,2766],{"class":110},"(result.id, db.name)\n",[93,2768,2770,2773,2775,2777,2780,2783,2785,2787,2790],{"class":95,"line":2769},131,[93,2771,2772],{"class":110},"    console.",[93,2774,2634],{"class":163},[93,2776,1780],{"class":110},[93,2778,2779],{"class":117},"`${",[93,2781,2782],{"class":110},"db",[93,2784,22],{"class":117},[93,2786,2188],{"class":110},[93,2788,2789],{"class":117},"}:`",[93,2791,2792],{"class":110},", tables)\n",[93,2794,2796],{"class":95,"line":2795},132,[93,2797,1368],{"class":110},[93,2799,2801],{"class":95,"line":2800},133,[93,2802,1490],{"class":110},[93,2804,2806],{"class":95,"line":2805},134,[93,2807,151],{"emptyLinePlaceholder":150},[93,2809,2811,2814,2817,2820],{"class":95,"line":2810},135,[93,2812,2813],{"class":163},"main",[93,2815,2816],{"class":110},"().",[93,2818,2819],{"class":163},"catch",[93,2821,2822],{"class":110},"(console.error)\n",[81,2824,2825],{"v-slot:powershell":83},[85,2826,2830],{"className":2827,"code":2828,"language":2829,"meta":83,"style":83},"language-powershell shiki shiki-themes github-light github-dark","class DBConvertStreamsAPI {\n    [string]$BaseURL\n    [hashtable]$Headers\n\n    DBConvertStreamsAPI([string]$ApiKey, [string]$InstallId,\n                       [string]$BaseURL = \"http:\u002F\u002F127.0.0.1:8020\u002Fapi\u002Fv1\") {\n        $this.BaseURL = $BaseURL\n        $this.Headers = @{\n            \"X-API-Key\"    = $ApiKey\n            \"X-Install-ID\" = $InstallId\n            \"Content-Type\" = \"application\u002Fjson\"\n        }\n    }\n\n    [void] LoadUserConfigs() {\n        Invoke-RestMethod -Uri \"$($this.BaseURL)\u002Fuser\u002Fconfigs\" `\n            -Headers $this.Headers -Method Get\n    }\n\n    [object] ListConnections() {\n        return Invoke-RestMethod -Uri \"$($this.BaseURL)\u002Fconnections\" `\n            -Headers $this.Headers -Method Get\n    }\n\n    [object] CreateConnection([hashtable]$Data) {\n        $body = $Data | ConvertTo-Json -Depth 5\n        return Invoke-RestMethod -Uri \"$($this.BaseURL)\u002Fconnections\" `\n            -Headers $this.Headers -Method Post -Body $body\n    }\n\n    [object] Ping([string]$ConnId) {\n        return Invoke-RestMethod -Uri \"$($this.BaseURL)\u002Fconnections\u002F$ConnId\u002Fping\" `\n            -Headers $this.Headers -Method Post\n    }\n\n    [object] ListDatabases([string]$ConnId) {\n        return Invoke-RestMethod -Uri \"$($this.BaseURL)\u002Fconnections\u002F$ConnId\u002Fdatabases\" `\n            -Headers $this.Headers -Method Get\n    }\n\n    [object] ListTables([string]$ConnId, [string]$Database) {\n        return Invoke-RestMethod `\n            -Uri \"$($this.BaseURL)\u002Fconnections\u002F$ConnId\u002Fdatabases\u002F$Database\u002Ftables\" `\n            -Headers $this.Headers -Method Get\n    }\n\n    [void] DeleteConnection([string]$ConnId) {\n        $deleteHeaders = $this.Headers.Clone()\n        $deleteHeaders[\"X-Confirm-Delete\"] = \"true\"\n        Invoke-RestMethod -Uri \"$($this.BaseURL)\u002Fconnections\u002F$ConnId\" `\n            -Headers $deleteHeaders -Method Delete\n    }\n}\n\n# Usage\n$api = [DBConvertStreamsAPI]::new(\"your_api_key\", \"your_install_id\")\n$api.LoadUserConfigs()\n\n# Create a MySQL connection\n$result = $api.CreateConnection(@{\n    name = \"mysql-source\"\n    type = \"mysql\"\n    spec = @{\n        database = @{\n            host     = \"localhost\"\n            port     = 3306\n            username = \"root\"\n            password = \"secret\"\n            database = \"source_db\"\n        }\n    }\n})\nWrite-Host \"Created: $($result.id)\"\n\n# Test connectivity\n$ping = $api.Ping($result.id)\nWrite-Host \"Ping: $($ping.ping)\"\n\n# List databases and tables\n$databases = $api.ListDatabases($result.id)\nforeach ($db in $databases | Where-Object { -not $_.isSystem }) {\n    $tables = $api.ListTables($result.id, $db.name)\n    Write-Host \"$($db.name): $($tables -join ', ')\"\n}\n","powershell",[39,2831,2832,2837,2842,2847,2851,2856,2861,2866,2871,2876,2881,2886,2890,2894,2898,2903,2908,2913,2917,2921,2926,2931,2935,2939,2943,2948,2953,2957,2962,2966,2970,2975,2980,2985,2989,2993,2998,3003,3007,3011,3015,3020,3025,3030,3034,3038,3042,3047,3052,3057,3062,3067,3071,3075,3079,3083,3088,3093,3097,3101,3106,3111,3116,3121,3126,3131,3136,3141,3146,3151,3155,3159,3163,3168,3172,3176,3181,3186,3190,3194,3199,3204,3209,3214],{"__ignoreMap":83},[93,2833,2834],{"class":95,"line":96},[93,2835,2836],{},"class DBConvertStreamsAPI {\n",[93,2838,2839],{"class":95,"line":103},[93,2840,2841],{},"    [string]$BaseURL\n",[93,2843,2844],{"class":95,"line":121},[93,2845,2846],{},"    [hashtable]$Headers\n",[93,2848,2849],{"class":95,"line":134},[93,2850,151],{"emptyLinePlaceholder":150},[93,2852,2853],{"class":95,"line":147},[93,2854,2855],{},"    DBConvertStreamsAPI([string]$ApiKey, [string]$InstallId,\n",[93,2857,2858],{"class":95,"line":154},[93,2859,2860],{},"                       [string]$BaseURL = \"http:\u002F\u002F127.0.0.1:8020\u002Fapi\u002Fv1\") {\n",[93,2862,2863],{"class":95,"line":160},[93,2864,2865],{},"        $this.BaseURL = $BaseURL\n",[93,2867,2868],{"class":95,"line":180},[93,2869,2870],{},"        $this.Headers = @{\n",[93,2872,2873],{"class":95,"line":197},[93,2874,2875],{},"            \"X-API-Key\"    = $ApiKey\n",[93,2877,2878],{"class":95,"line":211},[93,2879,2880],{},"            \"X-Install-ID\" = $InstallId\n",[93,2882,2883],{"class":95,"line":216},[93,2884,2885],{},"            \"Content-Type\" = \"application\u002Fjson\"\n",[93,2887,2888],{"class":95,"line":222},[93,2889,829],{},[93,2891,2892],{"class":95,"line":236},[93,2893,398],{},[93,2895,2896],{"class":95,"line":249},[93,2897,151],{"emptyLinePlaceholder":150},[93,2899,2900],{"class":95,"line":260},[93,2901,2902],{},"    [void] LoadUserConfigs() {\n",[93,2904,2905],{"class":95,"line":265},[93,2906,2907],{},"        Invoke-RestMethod -Uri \"$($this.BaseURL)\u002Fuser\u002Fconfigs\" `\n",[93,2909,2910],{"class":95,"line":271},[93,2911,2912],{},"            -Headers $this.Headers -Method Get\n",[93,2914,2915],{"class":95,"line":290},[93,2916,398],{},[93,2918,2919],{"class":95,"line":303},[93,2920,151],{"emptyLinePlaceholder":150},[93,2922,2923],{"class":95,"line":316},[93,2924,2925],{},"    [object] ListConnections() {\n",[93,2927,2928],{"class":95,"line":326},[93,2929,2930],{},"        return Invoke-RestMethod -Uri \"$($this.BaseURL)\u002Fconnections\" `\n",[93,2932,2933],{"class":95,"line":335},[93,2934,2912],{},[93,2936,2937],{"class":95,"line":341},[93,2938,398],{},[93,2940,2941],{"class":95,"line":347},[93,2942,151],{"emptyLinePlaceholder":150},[93,2944,2945],{"class":95,"line":353},[93,2946,2947],{},"    [object] CreateConnection([hashtable]$Data) {\n",[93,2949,2950],{"class":95,"line":359},[93,2951,2952],{},"        $body = $Data | ConvertTo-Json -Depth 5\n",[93,2954,2955],{"class":95,"line":365},[93,2956,2930],{},[93,2958,2959],{"class":95,"line":371},[93,2960,2961],{},"            -Headers $this.Headers -Method Post -Body $body\n",[93,2963,2964],{"class":95,"line":377},[93,2965,398],{},[93,2967,2968],{"class":95,"line":383},[93,2969,151],{"emptyLinePlaceholder":150},[93,2971,2972],{"class":95,"line":389},[93,2973,2974],{},"    [object] Ping([string]$ConnId) {\n",[93,2976,2977],{"class":95,"line":395},[93,2978,2979],{},"        return Invoke-RestMethod -Uri \"$($this.BaseURL)\u002Fconnections\u002F$ConnId\u002Fping\" `\n",[93,2981,2982],{"class":95,"line":401},[93,2983,2984],{},"            -Headers $this.Headers -Method Post\n",[93,2986,2987],{"class":95,"line":407},[93,2988,398],{},[93,2990,2991],{"class":95,"line":412},[93,2992,151],{"emptyLinePlaceholder":150},[93,2994,2995],{"class":95,"line":418},[93,2996,2997],{},"    [object] ListDatabases([string]$ConnId) {\n",[93,2999,3000],{"class":95,"line":435},[93,3001,3002],{},"        return Invoke-RestMethod -Uri \"$($this.BaseURL)\u002Fconnections\u002F$ConnId\u002Fdatabases\" `\n",[93,3004,3005],{"class":95,"line":448},[93,3006,2912],{},[93,3008,3009],{"class":95,"line":461},[93,3010,398],{},[93,3012,3013],{"class":95,"line":470},[93,3014,151],{"emptyLinePlaceholder":150},[93,3016,3017],{"class":95,"line":477},[93,3018,3019],{},"    [object] ListTables([string]$ConnId, [string]$Database) {\n",[93,3021,3022],{"class":95,"line":483},[93,3023,3024],{},"        return Invoke-RestMethod `\n",[93,3026,3027],{"class":95,"line":489},[93,3028,3029],{},"            -Uri \"$($this.BaseURL)\u002Fconnections\u002F$ConnId\u002Fdatabases\u002F$Database\u002Ftables\" `\n",[93,3031,3032],{"class":95,"line":494},[93,3033,2912],{},[93,3035,3036],{"class":95,"line":499},[93,3037,398],{},[93,3039,3040],{"class":95,"line":504},[93,3041,151],{"emptyLinePlaceholder":150},[93,3043,3044],{"class":95,"line":510},[93,3045,3046],{},"    [void] DeleteConnection([string]$ConnId) {\n",[93,3048,3049],{"class":95,"line":516},[93,3050,3051],{},"        $deleteHeaders = $this.Headers.Clone()\n",[93,3053,3054],{"class":95,"line":521},[93,3055,3056],{},"        $deleteHeaders[\"X-Confirm-Delete\"] = \"true\"\n",[93,3058,3059],{"class":95,"line":527},[93,3060,3061],{},"        Invoke-RestMethod -Uri \"$($this.BaseURL)\u002Fconnections\u002F$ConnId\" `\n",[93,3063,3064],{"class":95,"line":532},[93,3065,3066],{},"            -Headers $deleteHeaders -Method Delete\n",[93,3068,3069],{"class":95,"line":537},[93,3070,398],{},[93,3072,3073],{"class":95,"line":542},[93,3074,1490],{},[93,3076,3077],{"class":95,"line":547},[93,3078,151],{"emptyLinePlaceholder":150},[93,3080,3081],{"class":95,"line":553},[93,3082,1103],{},[93,3084,3085],{"class":95,"line":577},[93,3086,3087],{},"$api = [DBConvertStreamsAPI]::new(\"your_api_key\", \"your_install_id\")\n",[93,3089,3090],{"class":95,"line":590},[93,3091,3092],{},"$api.LoadUserConfigs()\n",[93,3094,3095],{"class":95,"line":601},[93,3096,151],{"emptyLinePlaceholder":150},[93,3098,3099],{"class":95,"line":606},[93,3100,268],{},[93,3102,3103],{"class":95,"line":612},[93,3104,3105],{},"$result = $api.CreateConnection(@{\n",[93,3107,3108],{"class":95,"line":630},[93,3109,3110],{},"    name = \"mysql-source\"\n",[93,3112,3113],{"class":95,"line":643},[93,3114,3115],{},"    type = \"mysql\"\n",[93,3117,3118],{"class":95,"line":654},[93,3119,3120],{},"    spec = @{\n",[93,3122,3123],{"class":95,"line":659},[93,3124,3125],{},"        database = @{\n",[93,3127,3128],{"class":95,"line":665},[93,3129,3130],{},"            host     = \"localhost\"\n",[93,3132,3133],{"class":95,"line":683},[93,3134,3135],{},"            port     = 3306\n",[93,3137,3138],{"class":95,"line":696},[93,3139,3140],{},"            username = \"root\"\n",[93,3142,3143],{"class":95,"line":707},[93,3144,3145],{},"            password = \"secret\"\n",[93,3147,3148],{"class":95,"line":712},[93,3149,3150],{},"            database = \"source_db\"\n",[93,3152,3153],{"class":95,"line":718},[93,3154,829],{},[93,3156,3157],{"class":95,"line":740},[93,3158,398],{},[93,3160,3161],{"class":95,"line":753},[93,3162,1196],{},[93,3164,3165],{"class":95,"line":766},[93,3166,3167],{},"Write-Host \"Created: $($result.id)\"\n",[93,3169,3170],{"class":95,"line":1120},[93,3171,151],{"emptyLinePlaceholder":150},[93,3173,3174],{"class":95,"line":1125},[93,3175,1213],{},[93,3177,3178],{"class":95,"line":1131},[93,3179,3180],{},"$ping = $api.Ping($result.id)\n",[93,3182,3183],{"class":95,"line":1136},[93,3184,3185],{},"Write-Host \"Ping: $($ping.ping)\"\n",[93,3187,3188],{"class":95,"line":1141},[93,3189,151],{"emptyLinePlaceholder":150},[93,3191,3192],{"class":95,"line":1146},[93,3193,1236],{},[93,3195,3196],{"class":95,"line":1152},[93,3197,3198],{},"$databases = $api.ListDatabases($result.id)\n",[93,3200,3201],{"class":95,"line":1158},[93,3202,3203],{},"foreach ($db in $databases | Where-Object { -not $_.isSystem }) {\n",[93,3205,3206],{"class":95,"line":1164},[93,3207,3208],{},"    $tables = $api.ListTables($result.id, $db.name)\n",[93,3210,3211],{"class":95,"line":1170},[93,3212,3213],{},"    Write-Host \"$($db.name): $($tables -join ', ')\"\n",[93,3215,3216],{"class":95,"line":1176},[93,3217,1490],{},[24,3219,3221],{"id":3220},"error-handling","Error handling",[14,3223,3224],{},"The API returns structured errors:",[85,3226,3230],{"className":3227,"code":3228,"language":3229,"meta":83,"style":83},"language-json shiki shiki-themes github-light github-dark","{\n  \"error\": \"Validation failed for field 'X-Confirm-Delete': Deletion requires X-Confirm-Delete: true header\",\n  \"type\": \"validation\",\n  \"code\": \"VALIDATION_FAILED\",\n  \"details\": {\n    \"field\": \"X-Confirm-Delete\",\n    \"reason\": \"Deletion requires X-Confirm-Delete: true header\"\n  }\n}\n","json",[39,3231,3232,3237,3249,3261,3273,3281,3293,3303,3307],{"__ignoreMap":83},[93,3233,3234],{"class":95,"line":96},[93,3235,3236],{"class":110},"{\n",[93,3238,3239,3242,3244,3247],{"class":95,"line":103},[93,3240,3241],{"class":176},"  \"error\"",[93,3243,1864],{"class":110},[93,3245,3246],{"class":117},"\"Validation failed for field 'X-Confirm-Delete': Deletion requires X-Confirm-Delete: true header\"",[93,3248,1870],{"class":110},[93,3250,3251,3254,3256,3259],{"class":95,"line":121},[93,3252,3253],{"class":176},"  \"type\"",[93,3255,1864],{"class":110},[93,3257,3258],{"class":117},"\"validation\"",[93,3260,1870],{"class":110},[93,3262,3263,3266,3268,3271],{"class":95,"line":134},[93,3264,3265],{"class":176},"  \"code\"",[93,3267,1864],{"class":110},[93,3269,3270],{"class":117},"\"VALIDATION_FAILED\"",[93,3272,1870],{"class":110},[93,3274,3275,3278],{"class":95,"line":147},[93,3276,3277],{"class":176},"  \"details\"",[93,3279,3280],{"class":110},": {\n",[93,3282,3283,3286,3288,3291],{"class":95,"line":154},[93,3284,3285],{"class":176},"    \"field\"",[93,3287,1864],{"class":110},[93,3289,3290],{"class":117},"\"X-Confirm-Delete\"",[93,3292,1870],{"class":110},[93,3294,3295,3298,3300],{"class":95,"line":160},[93,3296,3297],{"class":176},"    \"reason\"",[93,3299,1864],{"class":110},[93,3301,3302],{"class":117},"\"Deletion requires X-Confirm-Delete: true header\"\n",[93,3304,3305],{"class":95,"line":180},[93,3306,1368],{"class":110},[93,3308,3309],{"class":95,"line":197},[93,3310,1490],{"class":110},[14,3312,3313],{},"Common status codes:",[3315,3316,3317,3330],"table",{},[3318,3319,3320],"thead",{},[3321,3322,3323,3327],"tr",{},[3324,3325,3326],"th",{},"Code",[3324,3328,3329],{},"Meaning",[3331,3332,3333,3342,3350,3358],"tbody",{},[3321,3334,3335,3339],{},[3336,3337,3338],"td",{},"400",[3336,3340,3341],{},"Invalid request data",[3321,3343,3344,3347],{},[3336,3345,3346],{},"401",[3336,3348,3349],{},"Invalid or missing API key",[3321,3351,3352,3355],{},[3336,3353,3354],{},"404",[3336,3356,3357],{},"Connection not found",[3321,3359,3360,3363],{},[3336,3361,3362],{},"503",[3336,3364,3365],{},"Database connection error",[24,3367,3369],{"id":3368},"related-docs","Related docs",[29,3371,3372,3377],{},[32,3373,3374,3376],{},[18,3375,21],{"href":20}," — Endpoint reference",[32,3378,3379,3383],{},[18,3380,3382],{"href":3381},"\u002Fdocs\u002Fapi\u002Fstreams","Streams API"," — Stream operations",[3385,3386,3387],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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}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 .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":83,"searchDepth":103,"depth":103,"links":3389},[3390,3391,3392,3393],{"id":26,"depth":103,"text":27},{"id":72,"depth":103,"text":73},{"id":3220,"depth":103,"text":3221},{"id":3368,"depth":103,"text":3369},"Programming examples for working with the DBConvert Streams Connection API","md",{},false,"\u002Fdocs\u002Fapi\u002Fexamples-connections",null,{"title":5,"description":3394},"docs\u002Fapi\u002Fexamples-connections","m6JMWcgYtuBZ16iZ7_f2iTd9gTeSYL7dlw_E8GUT7hs",1783896284930]