--- layout: page title: "Apache Zeppelin Interpreter REST API" description: "This page contains Apache Zeppelin Interpreter REST API information." group: usage/rest_api --- {% include JB/setup %} # Apache Zeppelin Interpreter REST API
## Overview Apache 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 Apache Zeppelin REST APIs receive or return JSON objects, it is recommended for you to install some JSON viewers such as [JSONView](https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc). If you work with Apache Zeppelin and find a need for an additional REST API, please [file an issue or send us an email](http://zeppelin.apache.org/community.html). ## Interpreter REST API List The role of registered interpreters, settings and interpreters group are described in [here](../interpreter/overview.html). ### List of registered interpreters
Description This ```GET``` method returns all the registered interpreters available on the server.
URL ```http://[zeppelin-server]:[zeppelin-port]/api/interpreter```
Success code 200
Fail code 500
Sample JSON response
{
  "status": "OK",
  "message": "",
  "body": {
    "md.md": {
      "name": "md",
      "group": "md",
      "className": "org.apache.zeppelin.markdown.Markdown",
      "properties": {},
      "path": "/zeppelin/interpreter/md"
    },
    "spark.spark": {
      "name": "spark",
      "group": "spark",
      "className": "org.apache.zeppelin.spark.SparkInterpreter",
      "properties": {
        "spark.executor.memory": {
          "name": "spark.executor.memory",
          "defaultValue": "1g",
          "description": "Executor memory per worker instance. ex) 512m, 32g",
          "type": "string"
        },
        "spark.cores.max": {
          "defaultValue": "",
          "description": "Total number of cores to use. Empty value uses all available core.",
          "type": "number"
        },
      },
      "path": "/zeppelin/interpreter/spark"
    },
    "spark.sql": {
      "name": "sql",
      "group": "spark",
      "className": "org.apache.zeppelin.spark.SparkSqlInterpreter",
      "properties": {
        "zeppelin.spark.maxResult": {
          "name": "zeppelin.spark.maxResult",
          "defaultValue": "1000",
          "description": "Max number of Spark SQL result to display.",
          "type": "number"
        }
      },
      "path": "/zeppelin/interpreter/spark"
    }
  }
}
        

### List of registered interpreter settings
Description This ```GET``` method returns all the interpreters settings registered on the server.
URL ```http://[zeppelin-server]:[zeppelin-port]/api/interpreter/setting```
Success code 200
Fail code 500
Sample JSON response
{
  "status": "OK",
  "message": "",
  "body": [
    {
      "id": "2AYUGP2D5",
      "name": "md",
      "group": "md",
      "properties": {
        "_empty_": ""
      },
      "interpreterGroup": [
        {
          "class": "org.apache.zeppelin.markdown.Markdown",
          "name": "md"
        }
      ],
      "dependencies": []
    },  
    {
      "id": "2AY6GV7Q3",
      "name": "spark",
      "group": "spark",
      "properties": {
        "spark.cores.max": {
          "name": "",
          "value": "spark.cores.max",
          "type": "number"
        },
        "spark.executor.memory": {
          "name": "spark.executor.memory",
          "value": "1g",
          "type": "string"
        }
      },
      "interpreterGroup": [
        {
          "class": "org.apache.zeppelin.spark.SparkInterpreter",
          "name": "spark"
        },
        {
          "class": "org.apache.zeppelin.spark.SparkSqlInterpreter",
          "name": "sql"
        }
      ],
      "dependencies": [
        {
          "groupArtifactVersion": "com.databricks:spark-csv_2.10:1.3.0"
        }
      ]
    }
  ]
}
        

### Get a registered interpreter setting by the setting id
Description This ```GET``` method returns a registered interpreter setting on the server.
URL ```http://[zeppelin-server]:[zeppelin-port]/api/interpreter/setting/[setting ID]```
Success code 200
Fail code 400 if such interpreter setting id does not exist
500 for any other errors
Sample JSON response
{
  "status": "OK",
  "message": "",
  "body": {
    "id": "2AYW25ANY",
    "name": "Markdown setting name",
    "group": "md",
    "properties": {
      "propname": {
        "name": "propname",
        "value": "propvalue",
        "type": "textarea"
      }
    },
    "interpreterGroup": [
      {
        "class": "org.apache.zeppelin.markdown.Markdown",
        "name": "md"
      }
    ],
    "dependencies": [
      {
        "groupArtifactVersion": "groupId:artifactId:version",
        "exclusions": [
          "groupId:artifactId"
        ]
      }
    ]
  }
}
        

