| { |
| "info": { |
| "_postman_id": "b07b47aa-5a8c-4be5-bbc3-0fd98040ee92", |
| "name": "Membrane", |
| "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" |
| }, |
| "item": [ |
| { |
| "name": "Get swagger file", |
| "event": [ |
| { |
| "listen": "test", |
| "script": { |
| "type": "text/javascript", |
| "exec": [ |
| "tests[\"Status code is 200\"] = responseCode.code === 200;", |
| "", |
| "var jsonData = JSON.parse(responseBody);", |
| "tests[\"title is Apache MetaModel Membrane\"] = jsonData.info.title === \"Apache MetaModel Membrane\";" |
| ] |
| } |
| } |
| ], |
| "request": { |
| "method": "GET", |
| "header": [], |
| "body": { |
| "mode": "raw", |
| "raw": "" |
| }, |
| "url": { |
| "raw": "{{baseUrl}}/swagger.json", |
| "host": [ |
| "{{baseUrl}}" |
| ], |
| "path": [ |
| "swagger.json" |
| ] |
| } |
| }, |
| "response": [] |
| }, |
| { |
| "name": "Create my-tenant", |
| "event": [ |
| { |
| "listen": "test", |
| "script": { |
| "type": "text/javascript", |
| "exec": [ |
| "tests[\"Status code is 200\"] = responseCode.code === 200;", |
| "", |
| "var jsonData = JSON.parse(responseBody);", |
| "var isTenant = jsonData.type === \"tenant\";", |
| "tests[\"type is tenant\"] = isTenant;", |
| "", |
| "if (isTenant) {", |
| " postman.setGlobalVariable(\"membrane_tenant\", jsonData.name);", |
| "}", |
| "" |
| ] |
| } |
| } |
| ], |
| "request": { |
| "method": "PUT", |
| "header": [ |
| { |
| "key": "Content-Type", |
| "value": "application/json" |
| } |
| ], |
| "body": { |
| "mode": "raw", |
| "raw": "{\n \n}" |
| }, |
| "url": { |
| "raw": "{{baseUrl}}/my-tenant", |
| "host": [ |
| "{{baseUrl}}" |
| ], |
| "path": [ |
| "my-tenant" |
| ] |
| } |
| }, |
| "response": [] |
| }, |
| { |
| "name": "Get tenant info", |
| "event": [ |
| { |
| "listen": "test", |
| "script": { |
| "type": "text/javascript", |
| "exec": [ |
| "tests[\"Status code is 200\"] = responseCode.code === 200;", |
| "", |
| "var jsonData = JSON.parse(responseBody);", |
| "tests[\"type is tenant\"] = jsonData.type === \"tenant\";" |
| ] |
| } |
| } |
| ], |
| "request": { |
| "method": "GET", |
| "header": [], |
| "body": { |
| "mode": "raw", |
| "raw": "" |
| }, |
| "url": { |
| "raw": "{{baseUrl}}/{{membrane_tenant}}", |
| "host": [ |
| "{{baseUrl}}" |
| ], |
| "path": [ |
| "{{membrane_tenant}}" |
| ] |
| } |
| }, |
| "response": [] |
| }, |
| { |
| "name": "Create data source - postgres", |
| "event": [ |
| { |
| "listen": "test", |
| "script": { |
| "type": "text/javascript", |
| "exec": [ |
| "tests[\"Status code is 200\"] = responseCode.code === 200;", |
| "", |
| "var jsonData = JSON.parse(responseBody);", |
| "tests[\"type is datasource\"] = jsonData.type === \"datasource\";", |
| "tests[\"is updateable\"] = jsonData.updateable;", |
| "", |
| "postman.setGlobalVariable(\"membrane_data_source\", jsonData.name);", |
| "" |
| ] |
| } |
| } |
| ], |
| "request": { |
| "method": "PUT", |
| "header": [ |
| { |
| "key": "Content-Type", |
| "value": "application/json" |
| } |
| ], |
| "body": { |
| "mode": "raw", |
| "raw": "{\n \"type\":\"jdbc\",\n \"url\": \"jdbc:postgresql://example-postgres/membrane\",\n \"username\": \"membrane\",\n \"password\": \"secret\"\n}" |
| }, |
| "url": { |
| "raw": "{{baseUrl}}/{{membrane_tenant}}/example-postgres", |
| "host": [ |
| "{{baseUrl}}" |
| ], |
| "path": [ |
| "{{membrane_tenant}}", |
| "example-postgres" |
| ] |
| } |
| }, |
| "response": [] |
| }, |
| { |
| "name": "Create data source - couchdb", |
| "event": [ |
| { |
| "listen": "test", |
| "script": { |
| "type": "text/javascript", |
| "exec": [ |
| "tests[\"Status code is 200\"] = responseCode.code === 200;", |
| "", |
| "var jsonData = JSON.parse(responseBody);", |
| "tests[\"type is datasource\"] = jsonData.type === \"datasource\";", |
| "tests[\"is updateable\"] = jsonData.updateable;", |
| "", |
| "postman.setGlobalVariable(\"membrane_data_source\", jsonData.name);", |
| "" |
| ] |
| } |
| } |
| ], |
| "request": { |
| "method": "PUT", |
| "header": [ |
| { |
| "key": "Content-Type", |
| "value": "application/json" |
| } |
| ], |
| "body": { |
| "mode": "raw", |
| "raw": "{\n \"type\":\"couchdb\",\n \"hostname\": \"example-couchdb\",\n \"username\": \"membrane\",\n \"password\": \"secret\"\n}" |
| }, |
| "url": { |
| "raw": "{{baseUrl}}/{{membrane_tenant}}/example-couchdb", |
| "host": [ |
| "{{baseUrl}}" |
| ], |
| "path": [ |
| "{{membrane_tenant}}", |
| "example-couchdb" |
| ] |
| } |
| }, |
| "response": [] |
| }, |
| { |
| "name": "Create data source - pojo", |
| "event": [ |
| { |
| "listen": "test", |
| "script": { |
| "type": "text/javascript", |
| "exec": [ |
| "tests[\"Status code is 200\"] = responseCode.code === 200;", |
| "", |
| "var jsonData = JSON.parse(responseBody);", |
| "tests[\"type is datasource\"] = jsonData.type === \"datasource\";", |
| "tests[\"is updateable\"] = jsonData.updateable;", |
| "", |
| "postman.setGlobalVariable(\"membrane_data_source\", jsonData.name);", |
| "postman.setGlobalVariable(\"membrane_schema\", \"Schema\");", |
| "postman.setGlobalVariable(\"membrane_table\", \"foo\");", |
| "" |
| ] |
| } |
| } |
| ], |
| "request": { |
| "method": "PUT", |
| "header": [ |
| { |
| "key": "Content-Type", |
| "value": "application/json" |
| } |
| ], |
| "body": { |
| "mode": "raw", |
| "raw": "{\n \"type\":\"pojo\",\n \"table-defs\":\"hello_world (greeting VARCHAR, who VARCHAR); foo (bar INTEGER, baz DATE);\"\n}" |
| }, |
| "url": { |
| "raw": "{{baseUrl}}/{{membrane_tenant}}/example-pojo", |
| "host": [ |
| "{{baseUrl}}" |
| ], |
| "path": [ |
| "{{membrane_tenant}}", |
| "example-pojo" |
| ] |
| } |
| }, |
| "response": [] |
| }, |
| { |
| "name": "Get data source info", |
| "event": [ |
| { |
| "listen": "test", |
| "script": { |
| "type": "text/javascript", |
| "exec": [ |
| "tests[\"Status code is 200\"] = responseCode.code === 200;", |
| "", |
| "var jsonData = JSON.parse(responseBody);", |
| "tests[\"type is datasource\"] = jsonData.type === \"datasource\";", |
| "", |
| "// find the first non-information schema", |
| "var schemas = jsonData.schemas;", |
| "for (var i=0; i<schemas.length; i++) {", |
| " if (schemas[i].name !== \"information_schema\") {", |
| " postman.setGlobalVariable(\"membrane_schema\", schemas[i].name);", |
| " break;", |
| " }", |
| "}", |
| "" |
| ] |
| } |
| } |
| ], |
| "request": { |
| "method": "GET", |
| "header": [ |
| { |
| "key": "Content-Type", |
| "value": "application/json" |
| } |
| ], |
| "body": { |
| "mode": "raw", |
| "raw": "" |
| }, |
| "url": { |
| "raw": "{{baseUrl}}/{{membrane_tenant}}/{{membrane_data_source}}", |
| "host": [ |
| "{{baseUrl}}" |
| ], |
| "path": [ |
| "{{membrane_tenant}}", |
| "{{membrane_data_source}}" |
| ] |
| } |
| }, |
| "response": [] |
| }, |
| { |
| "name": "Get schema info", |
| "event": [ |
| { |
| "listen": "test", |
| "script": { |
| "type": "text/javascript", |
| "exec": [ |
| "tests[\"Status code is 200\"] = responseCode.code === 200;", |
| "", |
| "var jsonData = JSON.parse(responseBody);", |
| "tests[\"type is schema\"] = jsonData.type === \"schema\";", |
| "", |
| "// find the first non-information schema", |
| "var tables = jsonData.tables;", |
| "for (var i=0; i<tables.length; i++) {", |
| " postman.setGlobalVariable(\"membrane_table\", tables[i].name);", |
| " break;", |
| "}", |
| "" |
| ] |
| } |
| } |
| ], |
| "request": { |
| "method": "GET", |
| "header": [ |
| { |
| "key": "Content-Type", |
| "value": "application/json" |
| } |
| ], |
| "body": { |
| "mode": "raw", |
| "raw": "" |
| }, |
| "url": { |
| "raw": "{{baseUrl}}/{{membrane_tenant}}/{{membrane_data_source}}/s/{{membrane_schema}}", |
| "host": [ |
| "{{baseUrl}}" |
| ], |
| "path": [ |
| "{{membrane_tenant}}", |
| "{{membrane_data_source}}", |
| "s", |
| "{{membrane_schema}}" |
| ] |
| } |
| }, |
| "response": [] |
| }, |
| { |
| "name": "Get table info", |
| "event": [ |
| { |
| "listen": "test", |
| "script": { |
| "type": "text/javascript", |
| "exec": [ |
| "tests[\"Status code is 200\"] = responseCode.code === 200;", |
| "", |
| "var jsonData = JSON.parse(responseBody);", |
| "tests[\"type is table\"] = jsonData.type === \"table\";", |
| "", |
| "// find the first non-information schema", |
| "var columns = jsonData.columns;", |
| "for (var i=0; i<columns.length; i++) {", |
| " postman.setGlobalVariable(\"membrane_column\", columns[i].name);", |
| " break;", |
| "}", |
| "", |
| "postman.setGlobalVariable(\"membrane_column_count\", columns.length);", |
| "" |
| ] |
| } |
| } |
| ], |
| "request": { |
| "method": "GET", |
| "header": [ |
| { |
| "key": "Content-Type", |
| "value": "application/json" |
| } |
| ], |
| "body": { |
| "mode": "raw", |
| "raw": "" |
| }, |
| "url": { |
| "raw": "{{baseUrl}}/{{membrane_tenant}}/{{membrane_data_source}}/s/{{membrane_schema}}/t/{{membrane_table}}", |
| "host": [ |
| "{{baseUrl}}" |
| ], |
| "path": [ |
| "{{membrane_tenant}}", |
| "{{membrane_data_source}}", |
| "s", |
| "{{membrane_schema}}", |
| "t", |
| "{{membrane_table}}" |
| ] |
| } |
| }, |
| "response": [] |
| }, |
| { |
| "name": "Add table data", |
| "event": [ |
| { |
| "listen": "test", |
| "script": { |
| "type": "text/javascript", |
| "exec": [ |
| "tests[\"Status code is 200\"] = responseCode.code === 200;", |
| "", |
| "var jsonData = JSON.parse(responseBody);", |
| "tests[\"status is ok\"] = jsonData.status === \"ok\";", |
| "" |
| ] |
| } |
| } |
| ], |
| "request": { |
| "method": "POST", |
| "header": [ |
| { |
| "key": "Content-Type", |
| "value": "application/json" |
| } |
| ], |
| "body": { |
| "mode": "raw", |
| "raw": "{\n\t\"insert\": [\n\t\t{\n\t\t\t\"bar\": 42,\n\t\t\t\"baz\": null\n\t\t}\n\t]\n}" |
| }, |
| "url": { |
| "raw": "{{baseUrl}}/{{membrane_tenant}}/{{membrane_data_source}}/s/{{membrane_schema}}/t/{{membrane_table}}/d", |
| "host": [ |
| "{{baseUrl}}" |
| ], |
| "path": [ |
| "{{membrane_tenant}}", |
| "{{membrane_data_source}}", |
| "s", |
| "{{membrane_schema}}", |
| "t", |
| "{{membrane_table}}", |
| "d" |
| ] |
| } |
| }, |
| "response": [] |
| }, |
| { |
| "name": "Get table data", |
| "event": [ |
| { |
| "listen": "test", |
| "script": { |
| "type": "text/javascript", |
| "exec": [ |
| "tests[\"Status code is 200\"] = responseCode.code === 200;", |
| "", |
| "var jsonData = JSON.parse(responseBody);", |
| "tests[\"type is dataset\"] = jsonData.type === \"dataset\";", |
| "" |
| ] |
| } |
| } |
| ], |
| "request": { |
| "method": "GET", |
| "header": [ |
| { |
| "key": "Content-Type", |
| "value": "application/json" |
| } |
| ], |
| "body": { |
| "mode": "raw", |
| "raw": "" |
| }, |
| "url": { |
| "raw": "{{baseUrl}}/{{membrane_tenant}}/{{membrane_data_source}}/s/{{membrane_schema}}/t/{{membrane_table}}/d", |
| "host": [ |
| "{{baseUrl}}" |
| ], |
| "path": [ |
| "{{membrane_tenant}}", |
| "{{membrane_data_source}}", |
| "s", |
| "{{membrane_schema}}", |
| "t", |
| "{{membrane_table}}", |
| "d" |
| ] |
| } |
| }, |
| "response": [] |
| }, |
| { |
| "name": "Query table data", |
| "event": [ |
| { |
| "listen": "test", |
| "script": { |
| "type": "text/javascript", |
| "exec": [ |
| "tests[\"Status code is 200\"] = responseCode.code === 200;", |
| "", |
| "var jsonData = JSON.parse(responseBody);", |
| "tests[\"type is dataset\"] = jsonData.type === \"dataset\";", |
| "" |
| ] |
| } |
| } |
| ], |
| "request": { |
| "method": "GET", |
| "header": [ |
| { |
| "key": "Content-Type", |
| "value": "application/json" |
| } |
| ], |
| "body": { |
| "mode": "raw", |
| "raw": "" |
| }, |
| "url": { |
| "raw": "{{baseUrl}}/{{membrane_tenant}}/{{membrane_data_source}}/q?sql=SELECT * FROM {{membrane_table}}", |
| "host": [ |
| "{{baseUrl}}" |
| ], |
| "path": [ |
| "{{membrane_tenant}}", |
| "{{membrane_data_source}}", |
| "q" |
| ], |
| "query": [ |
| { |
| "key": "sql", |
| "value": "SELECT * FROM {{membrane_table}}" |
| } |
| ] |
| } |
| }, |
| "response": [] |
| }, |
| { |
| "name": "Get column info", |
| "event": [ |
| { |
| "listen": "test", |
| "script": { |
| "type": "text/javascript", |
| "exec": [ |
| "tests[\"Status code is 200\"] = responseCode.code === 200;", |
| "", |
| "var jsonData = JSON.parse(responseBody);", |
| "tests[\"type is column\"] = jsonData.type === \"column\";", |
| "" |
| ] |
| } |
| } |
| ], |
| "request": { |
| "method": "GET", |
| "header": [ |
| { |
| "key": "Content-Type", |
| "value": "application/json" |
| } |
| ], |
| "body": { |
| "mode": "raw", |
| "raw": "" |
| }, |
| "url": { |
| "raw": "{{baseUrl}}/{{membrane_tenant}}/{{membrane_data_source}}/s/{{membrane_schema}}/t/{{membrane_table}}/c/{{membrane_column}}", |
| "host": [ |
| "{{baseUrl}}" |
| ], |
| "path": [ |
| "{{membrane_tenant}}", |
| "{{membrane_data_source}}", |
| "s", |
| "{{membrane_schema}}", |
| "t", |
| "{{membrane_table}}", |
| "c", |
| "{{membrane_column}}" |
| ] |
| } |
| }, |
| "response": [] |
| }, |
| { |
| "name": "Create data source - federated", |
| "event": [ |
| { |
| "listen": "test", |
| "script": { |
| "id": "9d1f41d7-12f9-44b0-8730-6e869b22e7d2", |
| "exec": [ |
| "tests[\"Status code is 200\"] = responseCode.code === 200;", |
| "", |
| "var jsonData = JSON.parse(responseBody);", |
| "tests[\"type is datasource\"] = jsonData.type === \"datasource\";", |
| "tests[\"is NOT updateable\"] = !jsonData.updateable;", |
| "", |
| "tests[\"has > 3 schemas\"] = jsonData.schemas.length > 3;" |
| ], |
| "type": "text/javascript" |
| } |
| } |
| ], |
| "request": { |
| "method": "PUT", |
| "header": [ |
| { |
| "key": "Content-Type", |
| "value": "application/json" |
| } |
| ], |
| "body": { |
| "mode": "raw", |
| "raw": "{\n \"type\": \"federated\",\n \"datasources\": [\n \"example-pojo\",\n \"example-couchdb\",\n \"example-postgres\"\n ]\n}" |
| }, |
| "url": { |
| "raw": "{{baseUrl}}/{{membrane_tenant}}/example-federated", |
| "host": [ |
| "{{baseUrl}}" |
| ], |
| "path": [ |
| "{{membrane_tenant}}", |
| "example-federated" |
| ] |
| } |
| }, |
| "response": [] |
| }, |
| { |
| "name": "Query federated datasource", |
| "event": [ |
| { |
| "listen": "test", |
| "script": { |
| "id": "689cf505-4bca-49b1-95a6-a861b026e31b", |
| "exec": [ |
| "tests[\"Status code is 200\"] = responseCode.code === 200;", |
| "", |
| "var jsonData = JSON.parse(responseBody);", |
| "tests[\"type is dataset\"] = jsonData.type === \"dataset\";", |
| "" |
| ], |
| "type": "text/javascript" |
| } |
| } |
| ], |
| "request": { |
| "method": "GET", |
| "header": [ |
| { |
| "key": "Content-Type", |
| "value": "application/json" |
| } |
| ], |
| "body": { |
| "mode": "raw", |
| "raw": "" |
| }, |
| "url": { |
| "raw": "{{baseUrl}}/{{membrane_tenant}}/example-federated/q?sql=SELECT * FROM {{membrane_schema}}.{{membrane_table}}", |
| "host": [ |
| "{{baseUrl}}" |
| ], |
| "path": [ |
| "{{membrane_tenant}}", |
| "example-federated", |
| "q" |
| ], |
| "query": [ |
| { |
| "key": "sql", |
| "value": "SELECT * FROM {{membrane_schema}}.{{membrane_table}}" |
| } |
| ] |
| } |
| }, |
| "response": [] |
| }, |
| { |
| "name": "Delete data source", |
| "event": [ |
| { |
| "listen": "test", |
| "script": { |
| "type": "text/javascript", |
| "exec": [ |
| "tests[\"Status code is 200\"] = responseCode.code === 200;", |
| "", |
| "var jsonData = JSON.parse(responseBody);", |
| "tests[\"type is datasource\"] = jsonData.type === \"datasource\";", |
| "tests[\"deleted is true\"] = jsonData.deleted;", |
| "" |
| ] |
| } |
| } |
| ], |
| "request": { |
| "method": "DELETE", |
| "header": [], |
| "body": { |
| "mode": "raw", |
| "raw": "" |
| }, |
| "url": { |
| "raw": "{{baseUrl}}/{{membrane_tenant}}/{{membrane_data_source}}", |
| "host": [ |
| "{{baseUrl}}" |
| ], |
| "path": [ |
| "{{membrane_tenant}}", |
| "{{membrane_data_source}}" |
| ] |
| } |
| }, |
| "response": [] |
| }, |
| { |
| "name": "Delete tenant", |
| "event": [ |
| { |
| "listen": "test", |
| "script": { |
| "type": "text/javascript", |
| "exec": [ |
| "tests[\"Status code is 200\"] = responseCode.code === 200;", |
| "", |
| "var jsonData = JSON.parse(responseBody);", |
| "tests[\"type is tenant\"] = jsonData.type === \"tenant\";", |
| "tests[\"deleted is true\"] = jsonData.deleted;", |
| "" |
| ] |
| } |
| } |
| ], |
| "request": { |
| "method": "DELETE", |
| "header": [], |
| "body": { |
| "mode": "raw", |
| "raw": "" |
| }, |
| "url": { |
| "raw": "{{baseUrl}}/{{membrane_tenant}}", |
| "host": [ |
| "{{baseUrl}}" |
| ], |
| "path": [ |
| "{{membrane_tenant}}" |
| ] |
| } |
| }, |
| "response": [] |
| } |
| ] |
| } |