|
@@ -5,7 +5,7 @@ draft: false
|
|
|
weight: 1
|
|
weight: 1
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-Interact with the API server (e.g. submit a SQL query, list some S3 files in a bucket, search for a table...) with via a REST API.
|
|
|
|
|
|
|
+Interact with the API server (e.g. submit a SQL query, list some S3 files in a bucket, search for a table...) via a REST API.
|
|
|
|
|
|
|
|
Users authenticate with the same credentials as they would do in the Browser login page.
|
|
Users authenticate with the same credentials as they would do in the Browser login page.
|
|
|
|
|
|
|
@@ -38,7 +38,7 @@ Authenticating and getting a [JWT token](https://jwt.io/):
|
|
|
|
|
|
|
|
Re-using the token when making actual calls:
|
|
Re-using the token when making actual calls:
|
|
|
|
|
|
|
|
- url -X POST https://demo.gethue.com/api/v1/create_notebook -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjIxNjM5NjMxLCJqdGkiOiI0NTY3NTA4MzM5YjY0MjFmYTMzZDJjMzViZWUyMDAyMCIsInVzZXJfaWQiOjF9.qrMNrr69eo38dOsV2aYp8k6WqBeyJZkbSuavxA_o_kM"
|
|
|
|
|
|
|
+ curl -X POST https://demo.gethue.com/api/query/create_notebook -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjIxNjM5NjMxLCJqdGkiOiI0NTY3NTA4MzM5YjY0MjFmYTMzZDJjMzViZWUyMDAyMCIsInVzZXJfaWQiOjF9.qrMNrr69eo38dOsV2aYp8k6WqBeyJZkbSuavxA_o_kM"
|
|
|
|
|
|
|
|
{"status": 0, "notebook": {"name": "My Notebook", "uuid": "1e23314f-b01e-4c18-872f-dc143475f063", "description": "", "type": "notebook", "isSaved": false, "isManaged": false, "skipHistorify": false, "sessions": [], "snippets": [], "directoryUuid": null}}
|
|
{"status": 0, "notebook": {"name": "My Notebook", "uuid": "1e23314f-b01e-4c18-872f-dc143475f063", "description": "", "type": "notebook", "isSaved": false, "isManaged": false, "skipHistorify": false, "sessions": [], "snippets": [], "directoryUuid": null}}
|
|
|
|
|
|
|
@@ -72,7 +72,7 @@ And then:
|
|
|
'Authorization': 'Bearer %s' % token,
|
|
'Authorization': 'Bearer %s' % token,
|
|
|
"Content-Type": "application/x-www-form-urlencoded"
|
|
"Content-Type": "application/x-www-form-urlencoded"
|
|
|
},
|
|
},
|
|
|
- data={'snippet': json.dumps({"type":"mysql"})}
|
|
|
|
|
|
|
+ data={'snippet': json.dumps({"type":"1"})}
|
|
|
)
|
|
)
|
|
|
print(response.status_code)
|
|
print(response.status_code)
|
|
|
print(response.text)
|
|
print(response.text)
|
|
@@ -113,11 +113,11 @@ Then a JWT token is returned and needs to be passed as a bearer in the headers f
|
|
|
|
|
|
|
|
**Wrong credentials**: there is currently no error on bad authentication but instead a 302 redirect to the login page, e.g.:
|
|
**Wrong credentials**: there is currently no error on bad authentication but instead a 302 redirect to the login page, e.g.:
|
|
|
|
|
|
|
|
- curl -X POST https://demo.gethue.com/notebook/execute/v1/create_notebook -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjIxNjM5NjMxLCJqdGkiOiI0NTY3NTA4MzM5YjY0MjFmYTMzZDJjMzViZWUyMDAyMCIsInVzZXJfaWQiOjF9.qrMNrr69eo38dOsV2aYp8k6WqBeyJZkbSuavxA_o_kM"
|
|
|
|
|
|
|
+ curl -X POST https://demo.gethue.com/api/editor/create_notebook -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjIxNjM5NjMxLCJqdGkiOiI0NTY3NTA4MzM5YjY0MjFmYTMzZDJjMzViZWUyMDAyMCIsInVzZXJfaWQiOjF9.qrMNrr69eo38dOsV2aYp8k6WqBeyJZkbSuavxA_o_kM"
|
|
|
|
|
|
|
|
- [21/May/2021 16:26:46 -0700] middleware INFO Redirecting to login page: /notebook/execute/v1/create_notebook
|
|
|
|
|
- [21/May/2021 16:26:46 -0700] access INFO 127.0.0.1 -anon- - "POST /notebook/execute/v1/create_notebook HTTP/1.1" - (mem: 172mb)-- login redirection
|
|
|
|
|
- [21/May/2021 16:26:46 -0700] access INFO 127.0.0.1 -anon- - "POST /notebook/execute/v1/create_notebook HTTP/1.1" returned in 4ms 302 0
|
|
|
|
|
|
|
+ [21/May/2021 16:26:46 -0700] middleware INFO Redirecting to login page: /api/editor/create_notebook
|
|
|
|
|
+ [21/May/2021 16:26:46 -0700] access INFO 127.0.0.1 -anon- - "POST /api/editor/create_notebook HTTP/1.1" - (mem: 172mb)-- login redirection
|
|
|
|
|
+ [21/May/2021 16:26:46 -0700] access INFO 127.0.0.1 -anon- - "POST /api/editor/create_notebook HTTP/1.1" returned in 4ms 302 0
|
|
|
|
|
|
|
|
### Authenticate
|
|
### Authenticate
|
|
|
|
|
|
|
@@ -127,9 +127,9 @@ Provide login credentials and get a [JWT token](https://jwt.io/):
|
|
|
|
|
|
|
|
{"refresh":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTYyMTcyNDYzMSwianRpIjoiOGM0NDRjYzRhN2VhNGMxZDliMGZhNmU1YzUyMjM1MjkiLCJ1c2VyX2lkIjoxfQ.t6t7_eYrNhpGN3-Jz5MDLXM8JtGP7V9Y9lacOTInqqQ","access":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjIxNjM4NTMxLCJqdGkiOiJhZjgwN2E0ZjBmZDI0ZWMxYWQ2NTUzZjEyMjIyYzU4YyIsInVzZXJfaWQiOjF9.dQ1P3hbzSytp9-o8bWlcOcwrdwRVy95M2Eolph92QMA"}
|
|
{"refresh":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTYyMTcyNDYzMSwianRpIjoiOGM0NDRjYzRhN2VhNGMxZDliMGZhNmU1YzUyMjM1MjkiLCJ1c2VyX2lkIjoxfQ.t6t7_eYrNhpGN3-Jz5MDLXM8JtGP7V9Y9lacOTInqqQ","access":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjIxNjM4NTMxLCJqdGkiOiJhZjgwN2E0ZjBmZDI0ZWMxYWQ2NTUzZjEyMjIyYzU4YyIsInVzZXJfaWQiOjF9.dQ1P3hbzSytp9-o8bWlcOcwrdwRVy95M2Eolph92QMA"}
|
|
|
|
|
|
|
|
-And keep the `access` tokent as the value of the bearer.
|
|
|
|
|
|
|
+And keep the `access` token as the value of the bearer.
|
|
|
|
|
|
|
|
-### Check token
|
|
|
|
|
|
|
+### Validate token
|
|
|
|
|
|
|
|
The validity (i.e. did it expire?) of an `access` token can be verified:
|
|
The validity (i.e. did it expire?) of an `access` token can be verified:
|
|
|
|
|
|
|
@@ -174,7 +174,7 @@ And now ask for the resultset of the statement:
|
|
|
|
|
|
|
|
And if we wanted to get the execution log for this statement:
|
|
And if we wanted to get the execution log for this statement:
|
|
|
|
|
|
|
|
- curl -X POST https://demo.gethue.com/notebook/api/get_logs --data 'operationId=63ce87ba-ca0f-4653-8aeb-e9f5c1781b78'
|
|
|
|
|
|
|
+ curl -X POST https://demo.gethue.com/api/editor/get_logs --data 'operationId=63ce87ba-ca0f-4653-8aeb-e9f5c1781b78'
|
|
|
|
|
|
|
|
{"status": 0, "progress": 5, "jobs": [], "logs": "", "isFullLogs": false}
|
|
{"status": 0, "progress": 5, "jobs": [], "logs": "", "isFullLogs": false}
|
|
|
|
|
|
|
@@ -226,53 +226,39 @@ Same but in Python:
|
|
|
|
|
|
|
|
### Listing Databases
|
|
### Listing Databases
|
|
|
|
|
|
|
|
- $.post("/notebook/api/autocomplete/", {
|
|
|
|
|
- "snippet": ko.mapping.toJSON({
|
|
|
|
|
- type: "hive"
|
|
|
|
|
- })
|
|
|
|
|
- }, function(data) {
|
|
|
|
|
- console.log(ko.mapping.toJSON(data));
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ curl -X POST 'https://demo.gethue.com/api/editor/autocomplete/' -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjI1NzM2NTA0LCJqdGkiOiJkZDVlYTg5ZTMwMDE0MjRiOGRlYWM4N2RjODFhYjgzZSIsInVzZXJfaWQiOjExMDA3MTR9.8I9BeXQXBWFMGf7J4ss7yhcmAZfcFC6sMRE9RLeOwTM' -H 'Content-Type: application/x-www-form-urlencoded' -d ''
|
|
|
|
|
|
|
|
-### Listing Tables
|
|
|
|
|
|
|
+### Database details and Tables
|
|
|
|
|
|
|
|
- $.post("/notebook/api/autocomplete/<DB>", {
|
|
|
|
|
- "snippet": ko.mapping.toJSON({
|
|
|
|
|
- type: "hive"
|
|
|
|
|
- })
|
|
|
|
|
- }, function(data) {
|
|
|
|
|
- console.log(ko.mapping.toJSON(data));
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ curl -X POST 'https://demo.gethue.com/api/editor/autocomplete/<DB>/' -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjI1NzM2NTA0LCJqdGkiOiJkZDVlYTg5ZTMwMDE0MjRiOGRlYWM4N2RjODFhYjgzZSIsInVzZXJfaWQiOjExMDA3MTR9.8I9BeXQXBWFMGf7J4ss7yhcmAZfcFC6sMRE9RLeOwTM' -H 'Content-Type: application/x-www-form-urlencoded' -d ''
|
|
|
|
|
+
|
|
|
|
|
+Describe database API:
|
|
|
|
|
+
|
|
|
|
|
+ curl -X POST 'https://demo.gethue.com/api/editor/describe/<DB>/' -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjI1NzM2NTA0LCJqdGkiOiJkZDVlYTg5ZTMwMDE0MjRiOGRlYWM4N2RjODFhYjgzZSIsInVzZXJfaWQiOjExMDA3MTR9.8I9BeXQXBWFMGf7J4ss7yhcmAZfcFC6sMRE9RLeOwTM' -H 'Content-Type: application/x-www-form-urlencoded' -d 'source_type=mysql'
|
|
|
|
|
+
|
|
|
|
|
+- **source_type:** select the configured databases (e.g. `hive`) or connector ID (e.g. `1`)
|
|
|
|
|
|
|
|
### Table details and Columns
|
|
### Table details and Columns
|
|
|
|
|
|
|
|
- $.post("/notebook/api/autocomplete/<DB>/<TABLE>", {
|
|
|
|
|
- "snippet": ko.mapping.toJSON({
|
|
|
|
|
- type: "hive"
|
|
|
|
|
- })
|
|
|
|
|
- }, function(data) {
|
|
|
|
|
- console.log(ko.mapping.toJSON(data));
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ curl -X POST 'https://demo.gethue.com/api/editor/autocomplete/<DB>/<TABLE>/' -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjI1NzM2NTA0LCJqdGkiOiJkZDVlYTg5ZTMwMDE0MjRiOGRlYWM4N2RjODFhYjgzZSIsInVzZXJfaWQiOjExMDA3MTR9.8I9BeXQXBWFMGf7J4ss7yhcmAZfcFC6sMRE9RLeOwTM' -H 'Content-Type: application/x-www-form-urlencoded' -d ''
|
|
|
|
|
+
|
|
|
|
|
+Describe table API:
|
|
|
|
|
+
|
|
|
|
|
+ curl -X POST 'https://demo.gethue.com/api/editor/describe/<DB>/<TABLE>/' -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjI1NzM2NTA0LCJqdGkiOiJkZDVlYTg5ZTMwMDE0MjRiOGRlYWM4N2RjODFhYjgzZSIsInVzZXJfaWQiOjExMDA3MTR9.8I9BeXQXBWFMGf7J4ss7yhcmAZfcFC6sMRE9RLeOwTM' -H 'Content-Type: application/x-www-form-urlencoded' -d 'source_type=1'
|
|
|
|
|
+
|
|
|
|
|
+- **source_type:** select the configured databases (e.g. `hive`) or connector ID (e.g. `1`)
|
|
|
|
|
+
|
|
|
|
|
+Sample table data API:
|
|
|
|
|
+
|
|
|
|
|
+ curl -X POST 'https://demo.gethue.com/api/editor/sample/<DB>/<TABLE>/' -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjI1ODE1MzU5LCJqdGkiOiIzODM0M2Q3YjRjNGY0NTUxYWJmYmQyZmI4YjUzYjFjZiIsInVzZXJfaWQiOjExMDA3MTR9.fl0h7VooLtWnu9v7FtdLUy3NukwFtUya-LkTzollTig' -H 'Content-Type: application/x-www-form-urlencoded' -d ''
|
|
|
|
|
|
|
|
### Column details
|
|
### Column details
|
|
|
|
|
|
|
|
- $.post("/notebook/api/autocomplete/<DB>/<TABLE>/<COL1>", {
|
|
|
|
|
- "snippet": ko.mapping.toJSON({
|
|
|
|
|
- type: "hive"
|
|
|
|
|
- })
|
|
|
|
|
- }, function(data) {
|
|
|
|
|
- console.log(ko.mapping.toJSON(data));
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ curl -X POST 'https://demo.gethue.com/api/editor/autocomplete/<DB>/<TABLE>/<COL1>/' -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjI1NzM2NTA0LCJqdGkiOiJkZDVlYTg5ZTMwMDE0MjRiOGRlYWM4N2RjODFhYjgzZSIsInVzZXJfaWQiOjExMDA3MTR9.8I9BeXQXBWFMGf7J4ss7yhcmAZfcFC6sMRE9RLeOwTM' -H 'Content-Type: application/x-www-form-urlencoded' -d ''
|
|
|
|
|
|
|
|
-For nested columns:
|
|
|
|
|
|
|
+Sample column data API:
|
|
|
|
|
|
|
|
- $.post("/notebook/api/autocomplete/<DB>/<TABLE>/<COL1>/<COL2>", {
|
|
|
|
|
- "snippet": ko.mapping.toJSON({
|
|
|
|
|
- type: "hive"
|
|
|
|
|
- })
|
|
|
|
|
- }, function(data) {
|
|
|
|
|
- console.log(ko.mapping.toJSON(data));
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ curl -X POST 'https://demo.gethue.com/api/editor/sample/<DB>/<TABLE>/<COL1>/' -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjI1ODE1MzU5LCJqdGkiOiIzODM0M2Q3YjRjNGY0NTUxYWJmYmQyZmI4YjUzYjFjZiIsInVzZXJfaWQiOjExMDA3MTR9.fl0h7VooLtWnu9v7FtdLUy3NukwFtUya-LkTzollTig' -H 'Content-Type: application/x-www-form-urlencoded' -d ''
|
|
|
|
|
|
|
|
### Listing Functions
|
|
### Listing Functions
|
|
|
|
|
|