### Create a new interpreter setting
Description This ```POST``` method adds a new interpreter setting using a registered interpreter to the server.
URL ```http://[zeppelin-server]:[zeppelin-port]/api/interpreter/setting```
Success code 200
Fail code 400 if the input json is empty
500 for any other errors
Sample JSON input
{
  "name": "Markdown setting name",
  "group": "md",
  "properties": {
    "propname": {
      "name": "propname",
      "value": "propvalue",
      "type": "textarea"
  },
  "interpreterGroup": [
    {
      "class": "org.apache.zeppelin.markdown.Markdown",
      "name": "md"
    }
  ],
  "dependencies": [
    {
      "groupArtifactVersion": "groupId:artifactId:version",
      "exclusions": [
        "groupId:artifactId"
      ]
    }
  ]
}
        
Sample JSON response
{
  "status": "CREATED",
  "message": "",
  "body": {
    "id": "2AYW25ANY",
    "name": "Markdown setting name",
    "group": "md",
    "properties": {
      "propname": {
        "name": "propname",
        "value": "propvalue",
        "type": "textarea"
    },
    "interpreterGroup": [
      {
        "class": "org.apache.zeppelin.markdown.Markdown",
        "name": "md"
      }
    ],
    "dependencies": [
      {
        "groupArtifactVersion": "groupId:artifactId:version",
        "exclusions": [
          "groupId:artifactId"
        ]
      }
    ]
  }
}
        

### Update an interpreter setting
Description This ```PUT``` method updates an interpreter setting with new properties.
URL ```http://[zeppelin-server]:[zeppelin-port]/api/interpreter/setting/[interpreter ID]```
Success code 200
Fail code 500
Sample JSON input
{
  "name": "Markdown setting name",
  "group": "md",
  "properties": {
    "propname": {
      "name": "propname",
      "value": "Otherpropvalue",
      "type": "textarea"
  },
  "interpreterGroup": [
    {
      "class": "org.apache.zeppelin.markdown.Markdown",
      "name": "md"
    }
  ],
  "dependencies": [
    {
      "groupArtifactVersion": "groupId:artifactId:version",
      "exclusions": [
        "groupId:artifactId"
      ]
    }
  ]
}
        
Sample JSON response
{
  "status": "OK",
  "message": "",
  "body": {
    "id": "2AYW25ANY",
    "name": "Markdown setting name",
    "group": "md",
    "properties": {
      "propname": {
        "name": "propname",
        "value": "Otherpropvalue",
        "type": "textarea"
    },
    "interpreterGroup": [
      {
        "class": "org.apache.zeppelin.markdown.Markdown",
        "name": "md"
      }
    ],
    "dependencies": [
      {
        "groupArtifactVersion": "groupId:artifactId:version",
        "exclusions": [
          "groupId:artifactId"
        ]
      }
    ]
  }
}
        

### Delete an interpreter setting
Description This ```DELETE``` method deletes an given interpreter setting.
URL ```http://[zeppelin-server]:[zeppelin-port]/api/interpreter/setting/[interpreter ID]```
Success code 200
Fail code 500
Sample JSON response {"status":"OK"}

### Restart an interpreter
Description This ```PUT``` method restarts the given interpreter id.
URL ```http://[zeppelin-server]:[zeppelin-port]/api/interpreter/setting/restart/[interpreter ID]```
Success code 200
Fail code 500
Sample JSON input (Optional)
{
  "noteId": "2AVQJVC8N"
}
        
Sample JSON response {"status":"OK"}

### Add a new repository for dependency resolving
Description This ```POST``` method adds new repository.
URL ```http://[zeppelin-server]:[zeppelin-port]/api/interpreter/repository```
Success code 200
Fail code 500
Sample JSON input
{
  "id": "securecentral",
  "url": "https://repo1.maven.org/maven2",
  "snapshot": false
}
        
Sample JSON response {"status":"OK"}

### Delete a repository for dependency resolving
Description This ```DELETE``` method delete repository with given id.
URL ```http://[zeppelin-server]:[zeppelin-port]/api/interpreter/repository/[repository ID]```
Success code 200
Fail code 500

### Get available types for property
Description This ```GET``` method returns available types for interpreter property.
URL ```http://[zeppelin-server]:[zeppelin-port]/api/interpreter/property/types```
Success code 200
Fail code 500
Sample JSON response
{
  "status": "OK",
  "body": [ "textarea", "string", ...
  ]
}            
          

### Get interpreter settings metadata info
Description This ```GET``` method returns interpreter settings metadata info.
URL ```http://[zeppelin-server]:[zeppelin-port]/api/interpreter/metadata/[setting ID]```
Success code 200
Fail code 500