mirror of
https://github.com/apache/zeppelin
synced 2026-05-24 09:38:26 +00:00
### What is this PR for? To introduce 'Configuration' page to Zeppelin GUI. Also introduce REST API / WebSocket operation. ### What type of PR is it? Feature ### Todos ### Is there a relevant Jira issue? https://issues.apache.org/jira/browse/ZEPPELIN-612 ### How should this be tested? - apply this PR - build and start Zeppelin - open UI and confirm Configuration tab is shown - open Configuration page and confirm every configurations (properties) except password are shown ### Screenshots (if appropriate)  ### Questions: * Does the licenses files need update? No * Is there breaking changes for older versions? No * Does this needs documentation? Yes, I've address it regarding REST API. Author: Jungtaek Lim <kabhwan@gmail.com> Closes #645 from HeartSaVioR/ZEPPELIN-612 and squashes the following commits:8f584b8[Jungtaek Lim] ZEPPELIN-612 addressed @felixcheung's review14e8e7b[Jungtaek Lim] ZEPPELIN-612 replace ellipsis with scroll bar051c8c5[Jungtaek Lim] ZEPPELIN-612 cut too long value with ellipsisaa61bb3[Jungtaek Lim] ZEPPELIN-612 add missing license header2a24c5c[Jungtaek Lim] ZEPPELIN-612 remove unused file23fe68f[Jungtaek Lim] ZEPPELIN-612 Add 'Configuration' doc page to navigationc341f82[Jungtaek Lim] ZEPPELIN-612 Add 'Configuration' page400de02[Jungtaek Lim] ZEPPELIN-612 Introduce APIs which shows list of configurations via WebSocket / REST API
21 KiB
21 KiB
| layout | title | description | group |
|---|---|---|---|
| page | Notebook REST API | rest-api |
{% include JB/setup %}
Zeppelin REST API
Zeppelin provides several REST APIs for interaction and remote activation of zeppelin functionality.
All REST APIs are available starting with the following endpoint http://[zeppelin-server]:[zeppelin-port]/api
Note that zeppelin REST APIs receive or return JSON objects, it is recommended for you to install some JSON viewers such as JSONView
If you work with zeppelin and find a need for an additional REST API please file an issue or send us mail
### Notebook REST API list
Notebooks REST API supports the following operations: List, Create, Get, Delete, Clone, Run, Export, Import as detailed in the following table
| List notebooks | |
|---|---|
| Description | This ```GET``` method lists the available notebooks on your server. Notebook JSON contains the ```name``` and ```id``` of all notebooks. |
| URL | ```http://[zeppelin-server]:[zeppelin-port]/api/notebook``` |
| Success code | 200 |
| Fail code | 500 |
| sample JSON response | {"status":"OK","message":"","body":[{"name":"Homepage","id":"2AV4WUEMK"},{"name":"Zeppelin Tutorial","id":"2A94M5J1Z"}]} |
| Create notebook | |
|---|---|
| Description | This ```POST``` method creates a new notebook using the given name or default name if none given. The body field of the returned JSON contains the new notebook id. |
| URL | ```http://[zeppelin-server]:[zeppelin-port]/api/notebook``` |
| Success code | 201 |
| Fail code | 500 |
| sample JSON input (without paragraphs) | { "name": "name of new notebook" } |
| sample JSON input (with initial paragraphs) | {
"name": "name of new notebook",
"paragraphs": [
{
"title": "paragraph title1",
"text": "paragraph text1"
},
{
"title": "paragraph title2",
"text": "paragraph text2"
}
]
}
|
| sample JSON response | {"status": "CREATED","message": "","body": "2AZPHY918"} |
| Get notebook | |
|---|---|
| Description | This ```GET``` method retrieves an existing notebook's information using the given id. The body field of the returned JSON contain information about paragraphs in the notebook. |
| URL | ```http://[zeppelin-server]:[zeppelin-port]/api/notebook/[notebookId]``` |
| Success code | 200 |
| Fail code | 500 |
| sample JSON response | {
"status": "OK",
"message": "",
"body": {
"paragraphs": [
{
"text": "%sql \nselect age, count(1) value\nfrom bank \nwhere age < 30 \ngroup by age \norder by age",
"config": {
"colWidth": 4,
"graph": {
"mode": "multiBarChart",
"height": 300,
"optionOpen": false,
"keys": [
{
"name": "age",
"index": 0,
"aggr": "sum"
}
],
"values": [
{
"name": "value",
"index": 1,
"aggr": "sum"
}
],
"groups": [],
"scatter": {
"xAxis": {
"name": "age",
"index": 0,
"aggr": "sum"
},
"yAxis": {
"name": "value",
"index": 1,
"aggr": "sum"
}
}
}
},
"settings": {
"params": {},
"forms": {}
},
"jobName": "paragraph_1423500782552_-1439281894",
"id": "20150210-015302_1492795503",
"result": {
"code": "SUCCESS",
"type": "TABLE",
"msg": "age\tvalue\n19\t4\n20\t3\n21\t7\n22\t9\n23\t20\n24\t24\n25\t44\n26\t77\n27\t94\n28\t103\n29\t97\n"
},
"dateCreated": "Feb 10, 2015 1:53:02 AM",
"dateStarted": "Jul 3, 2015 1:43:17 PM",
"dateFinished": "Jul 3, 2015 1:43:23 PM",
"status": "FINISHED",
"progressUpdateIntervalMs": 500
}
],
"name": "Zeppelin Tutorial",
"id": "2A94M5J1Z",
"angularObjects": {},
"config": {
"looknfeel": "default"
},
"info": {}
}
}
|
| Delete notebook | |
|---|---|
| Description | This ```DELETE``` method deletes a notebook by the given notebook id. |
| URL | ```http://[zeppelin-server]:[zeppelin-port]/api/notebook/[notebookId]``` |
| Success code | 200 |
| Fail code | 500 |
| sample JSON response | {"status":"OK","message":""} |
| Clone notebook | |
|---|---|
| Description | This ```POST``` method clones a notebook by the given id and create a new notebook using the given name or default name if none given. The body field of the returned JSON contains the new notebook id. |
| URL | ```http://[zeppelin-server]:[zeppelin-port]/api/notebook/[notebookId]``` |
| Success code | 201 |
| Fail code | 500 |
| sample JSON input | {"name": "name of new notebook"} |
| sample JSON response | {"status": "CREATED","message": "","body": "2AZPHY918"} |
| Run notebook job | |
|---|---|
| Description | This ```POST``` method runs all paragraph in the given notebook id. |
| URL | ```http://[zeppelin-server]:[zeppelin-port]/api/notebook/job/[notebookId]``` |
| Success code | 200 |
| Fail code | 500 |
| sample JSON response | {"status":"OK"} |
| Stop notebook job | |
|---|---|
| Description | This ```DELETE``` method stops all paragraph in the given notebook id. |
| URL | ```http://[zeppelin-server]:[zeppelin-port]/api/notebook/job/[notebookId]``` |
| Success code | 200 |
| Fail code | 500 |
| sample JSON response | {"status":"OK"} |
| Get notebook job | |
|---|---|
| Description | This ```GET``` method gets all paragraph status by the given notebook id. The body field of the returned JSON contains of the array that compose of the paragraph id, paragraph status, paragraph finish date, paragraph started date. |
| URL | ```http://[zeppelin-server]:[zeppelin-port]/api/notebook/job/[notebookId]``` |
| Success code | 200 |
| Fail code | 500 |
| sample JSON response | {"status":"OK","body":[{"id":"20151121-212654_766735423","status":"FINISHED","finished":"Tue Nov 24 14:21:40 KST 2015","started":"Tue Nov 24 14:21:39 KST 2015"},{"progress":"1","id":"20151121-212657_730976687","status":"RUNNING","finished":"Tue Nov 24 14:21:35 KST 2015","started":"Tue Nov 24 14:21:40 KST 2015"}]} |
| Run paragraph job | |
|---|---|
| Description | This ```POST``` method runs the paragraph by given notebook and paragraph id. |
| URL | ```http://[zeppelin-server]:[zeppelin-port]/api/notebook/job/[notebookId]/[paragraphId]``` |
| Success code | 200 |
| Fail code | 500 |
| sample JSON input (optional, only needed when if you want to update dynamic form's value) | {
"name": "name of new notebook",
"params": {
"formLabel1": "value1",
"formLabel2": "value2"
}
}
|
| sample JSON response | {"status":"OK"} |
| Stop paragraph job | |
|---|---|
| Description | This ```DELETE``` method stops the paragraph by given notebook and paragraph id. |
| URL | ```http://[zeppelin-server]:[zeppelin-port]/api/notebook/job/[notebookId]/[paragraphId]``` |
| Success code | 200 |
| Fail code | 500 |
| sample JSON response | {"status":"OK"} |
| Add cron job | |
|---|---|
| Description | This ```POST``` method adds cron job by the given notebook id. |
| URL | ```http://[zeppelin-server]:[zeppelin-port]/api/notebook/cron/[notebookId]``` |
| Success code | 200 |
| Fail code | 500 |
| sample JSON input | {"cron": "cron expression of notebook"} |
| sample JSON response | {"status":"OK"} |
| Remove cron job | |
|---|---|
| Description | This ```DELETE``` method removes cron job by the given notebook id. |
| URL | ```http://[zeppelin-server]:[zeppelin-port]/api/notebook/cron/[notebookId]``` |
| Success code | 200 |
| Fail code | 500 |
| sample JSON response | {"status":"OK"} |
| Get cron job | |
|---|---|
| Description | This ```GET``` method gets cron job expression of given notebook id. The body field of the returned JSON contains the cron expression. |
| URL | ```http://[zeppelin-server]:[zeppelin-port]/api/notebook/cron/[notebookId]``` |
| Success code | 200 |
| Fail code | 500 |
| sample JSON response | {"status":"OK","body":"* * * * * ?"} |
| Full-text search through the paragraphs in all notebooks | |
|---|---|
| Description | ```GET``` request will return list of matching paragraphs |
| URL | ```http://[zeppelin-server]:[zeppelin-port]/api/notebook/search?q=[query]``` |
| Success code | 200 |
| Fail code | 500 |
| Sample JSON response | {"status":"OK", body: [{"id":"/paragraph/", "name":"Notebook Name", "snippet":"", "text":""}]} |
| Create paragraph | |
|---|---|
| Description | This ```POST``` method create a new paragraph using JSON payload. The body field of the returned JSON contain the new paragraph id. |
| URL | ```http://[zeppelin-server]:[zeppelin-port]/api/notebook/[notebookId]/paragraph``` |
| Success code | 201 |
| Fail code | 500 |
| sample JSON input (add to the last) | {
"title": "Paragraph insert revised",
"text": "%spark\nprintln(\"Paragraph insert revised\")"
} |
| sample JSON input (add to specific index) | {
"title": "Paragraph insert revised",
"text": "%spark\nprintln(\"Paragraph insert revised\")",
"index": 0
}
|
| sample JSON response | {"status": "CREATED","message": "","body": "20151218-100330_1754029574"} |
| Get paragraph | |
|---|---|
| Description | This ```GET``` method retrieves an existing paragraph's information using the given id. The body field of the returned JSON contain information about paragraph. |
| URL | ```http://[zeppelin-server]:[zeppelin-port]/api/notebook/[notebookId]/paragraph/[paragraphId]``` |
| Success code | 200 |
| Fail code | 500 |
| sample JSON response | {
"status": "OK",
"message": "",
"body": {
"title": "Paragraph2",
"text": "%spark\n\nprintln(\"it's paragraph2\")",
"dateUpdated": "Dec 18, 2015 7:33:54 AM",
"config": {
"colWidth": 12,
"graph": {
"mode": "table",
"height": 300,
"optionOpen": false,
"keys": [],
"values": [],
"groups": [],
"scatter": {}
},
"enabled": true,
"title": true,
"editorMode": "ace/mode/scala"
},
"settings": {
"params": {},
"forms": {}
},
"jobName": "paragraph_1450391574392_-1890856722",
"id": "20151218-073254_1105602047",
"result": {
"code": "SUCCESS",
"type": "TEXT",
"msg": "it's paragraph2\n"
},
"dateCreated": "Dec 18, 2015 7:32:54 AM",
"dateStarted": "Dec 18, 2015 7:33:55 AM",
"dateFinished": "Dec 18, 2015 7:33:55 AM",
"status": "FINISHED",
"progressUpdateIntervalMs": 500
}
}
|
| Move paragraph | |
|---|---|
| Description | This ```POST``` method moves a paragraph to the specific index (order) from the notebook. |
| URL | ```http://[zeppelin-server]:[zeppelin-port]/api/notebook/[notebookId]/paragraph/[paragraphId]/move/[newIndex]``` |
| Success code | 200 |
| Fail code | 500 |
| sample JSON response | {"status":"OK","message":""} |
| Delete paragraph | |
|---|---|
| Description | This ```DELETE``` method deletes a paragraph by the given notebook and paragraph id. |
| URL | ```http://[zeppelin-server]:[zeppelin-port]/api/notebook/[notebookId]/paragraph/[paragraphId]``` |
| Success code | 200 |
| Fail code | 500 |
| sample JSON response | {"status":"OK","message":""} |
| Export notebook | |
|---|---|
| Description | This ```GET``` method exports a notebook by the given id and gernerates a JSON |
| URL | ```http://[zeppelin-server]:[zeppelin-port]/api/notebook/export/[notebookId]``` |
| Success code | 201 |
| Fail code | 500 |
| sample JSON response | {
"paragraphs": [
{
"text": "%md This is my new paragraph in my new note",
"dateUpdated": "Jan 8, 2016 4:49:38 PM",
"config": {
"enabled": true
},
"settings": {
"params": {},
"forms": {}
},
"jobName": "paragraph_1452300578795_1196072540",
"id": "20160108-164938_1685162144",
"dateCreated": "Jan 8, 2016 4:49:38 PM",
"status": "READY",
"progressUpdateIntervalMs": 500
}
],
"name": "source note for export",
"id": "2B82H3RR1",
"angularObjects": {},
"config": {},
"info": {}
} |
| Export notebook | |
|---|---|
| Description | This ```POST``` method imports a notebook from the notebook JSON input |
| URL | ```http://[zeppelin-server]:[zeppelin-port]/api/notebook/import``` |
| Success code | 201 |
| Fail code | 500 |
| sample JSON input | {
"paragraphs": [
{
"text": "%md This is my new paragraph in my new note",
"dateUpdated": "Jan 8, 2016 4:49:38 PM",
"config": {
"enabled": true
},
"settings": {
"params": {},
"forms": {}
},
"jobName": "paragraph_1452300578795_1196072540",
"id": "20160108-164938_1685162144",
"dateCreated": "Jan 8, 2016 4:49:38 PM",
"status": "READY",
"progressUpdateIntervalMs": 500
}
],
"name": "source note for export",
"id": "2B82H3RR1",
"angularObjects": {},
"config": {},
"info": {}
} |
| sample JSON response | "status": "CREATED","message": "","body": "2AZPHY918"} |