(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{144:function(n,e,t){"use strict";t.d(e,"a",(function(){return b})),t.d(e,"b",(function(){return d}));var a=t(0),r=t.n(a);function c(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function o(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(n);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,a)}return t}function p(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?o(Object(t),!0).forEach((function(e){c(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}function i(n,e){if(null==n)return{};var t,a,r=function(n,e){if(null==n)return{};var t,a,r={},c=Object.keys(n);for(a=0;a<c.length;a++)t=c[a],e.indexOf(t)>=0||(r[t]=n[t]);return r}(n,e);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(n);for(a=0;a<c.length;a++)t=c[a],e.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(n,t)&&(r[t]=n[t])}return r}var l=r.a.createContext({}),m=function(n){var e=r.a.useContext(l),t=e;return n&&(t="function"==typeof n?n(e):p(p({},e),n)),t},b=function(n){var e=m(n.components);return r.a.createElement(l.Provider,{value:e},n.children)},s={inlineCode:"code",wrapper:function(n){var e=n.children;return r.a.createElement(r.a.Fragment,{},e)}},u=r.a.forwardRef((function(n,e){var t=n.components,a=n.mdxType,c=n.originalType,o=n.parentName,l=i(n,["components","mdxType","originalType","parentName"]),b=m(t),u=a,d=b["".concat(o,".").concat(u)]||b[u]||s[u]||c;return t?r.a.createElement(d,p(p({ref:e},l),{},{components:t})):r.a.createElement(d,p({ref:e},l))}));function d(n,e){var t=arguments,a=e&&e.mdxType;if("string"==typeof n||a){var c=t.length,o=new Array(c);o[0]=u;var p={};for(var i in e)hasOwnProperty.call(e,i)&&(p[i]=e[i]);p.originalType=n,p.mdxType="string"==typeof n?n:a,o[1]=p;for(var l=2;l<c;l++)o[l]=t[l];return r.a.createElement.apply(null,o)}return r.a.createElement.apply(null,t)}u.displayName="MDXCreateElement"},80:function(n,e,t){"use strict";t.r(e),t.d(e,"frontMatter",(function(){return o})),t.d(e,"metadata",(function(){return p})),t.d(e,"toc",(function(){return i})),t.d(e,"default",(function(){return m}));var a=t(3),r=t(7),c=(t(0),t(144)),o={title:"Environment REST API"},p={unversionedId:"api/environment",id:"api/environment",isDocsHomePage:!1,title:"Environment REST API",description:"\x3c!--",source:"@site/docs/api/environment.md",slug:"/api/environment",permalink:"/docs/api/environment",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/api/environment.md",version:"current",sidebar:"api",next:{title:"Experiment REST API",permalink:"/docs/api/experiment"}},i=[{value:"Create Environment",id:"create-environment",children:[{value:"List environment",id:"list-environment",children:[]},{value:"Get environment",id:"get-environment",children:[]},{value:"Patch environment",id:"patch-environment",children:[]},{value:"Delete environment",id:"delete-environment",children:[]}]}],l={toc:i};function m(n){var e=n.components,t=Object(r.a)(n,["components"]);return Object(c.b)("wrapper",Object(a.a)({},l,t,{components:e,mdxType:"MDXLayout"}),Object(c.b)("blockquote",null,Object(c.b)("p",{parentName:"blockquote"},"Note: The Environment API is in the alpha stage which is subjected to incompatible changes in\nfuture releases.")),Object(c.b)("h2",{id:"create-environment"},"Create Environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"POST /api/v1/environment")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "name": "my-submarine-env",\n  "dockerImage" : "continuumio/anaconda3",\n  "kernelSpec" : {\n    "name" : "team_default_python_3.7",\n    "channels" : ["defaults"],\n    "condaDependencies" : \n      ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n      "alabaster=0.7.12=py37_0",\n      "anaconda=2020.02=py37_0",\n      "anaconda-client=1.7.2=py37_0",\n      "anaconda-navigator=1.9.12=py37_0"],\n    "pipDependencies" : \n      ["apache-submarine==0.5.0",\n      "pyarrow==0.17.0"]\n  }\n}\n\' http://127.0.0.1:32080/api/v1/environment\n')),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "result": {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0",\n          "anaconda=2020.02=py37_0",\n          "anaconda-client=1.7.2=py37_0",\n          "anaconda-navigator=1.9.12=py37_0"],\n        "pipDependencies" : \n          ["apache-submarine==0.5.0",\n          "pyarrow==0.17.0"]\n      }\n    }\n  }\n}\n')),Object(c.b)("h3",{id:"list-environment"},"List environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"GET /api/v1/environment")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/environment\n")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "result": [\n  {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0",\n          "anaconda=2020.02=py37_0",\n          "anaconda-client=1.7.2=py37_0",\n          "anaconda-navigator=1.9.12=py37_0"],\n        "pipDependencies" : \n          ["apache-submarine==0.5.0",\n          "pyarrow==0.17.0"]\n      }\n    }\n  },\n  {\n    "environmentId": "environment_1586156073228_0002",\n    "environmentSpec": {\n      "name": "my-submarine-env-2",\n      "dockerImage" : "continuumio/miniconda",\n      "kernelSpec" : {\n        "name" : "team_miniconda_python_3.7",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0"],\n        "pipDependencies" : \n          [],\n      }\n    }\n  }\n  ]\n}\n')),Object(c.b)("h3",{id:"get-environment"},"Get environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"GET /api/v1/environment/{name}")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "result": {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0",\n          "anaconda=2020.02=py37_0",\n          "anaconda-client=1.7.2=py37_0",\n          "anaconda-navigator=1.9.12=py37_0"],\n        "pipDependencies" : \n          ["apache-submarine==0.5.0",\n          "pyarrow==0.17.0"]\n      }\n    }\n  }\n}\n')),Object(c.b)("h3",{id:"patch-environment"},"Patch environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"PATCH /api/v1/environment/{name}")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},'curl -X PATCH -H "Content-Type: application/json" -d \'\n{\n  "name": "my-submarine-env",\n  "dockerImage" : "continuumio/anaconda3",\n  "kernelSpec" : {\n    "name" : "team_default_python_3.7_updated",\n    "channels" : ["defaults"],\n    "condaDependencies" : \n      ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n      "alabaster=0.7.12=py37_0"],\n    "pipDependencies" : \n      []\n  }\n}\n\' http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n')),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "success": true,\n  "result": {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7_updated",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0"],\n        "pipDependencies" :\n          []\n      }\n    }\n  }\n}\n')),Object(c.b)("blockquote",null,Object(c.b)("p",{parentName:"blockquote"},'dockerImage, "name" (of kernelSpec), "channels", "condaDependencies", "pipDependencies" etc can be updated using this API.\n"name" of EnvironmentSpec is not supported.')),Object(c.b)("h3",{id:"delete-environment"},"Delete environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"GET /api/v1/environment/{name}")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "result": {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7_updated",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0"],\n        "pipDependencies" :\n          []\n      }\n    }\n  }\n}\n')))}m.isMDXComponent=!0}}]);