diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..2da805ee --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,43 @@ +# Contributing to Vizier + +## General Guidelines + +We want everyone to be able to participate here, so when contributing (issues, documentation, code, etc...), please keep the following two guidelines in mind: (i) Think about how your words will be perceived by others before writing them, and (ii) give others the benefit of the doubt when interpreting their words. + +## Style + +#### Branches + +- The main Vizier branch represents the most recent release candidate. + - No one pushes directly to the main branch. +- Development branches are labeled `v[major].[minor]` (e.g., v2.1). + - Pull requests for new features will only be accepted for the most recent development branch. + - Only pull requests for bugfixes will be accepted for earlier branches. + - Pull requests must pass the default test case suite: + - `mill vizier.test` for backend changes + - `mill vizier.ui.test` for frontend changes + +#### Commits + +- A single commit should address a single issue. Spread distinct changes across multiple commits. +- The first line should be an at-most 100 character summary of the commit, containing: + - The prefix WIP: if the commit is broken. + - A brief description of the goal of the commit's changes. + - An issue reference: + - (re: #[issue number]) to mark work towards a specific ticket + - (closes: #[issue number]) to signify that work towards a ticket is done +- A brief list of behaviors of the system that were changed: One line per behavior. For example: + - [system component] no longer hangs when passed a [type of input] + - Added [field] to the schema of [category] to store [summary] + - UI can now display [state]. +- If the reason for the behavioral change is not clear from the summary, add a short discussion providing any necessary context. For example "[external component] has a bug where if you ask it to [action] then it deletes your hard drive. Obviously, this would be bad, so we need to sanitize our inputs." + +#### Pull Requests + +- Ideally, a pull request focuses on one issue, or a linked set of issues. + - Pull requests for features must be made to the latest development branch. + - Only pull requests for bug fixes will be accepted to an earlier branch. +- Pull requests must pass all test cases. + - ... excepting any test cases that are broken on a development branch. +- The text of the pull request should briefly summarize the key changes made in terms of behaviors of the system that are different (see commit messages above). + - The text should clearly identify which tickets the pull request is responding to. \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE.txt index 6a50fe5e..4ec3c25c 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright (C) 2017-2021 University at Buffalo, +Copyright (C) 2017-2024 University at Buffalo, New York University, Illinois Institute of Technology. Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/build.sc b/build.sc index b474668c..b2abbee2 100644 --- a/build.sc +++ b/build.sc @@ -15,7 +15,7 @@ import java.util.Calendar *** The Vizier Backend *************************************************/ object vizier extends ScalaModule with PublishModule { - val VERSION = "2.0.0-rc2" + val VERSION = "2.1.0-SNAPSHOT" val PLAY_JS = ivy"com.typesafe.play::play-json::2.9.2" val MIMIR_CAVEATS = ivy"info.vizierdb::mimir-caveats::0.3.6" @@ -25,7 +25,7 @@ object vizier extends ScalaModule with PublishModule { "log4j" -> "*", ) - def scalaVersion = "2.12.15" + def scalaVersion = "2.12.20" def repositoriesTask = T.task { super.repositoriesTask() ++ Seq( MavenRepository("https://maven.mimirdb.org/"), @@ -75,6 +75,9 @@ object vizier extends ScalaModule with PublishModule { f"$VERSION (revision $gitVersion-$gitRevision; built ${date.get(Calendar.YEAR)}%04d-${date.get(Calendar.MONTH)}%02d-${date.get(Calendar.DAY_OF_MONTH)}%02d)" } + def version = T { + VERSION + } def internalJavaVersion = T { try { @@ -165,7 +168,7 @@ object vizier extends ScalaModule with PublishModule { ivy"info.vizierdb::vega:1.0.0", // Scala Cell - ivy"org.scala-lang:scala-compiler:2.12.15", + ivy"org.scala-lang:scala-compiler:${scalaVersion}", // Python ivy"me.shadaj::scalapy-core:0.5.2", @@ -212,7 +215,7 @@ object vizier extends ScalaModule with PublishModule { *** Backend Resources *************************************************/ def buildRoutesScript = T.sources { os.pwd / "scripts" / "build_routes.sc" } - def routesFile = T.sources { millSourcePath / "shared" / "resources" / "vizier-routes.txt" } + def routesFile = T.sources { millSourcePath / "resources" / "vizier-routes.txt" } def routes = T { println("Recompiling routes from "+routesFile().head.path); @@ -245,7 +248,7 @@ object vizier extends ScalaModule with PublishModule { object ui extends ScalaJSModule { def scalaVersion = vizier.scalaVersion - def scalaJSVersion = "1.7.1" + def scalaJSVersion = "1.16.0" /************************************************* *** Frontend Dependencies @@ -261,6 +264,10 @@ object vizier extends ScalaModule with PublishModule { millSourcePath / "src", vizier.millSourcePath / "shared" / "src" ) + + override def scalacOptions: Target[Seq[String]] = T { Seq( + "-P:scalajs:nowarnGlobalExecutionContext" + )} override def compile = T { routes() diff --git a/plugins/mimir-pip.jar b/plugins/mimir-pip.jar new file mode 100644 index 00000000..d0c4b052 Binary files /dev/null and b/plugins/mimir-pip.jar differ diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh index a232fb69..26f6cf07 100644 --- a/scripts/bootstrap.sh +++ b/scripts/bootstrap.sh @@ -1,8 +1,16 @@ -ARTIFACT=info.vizierdb:vizier_2.12:2.0.0-rc2 +MAVEN_BASE=info.vizierdb:vizier_2.12 +VERSION=$( + mill show vizier.versionString 2> /dev/null | + jq -r | + sed 's/ .*//' +) +ARTIFACT=$MAVEN_BASE:$VERSION + +echo $ARTIFACT coursier bootstrap $ARTIFACT\ -r https://s01.oss.sonatype.org/content/groups/public/ \ -r https://repo.osgeo.org/repository/release/ \ -r https://maven.mimirdb.org/ \ -M info.vizierdb.Vizier \ - -o bin/vizier -f \ No newline at end of file + -o bin/vizier -f diff --git a/scripts/build_routes.sc b/scripts/build_routes.sc index 506a8215..cd2ac5c1 100644 --- a/scripts/build_routes.sc +++ b/scripts/build_routes.sc @@ -506,6 +506,13 @@ def websocketAPICall(route: Route): String = "additionalProperties" -> extra, ) + def mkAnyOf(options: JsValue*) = + { + Json.obj( + "anyOf" -> options + ) + } + def mkArray(elem: JsValue) = Json.obj("type" -> "array", "items" -> elem) define { "Identifier" -> Json.obj( @@ -562,6 +569,17 @@ def websocketAPICall(route: Route): String = "version" -> Json.obj("type" -> "string"), "packages" -> mkArray(typeRef("PythonPackage")), )} + define { "VizierScriptModule" -> mkAnyOf( + mkObject()( + "type" -> Json.obj("const" -> "inline"), + "spec" -> typeRef("JsValue"), + ), + mkObject()( + "type" -> Json.obj("const" -> "in_out"), + "imports" -> typeRef("JsValue"), + "exports" -> typeRef("JsValue"), + ) + )} val aliases = Map( "CommandArgumentList.T" -> "Seq[CommandArgument]", diff --git a/scripts/fix_copyrights.py b/scripts/fix_copyrights.py index c5db3c19..95c1e6b9 100755 --- a/scripts/fix_copyrights.py +++ b/scripts/fix_copyrights.py @@ -16,7 +16,7 @@ from glob import glob import re -LICENSE_VERSION = 2 +LICENSE_VERSION = 3 with open("LICENSE.txt") as f: LICENSE = [ diff --git a/scripts/lib/akkagen.sc b/scripts/lib/akkagen.sc index 69100de5..1b9aba69 100644 --- a/scripts/lib/akkagen.sc +++ b/scripts/lib/akkagen.sc @@ -94,6 +94,7 @@ def decodePath(route: Route, handler: AkkaDirective): AkkaDirective = case PathVariable(_, "long") => "LongNumber" case PathVariable(_, "subpath") => "Remaining" case PathVariable(_, "string") => "Segment" + case PathVariable(_, pvt) => throw new RuntimeException(s"Invalid path variable type '$pvt' (expecting 'int', 'long', 'subpath', or 'string')") } val (pathParamInputs, pathParamOutputs) = diff --git a/scripts/lib/routes.sc b/scripts/lib/routes.sc index 4c174e4a..bf26c6c0 100644 --- a/scripts/lib/routes.sc +++ b/scripts/lib/routes.sc @@ -129,6 +129,7 @@ case class Route( def readRoutes(path: os.Path): Seq[Route] = os.read(path).split("\n") + .toIndexedSeq .map { description => val components = description.split("\\s+") val pathAndArguments = components(0).split("\\?") @@ -136,6 +137,7 @@ def readRoutes(path: os.Path): Seq[Route] = val pathQuery:Seq[PathVariable] = if(pathAndArguments.size > 1){ pathAndArguments(1).split("&") + .toIndexedSeq .map { _.split(":").toSeq } .map { case Seq(identifier, dataType) => PathVariable(identifier, dataType) @@ -147,6 +149,7 @@ def readRoutes(path: os.Path): Seq[Route] = components(6) match { case "-" | "_" => Seq() case x => x.split(";") + .toIndexedSeq .map { _.split(":").toSeq } .map { case Seq(identifier, dataType) => Param(identifier, dataType) diff --git a/scripts/publish.sh b/scripts/publish.sh index 98f28cc2..00ae82a0 100644 --- a/scripts/publish.sh +++ b/scripts/publish.sh @@ -1,19 +1,36 @@ #!/bin/bash +# This script expects credentials stored in `pass` +# (https://www.passwordstore.org/). Create a `pass` archive for +# sonatype.org and make sure it includes two lines: +# ``` +# token_user: ... +# token_pass: ... +# ``` +# The values from these lines can be populated from the user token +# which can be obtained from your user profile (instructions here): +# https://central.sonatype.org/publish/generate-token/ + + cd `dirname $0`/.. +# Fix Copyrights +python3 scripts/fix_copyrights.py + export SONATYPE_USERNAME="$( pass sonatype.org | - grep '^login:' | - sed 's/login: //' + grep '^token_user:' | + sed 's/token_user: //' | + head -n 1 )" export SONATYPE_PASSWORD="$( pass sonatype.org | + grep '^token_pass:' | + sed 's/token_pass: //' | head -n 1 )" - mill mill.scalalib.PublishModule/publishAll \ vizier.publishArtifacts \ --release true\ diff --git a/vizier/backend/src/info/vizierdb/Config.scala b/vizier/backend/src/info/vizierdb/Config.scala index 5f07fed1..ffe71a1e 100644 --- a/vizier/backend/src/info/vizierdb/Config.scala +++ b/vizier/backend/src/info/vizierdb/Config.scala @@ -137,6 +137,17 @@ class Config(arguments: Seq[String]) descr = "Set the SparkSQL warehouse directory (default: {cache-dir}/spark-warehouse)" ) + val extraPlugins = opt[List[File]]("plugin", + short = 'P', + descr = "Enable a plugin for this session", + default = Some(List()) + ) + + lazy val plugins:Seq[File] = + Option(defaults.getProperty("vizier-plugins")) + .map { _.split(":").map { new File(_) }.toSeq } + .getOrElse { Seq() } ++ extraPlugins() + def workingDirectoryFile: File = new File( workingDirectory @@ -168,7 +179,9 @@ class Config(arguments: Seq[String]) lazy val pythonVenvDirFile = new File(cacheDirFile, "python") def resolveToDataDir(path: String) = { new File(dataDirFile, path).getAbsoluteFile } - + def resolveToWorkingDir(path: File): File = + if(path.isAbsolute()) { path } + else { workingDirectoryFile.toPath.resolve(path.toPath).toFile } ////////////////////////// Ingest ////////////////////////// diff --git a/vizier/backend/src/info/vizierdb/Plugin.scala b/vizier/backend/src/info/vizierdb/Plugin.scala new file mode 100644 index 00000000..0509c0dc --- /dev/null +++ b/vizier/backend/src/info/vizierdb/Plugin.scala @@ -0,0 +1,107 @@ +/* -- copyright-header:v2 -- + * Copyright (C) 2017-2021 University at Buffalo, + * New York University, + * Illinois Institute of Technology. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * -- copyright-header:end -- */ +package info.vizierdb + +import play.api.libs.json._ +import java.net.URLClassLoader +import java.net.URL +import java.io.File +import java.io.FileNotFoundException +import com.typesafe.scalalogging.LazyLogging +import scala.collection.mutable +import info.vizierdb.util.ClassLoaderUtils + +case class Plugin( + name: String, + schema_version: Int, + plugin_class: String, + description: String, + documentation: Option[String], +) +{ +} + +object Plugin + extends LazyLogging +{ + + val loaded = mutable.Map[String, Plugin]() + val jars = mutable.Buffer[URL]() + + + implicit val pluginFormat: Format[Plugin] = Json.format + + def load(file: File): Plugin = + { + val jar = + if(file.isAbsolute){ file } + else { + Vizier.config.workingDirectoryFile.toPath + .resolve(file.toPath) + .toFile + } + + + if(!jar.exists()){ throw new FileNotFoundException(jar.getAbsoluteFile.toString) } + val url = jar.getAbsoluteFile().toURI().toURL() + + + // This classloader is used only to load the vizier-plugin.json file. + // and then discarded + val preloader = new URLClassLoader( + Array(jar.toURI.toURL), + Vizier.mainClassLoader + ) + + val plugin = + Json.parse( + preloader.getResourceAsStream("vizier-plugin.json") + ).asOpt[Plugin] + .getOrElse { + throw new RuntimeException(s"$jar is not a valid Vizier Plugin") + } + + Vizier.sparkSession.sparkContext.addJar(jar.getAbsoluteFile().toString) + val loader = Vizier.sparkSession.sharedState.jarClassLoader + loader.addURL(url) + + val detail = s"${plugin.name} [$jar]" + + assert( + plugin.schema_version > 0 && plugin.schema_version <= 1, + s"Unsupported version '${plugin.schema_version} for plugin $detail" + ) + + assert( + !loaded.contains(plugin.name), + s"Plugin ${plugin.name} is already loaded." + ) + + loaded.put(plugin.name, plugin) + jars.append(jar.toURI.toURL) + + val clazz = Class.forName(plugin.plugin_class, true, loader) + val singleton = clazz.getDeclaredField("MODULE$").get() + val initMethod = clazz.getMethod("init", Vizier.sparkSession.getClass) + + ClassLoaderUtils.withContextClassLoader(loader) { + initMethod.invoke(singleton, Vizier.sparkSession) + } + + return plugin + } + + def loadedJars = jars.toSeq +} \ No newline at end of file diff --git a/vizier/backend/src/info/vizierdb/Vizier.scala b/vizier/backend/src/info/vizierdb/Vizier.scala index 23e1dcc4..36c09cd7 100644 --- a/vizier/backend/src/info/vizierdb/Vizier.scala +++ b/vizier/backend/src/info/vizierdb/Vizier.scala @@ -53,6 +53,7 @@ import info.vizierdb.api.BrowseFilesystem import info.vizierdb.catalog.CatalogDB import info.vizierdb.api.akka.VizierServer import info.vizierdb.catalog.Metadata +import info.vizierdb.viztrails.Scheduler object Vizier extends LazyLogging @@ -60,6 +61,8 @@ object Vizier var config: Config = null var sparkSession: SparkSession = null var urls: VizierURLs = null + var mainClassLoader: ClassLoader = + Thread.currentThread().getContextClassLoader() def initSQLite(db: String = "Vizier.db") = { @@ -159,11 +162,12 @@ object Vizier } } - def setWorkingDirectory(): Unit = + def loadPlugins(plugins: Seq[File]): Unit = { - if(config.workingDirectory.isDefined){ - val path = new File(config.workingDirectory()).getAbsolutePath() - System.setProperty("user.dir", path) + for(p <- plugins){ + println(s" ...loading plugin $p") + val plugin = Plugin.load(p) + println(s" ...loaded ${plugin.name}") } } @@ -188,6 +192,9 @@ object Vizier return } + // Set up the working directory in environments and properties + setWorkingDirectory() + // Check for non-mandatory dependencies println("Checking for dependencies...") PythonProcess.checkPython() @@ -195,16 +202,29 @@ object Vizier // Set up the Vizier directory and database println("Setting up project library...") if(!config.basePath().exists) { config.basePath().mkdir() } - initSQLite() - Schema.initialize() + initSQLite() // Connect to the DB + Schema.initialize() // Init the DB and/or apply schema migrations + CatalogDB.initialize() // Load ScalikeJDBC state + bringDatabaseToSaneState() // Clean up 'running' transactions (e.g., from a system crash) // initORMLogging("warn") - bringDatabaseToSaneState() - setWorkingDirectory() - // Set up Mimir + // Set up Spark/Mimir/etc... println("Starting Spark...") initSpark() + // Configure systemwide URLS + urls = new VizierURLs( + ui = new URL(VizierServer.publicURL), + base = new URL(s"${VizierServer.publicURL}vizier-db/api/v1/"), + api = Some(new URL(s"${VizierServer.publicURL}swagger/index.html")) + ) + + // Set up plugins + if(!config.plugins.isEmpty){ + println("Loading plugins...") + loadPlugins(config.plugins) + } + config.subcommand match { //////////////// HANDLE SPECIAL COMMANDS ////////////////// case Some(subcommand) => @@ -212,15 +232,22 @@ object Vizier //////////////////// Ingest //////////////////// if(subcommand.equals(config.ingest)){ try { - Streams.closeAfter(new FileInputStream(config.ingest.file())) { + val filePath = + config.resolveToWorkingDir(config.ingest.file()) + Streams.closeAfter(new FileInputStream(filePath)) { ImportProject( _, execute = config.ingest.execute() ) } + println("Import complete. Waiting for execution to finish...") + Scheduler.joinAll() + println(" ... import complete.") + System.exit(0) } catch { case e:VizierException => println(s"\nError: ${e.getMessage()}") + System.exit(-1) } //////////////////// Export //////////////////// } else if (subcommand.equals(config.export)){ @@ -323,12 +350,6 @@ object Vizier println("Starting server...") VizierServer.run() - urls = new VizierURLs( - ui = new URL(VizierServer.publicURL), - base = new URL(s"${VizierServer.publicURL}vizier-db/api/v1/"), - api = Some(new URL(s"${VizierServer.publicURL}swagger/index.html")) - ) - if(!config.serverMode.getOrElse(false)){ // Disable local filesystem browsing if running in server // mode. diff --git a/vizier/backend/src/info/vizierdb/api/BrowseFilesystem.scala b/vizier/backend/src/info/vizierdb/api/BrowseFilesystem.scala index bdfe2079..f5b362bb 100644 --- a/vizier/backend/src/info/vizierdb/api/BrowseFilesystem.scala +++ b/vizier/backend/src/info/vizierdb/api/BrowseFilesystem.scala @@ -73,6 +73,7 @@ object BrowseFilesystem hasChildren = element.isDirectory ) } + .sortBy { _.label } } } diff --git a/vizier/backend/src/info/vizierdb/api/CreateScript.scala b/vizier/backend/src/info/vizierdb/api/CreateScript.scala new file mode 100644 index 00000000..a3b57cad --- /dev/null +++ b/vizier/backend/src/info/vizierdb/api/CreateScript.scala @@ -0,0 +1,66 @@ +/* -- copyright-header:v2 -- + * Copyright (C) 2017-2021 University at Buffalo, + * New York University, + * Illinois Institute of Technology. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * -- copyright-header:end -- */ +package info.vizierdb.api + +import scalikejdbc.DB +import play.api.libs.json._ +import info.vizierdb.catalog.Project +import info.vizierdb.api.response._ +import info.vizierdb.api.response.RawJsonResponse +import info.vizierdb.api.handler.DeterministicHandler +import info.vizierdb.serialized +import info.vizierdb.serializers._ +import info.vizierdb.catalog.CatalogDB +import info.vizierdb.catalog.Script +import info.vizierdb.catalog.ScriptRevision +import info.vizierdb.types._ +import info.vizierdb.VizierException + +object CreateScript +{ + def apply( + modules: Seq[serialized.VizierScriptModule], + projectId: String, + branchId: String, + workflowId: String, + name: String = null, + scriptId: String = null, + ): serialized.VizierScript = + { + CatalogDB.withDB { implicit s => + val script: Script = + ( + Option(scriptId), + Option(name), + ) match { + case (Some(id), _) => Script.get(target = id.toLong) + case (_, Some(name)) => Script.make(name = name) + case (None, None) => throw new IllegalArgumentException("Need a name or a script ID") + } + + script.modify( + ScriptRevision( + scriptId = -1, + version = -1, + projectId = projectId.toLong, + branchId = branchId.toLong, + workflowId = workflowId.toLong, + modules = Json.toJson(modules).toString.getBytes + ) + )._2.describe(name = name) + } + } +} + diff --git a/vizier/backend/src/info/vizierdb/api/DeleteScript.scala b/vizier/backend/src/info/vizierdb/api/DeleteScript.scala new file mode 100644 index 00000000..957ec189 --- /dev/null +++ b/vizier/backend/src/info/vizierdb/api/DeleteScript.scala @@ -0,0 +1,38 @@ +/* -- copyright-header:v2 -- + * Copyright (C) 2017-2021 University at Buffalo, + * New York University, + * Illinois Institute of Technology. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * -- copyright-header:end -- */ +package info.vizierdb.api + +import scalikejdbc.DB +import play.api.libs.json._ +import info.vizierdb.catalog.Project +import info.vizierdb.api.response._ +import info.vizierdb.api.response.RawJsonResponse +import info.vizierdb.api.handler.DeterministicHandler +import info.vizierdb.serialized +import info.vizierdb.catalog.CatalogDB +import info.vizierdb.catalog.Script +import info.vizierdb.api.response._ + +object DeleteScript +{ + def apply(scriptId: String): Response = + { + CatalogDB.withDB { implicit s => + Script.delete(scriptId.toLong) + } + return NoContentResponse() + } +} + diff --git a/vizier/backend/src/info/vizierdb/api/GetScript.scala b/vizier/backend/src/info/vizierdb/api/GetScript.scala new file mode 100644 index 00000000..fa6a09fd --- /dev/null +++ b/vizier/backend/src/info/vizierdb/api/GetScript.scala @@ -0,0 +1,38 @@ +/* -- copyright-header:v2 -- + * Copyright (C) 2017-2021 University at Buffalo, + * New York University, + * Illinois Institute of Technology. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * -- copyright-header:end -- */ +package info.vizierdb.api + +import scalikejdbc.DB +import play.api.libs.json._ +import info.vizierdb.catalog.Project +import info.vizierdb.api.response._ +import info.vizierdb.api.response.RawJsonResponse +import info.vizierdb.api.handler.DeterministicHandler +import info.vizierdb.serialized +import info.vizierdb.catalog.CatalogDB +import info.vizierdb.catalog.Script +import info.vizierdb.types._ + +object GetScript +{ + def apply(scriptId: String = null, version: Long = -1): serialized.VizierScript = + { + CatalogDB.withDBReadOnly { implicit s => + val (script, revision) = Script.getHead(scriptId.toLong) + revision.describe(script.name) + } + } +} + diff --git a/vizier/backend/src/info/vizierdb/api/ListScripts.scala b/vizier/backend/src/info/vizierdb/api/ListScripts.scala new file mode 100644 index 00000000..1e1cb7e1 --- /dev/null +++ b/vizier/backend/src/info/vizierdb/api/ListScripts.scala @@ -0,0 +1,38 @@ +/* -- copyright-header:v2 -- + * Copyright (C) 2017-2021 University at Buffalo, + * New York University, + * Illinois Institute of Technology. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * -- copyright-header:end -- */ +package info.vizierdb.api + +import scalikejdbc.DB +import play.api.libs.json._ +import info.vizierdb.catalog.Project +import info.vizierdb.api.response._ +import info.vizierdb.api.response.RawJsonResponse +import info.vizierdb.api.handler.DeterministicHandler +import info.vizierdb.serialized +import info.vizierdb.catalog.CatalogDB +import info.vizierdb.catalog.Script + +object ListScripts +{ + def apply(): serialized.VizierScriptList = + { + serialized.VizierScriptList( + CatalogDB.withDBReadOnly { implicit s => + Script.list + } + ) + } +} + diff --git a/vizier/backend/src/info/vizierdb/api/spreadsheet/SpreadsheetSocket.scala b/vizier/backend/src/info/vizierdb/api/spreadsheet/SpreadsheetSocket.scala index 9cc96710..e3e91f33 100644 --- a/vizier/backend/src/info/vizierdb/api/spreadsheet/SpreadsheetSocket.scala +++ b/vizier/backend/src/info/vizierdb/api/spreadsheet/SpreadsheetSocket.scala @@ -52,7 +52,7 @@ class SpreadsheetSocket(client: String)(implicit val ec: ExecutionContext, syste logger.debug(s"[$client] Websocket opened") val (remote, publisher): (ActorRef, Publisher[TextMessage.Strict]) = - Source.actorRef[String](4096, OverflowStrategy.fail) + Source.actorRef[String](100000, OverflowStrategy.fail) .map(msg => TextMessage.Strict(msg)) .toMat(Sink.asPublisher(false))(Keep.both) .run() diff --git a/vizier/backend/src/info/vizierdb/catalog/CatalogDB.scala b/vizier/backend/src/info/vizierdb/catalog/CatalogDB.scala index e54943b5..457ad788 100644 --- a/vizier/backend/src/info/vizierdb/catalog/CatalogDB.scala +++ b/vizier/backend/src/info/vizierdb/catalog/CatalogDB.scala @@ -58,4 +58,30 @@ object CatalogDB def withDBReadOnly[T]( op: DBSession => T ): T = traceLongHolds( DB.readOnly { implicit s => op(s) }) + + /** + * Initialize ScalikeJDBC's lazy variables + * + * ScalikeJDBC involves a number of lazy variables that store the actual column names. They are + * initialized by setting up a database connection. Because SQLite is not reentrant, it's not + * possible to initialize them from within a DB Session. Instead, you get a DB 'timeout' as the + * initializer tries and fails to acquire a connection. + * + * Instead of hoping that they get initialized outside of a session, this method explicitly forces + * materialization of all of the lazy variables + */ + def initialize(): Unit = + { + Project.columns; + Branch.columns; + Workflow.columns; + Cell.columns; + Branch.columns; + Artifact.columns; + InputArtifactRef.columns; + OutputArtifactRef.columns; + Result.columns; + Script.columns; + ScriptRevision.columns; + } } \ No newline at end of file diff --git a/vizier/backend/src/info/vizierdb/catalog/Schema.scala b/vizier/backend/src/info/vizierdb/catalog/Schema.scala index 73c20562..8ba5990a 100644 --- a/vizier/backend/src/info/vizierdb/catalog/Schema.scala +++ b/vizier/backend/src/info/vizierdb/catalog/Schema.scala @@ -76,9 +76,11 @@ object Schema val requiredMigrations = MIGRATIONS.drop(currentVersion) if(requiredMigrations.isEmpty){ return } + println(s"... updating vizier.db (old version: $currentVersion; new version: ${MIGRATIONS.size})") + CatalogDB.withDB { implicit session => - for((migration, idx) <- requiredMigrations.zipWithIndex){ - logger.info(s"Applying Migration ${idx + currentVersion}") + for((migration, idx) <- requiredMigrations.zipWithIndex){ + logger.info(s"Applying Migration ${idx + currentVersion}: ${migration.getClass.getSimpleName.replace("Migration", "")}") logger.trace(migration.sql) migration.apply } @@ -266,6 +268,32 @@ object Schema Column("packages", SQL.BLOB, "json", isRequired = true), ) )), + + ///////////////////// Published Workflows ///////////////////// + CreateTableMigration(Table( + name = "Script", + columns = List( + Column("id", SQL.INTEGER, "integer", isRequired = true, + isPrimaryKey = true, + isAutoIncrement = true), + Column("name", SQL.VARCHAR, "varchar(255)", isRequired = true), + Column("head_version", SQL.INTEGER, "integer", isRequired = true), + Column("deleted", SQL.BOOLEAN, "boolean", isRequired = true), + ) + )), + CreateTableMigration(Table( + name = "Script_Revision", + columns = List( + Column("script_id", SQL.INTEGER, "integer", isRequired = true, + isPrimaryKey = true), + Column("version", SQL.INTEGER, "integer", isRequired = true, + isPrimaryKey = true), + Column("project_id", SQL.INTEGER, "integer", isRequired = true), + Column("branch_id", SQL.INTEGER, "integer", isRequired = true), + Column("workflow_id", SQL.INTEGER, "integer", isRequired = true), + Column("modules", SQL.BLOB, "json", isRequired = true), + ) + )), ) val TABLES: Map[String, Table] = diff --git a/vizier/backend/src/info/vizierdb/catalog/Script.scala b/vizier/backend/src/info/vizierdb/catalog/Script.scala new file mode 100644 index 00000000..38592f72 --- /dev/null +++ b/vizier/backend/src/info/vizierdb/catalog/Script.scala @@ -0,0 +1,234 @@ +/* -- copyright-header:v2 -- + * Copyright (C) 2017-2021 University at Buffalo, + * New York University, + * Illinois Institute of Technology. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * -- copyright-header:end -- */ +package info.vizierdb.catalog + +import scalikejdbc._ +import play.api.libs.json._ +import info.vizierdb.types._ +import info.vizierdb.serialized +import info.vizierdb.serializers._ + +case class ScriptRevision( + scriptId: Identifier, + version: Long, + projectId: Identifier, + branchId: Identifier, + workflowId: Identifier, + modules: Array[Byte] +) +{ + def describe(name: String): serialized.VizierScript = + serialized.VizierScript( + id = scriptId, + version = version, + name = name, + projectId = projectId, + branchId = branchId, + workflowId = workflowId, + modules = decodeModules + ) + + def decodeModules = + Json.parse(new String(modules)).as[Seq[serialized.VizierScriptModule]] +} + +object ScriptRevision + extends SQLSyntaxSupport[ScriptRevision] +{ + def apply(rs: WrappedResultSet): ScriptRevision = autoConstruct(rs, (ScriptRevision.syntax).resultName) + +} + +case class Script( + id: Identifier, + name: String, + headVersion: Identifier, + deleted: Boolean +) +{ + def head(implicit session:DBSession): ScriptRevision = + withSQL { + val sr = ScriptRevision.syntax + select.from(ScriptRevision as sr) + .where.eq(sr.scriptId, id) + .and.eq(sr.version, headVersion) + }.map { ScriptRevision(_) }.single.apply().get + def revisions(implicit session:DBSession): Seq[ScriptRevision] = + withSQL { + val sr = ScriptRevision.syntax + select.from(ScriptRevision as sr) + .where.eq(sr.scriptId, id) + .orderBy(sr.version).asc + }.map { ScriptRevision(_) }.list.apply() + def modify(revised: ScriptRevision, name: String = null)(implicit session:DBSession): (Script, ScriptRevision) = + { + val cleanForInsert = + revised.copy(scriptId = id, version = headVersion + 1) + + withSQL { + val sr = ScriptRevision.column + insertInto(ScriptRevision) + .namedValues( + sr.scriptId -> cleanForInsert.scriptId, + sr.version -> cleanForInsert.version, + sr.projectId -> cleanForInsert.projectId, + sr.branchId -> cleanForInsert.branchId, + sr.workflowId -> cleanForInsert.workflowId, + sr.modules -> cleanForInsert.modules, + ) + }.update.apply() + + withSQL { + val s = Script.column + + if(name == null){ + update(Script) + .set( + s.headVersion -> cleanForInsert.version + ) + .where.eq(s.id, id) + } else { + update(Script) + .set( + s.name -> name, + s.headVersion -> cleanForInsert.version + ) + .where.eq(s.id, id) + } + }.update.apply() + + return (copy(headVersion = cleanForInsert.version), cleanForInsert) + } + def delete(implicit session: DBSession): Unit = + Script.delete(id) +} + +object Script + extends SQLSyntaxSupport[Script] +{ + def apply(rs: WrappedResultSet): Script = autoConstruct(rs, (Script.syntax).resultName) + + def make(name: String)(implicit session: DBSession): Script = + { + Script( + id = + withSQL { + val s = Script.column + insertInto(Script) + .namedValues( + s.name -> name, + s.headVersion -> -1, + s.deleted -> false + ) + }.updateAndReturnGeneratedKey.apply(), + name = name, + headVersion = -1, + deleted = false + ) + } + + def get(target: Identifier)(implicit session:DBSession): Script = + getOption(target).get + def getOption(target: Identifier)(implicit session:DBSession): Option[Script] = + { + withSQL { + val s = Script.syntax + select + .from(Script as s) + .where.eq(s.id, target) + }.map { apply(_) }.single.apply() + } + + def getByName(name: String)(implicit session: DBSession): Seq[Script] = + { + withSQL { + val s = Script.syntax + select + .from(Script as s) + .where.eq(s.name, name) + }.map { apply(_) }.list.apply() + } + + def list(implicit session: DBSession): Seq[serialized.VizierScriptSummary] = + { + withSQL { + val s = Script.syntax + val sr = ScriptRevision.syntax + select(s.id, s.name, s.headVersion, sr.projectId, sr.branchId, sr.workflowId) + .from(Script as s) + .join(ScriptRevision as sr) + .where.eq(s.id, sr.scriptId) + .and.eq(s.headVersion, sr.version) + .and.eq(s.deleted, false) + }.map { r => + serialized.VizierScriptSummary( + id = r.long(1), + name = r.string(2), + version = r.long(3), + projectId = r.long(4), + branchId = r.long(5), + workflowId = r.long(6) + ) + }.list.apply() + } + + def delete(id: Identifier)(implicit session: DBSession): Unit = + withSQL { + val s = Script.column + update(Script) + .set( + s.deleted -> true + ) + .where.eq(s.id, id) + }.update.apply() + + def getHead(target: Identifier)(implicit session: DBSession): (Script, ScriptRevision) = + getHeadOption(target).get + + def getHeadOption(target: Identifier)(implicit session: DBSession): Option[(Script, ScriptRevision)] = + { + withSQL { + val s = Script.syntax + val sr = ScriptRevision.syntax + select + .from(Script as s) + .join(ScriptRevision as sr) + .where.eq(s.id, target) + .and.eq(s.id, sr.scriptId) + .and.eq(s.headVersion, sr.version) + }.map { r => + ( Script(r), ScriptRevision(r) ) + }.single.apply() + } + + def getHeadByName(name: String)(implicit session: DBSession): (Script, ScriptRevision) = + getHeadByNameOption(name).get + + def getHeadByNameOption(name: String)(implicit session: DBSession): Option[(Script, ScriptRevision)] = + { + withSQL { + val s = Script.syntax + val sr = ScriptRevision.syntax + select + .from(Script as s) + .join(ScriptRevision as sr) + .where.eq(s.name, name) + .and.eq(s.id, sr.scriptId) + .and.eq(s.headVersion, sr.version) + }.map { r => + ( Script(r), ScriptRevision(r) ) + }.single.apply() + } +} \ No newline at end of file diff --git a/vizier/backend/src/info/vizierdb/catalog/workarounds/SQLiteNoReadOnlyDriver.scala b/vizier/backend/src/info/vizierdb/catalog/workarounds/SQLiteNoReadOnlyDriver.scala index 90864a8d..dbd49684 100644 --- a/vizier/backend/src/info/vizierdb/catalog/workarounds/SQLiteNoReadOnlyDriver.scala +++ b/vizier/backend/src/info/vizierdb/catalog/workarounds/SQLiteNoReadOnlyDriver.scala @@ -80,12 +80,12 @@ class SQLiteNoReadOnlyConnection(sqlite: Connection) def prepareCall(x: String,y: Int,z: Int,q: Int): java.sql.CallableStatement = { logger.trace("prepareCall"); sqlite.prepareCall(x, y, z, q) } def prepareCall(x: String,y: Int,z: Int): java.sql.CallableStatement = { logger.trace("prepareCall"); sqlite.prepareCall(x, y, z) } def prepareCall(x: String): java.sql.CallableStatement = { logger.trace("prepareCall"); sqlite.prepareCall(x) } - def prepareStatement(x: String,y: Array[String]): java.sql.PreparedStatement = { logger.trace("prepareStatement"); sqlite.prepareStatement(x, y) } - def prepareStatement(x: String,y: Array[Int]): java.sql.PreparedStatement = { logger.trace("prepareStatement"); sqlite.prepareStatement(x, y) } - def prepareStatement(x: String,y: Int): java.sql.PreparedStatement = { logger.trace("prepareStatement"); sqlite.prepareStatement(x, y) } - def prepareStatement(x: String,y: Int,z: Int,q: Int): java.sql.PreparedStatement = { logger.trace("prepareStatement"); sqlite.prepareStatement(x, y, z, q) } - def prepareStatement(x: String,y: Int,z: Int): java.sql.PreparedStatement = { logger.trace("prepareStatement"); sqlite.prepareStatement(x, y, z) } - def prepareStatement(x: String): java.sql.PreparedStatement = { logger.trace("prepareStatement"); sqlite.prepareStatement(x) } + def prepareStatement(x: String,y: Array[String]): java.sql.PreparedStatement = { logger.trace(s"prepareStatement: $x"); sqlite.prepareStatement(x, y) } + def prepareStatement(x: String,y: Array[Int]): java.sql.PreparedStatement = { logger.trace(s"prepareStatement: $x"); sqlite.prepareStatement(x, y) } + def prepareStatement(x: String,y: Int): java.sql.PreparedStatement = { logger.trace(s"prepareStatement: $x"); sqlite.prepareStatement(x, y) } + def prepareStatement(x: String,y: Int,z: Int,q: Int): java.sql.PreparedStatement = { logger.trace(s"prepareStatement: $x"); sqlite.prepareStatement(x, y, z, q) } + def prepareStatement(x: String,y: Int,z: Int): java.sql.PreparedStatement = { logger.trace(s"prepareStatement: $x"); sqlite.prepareStatement(x, y, z) } + def prepareStatement(x: String): java.sql.PreparedStatement = { logger.trace(s"prepareStatement: $x"); sqlite.prepareStatement(x) } def releaseSavepoint(x: java.sql.Savepoint): Unit = { logger.trace("releaseSavepoint"); sqlite.releaseSavepoint(x) } def rollback(x: java.sql.Savepoint): Unit = { logger.trace("rollback"); sqlite.rollback(x) } def rollback(): Unit = { logger.trace("rollback"); sqlite.rollback() } diff --git a/vizier/backend/src/info/vizierdb/commands/ExecutionContext.scala b/vizier/backend/src/info/vizierdb/commands/ExecutionContext.scala index 47a0a924..f0ad7dea 100644 --- a/vizier/backend/src/info/vizierdb/commands/ExecutionContext.scala +++ b/vizier/backend/src/info/vizierdb/commands/ExecutionContext.scala @@ -46,6 +46,8 @@ import scala.io.Source import info.vizierdb.catalog.CatalogDB import info.vizierdb.api.akka.VizierServer import info.vizierdb.artifacts.VegaChart +import info.vizierdb.catalog.Script +import info.vizierdb.catalog.ScriptRevision class ExecutionContext( val projectId: Identifier, @@ -54,7 +56,8 @@ class ExecutionContext( cell: Cell, module: Module, stdout: (String, Array[Byte]) => Unit, - stderr: String => Unit + stderr: String => Unit, + subId: Option[Integer] = None ) extends LazyLogging { @@ -103,6 +106,20 @@ class ExecutionContext( return ret } + /** + * Retrieve all artifacts + */ + def artifacts(registerInput: Boolean = true): Map[String, Artifact] = + { + val ret: Map[String, Artifact] = + (scope.mapValues { Some(_) } ++ outputs) + .flatMap { case (k, v) => v.map { k -> _ }} + if(registerInput){ + inputs ++= ret.map { case (name, artifact) => name -> artifact.id }.toMap + } + return ret + } + /** * Retrieve the identifier of the specified artifact * @@ -499,6 +516,16 @@ class ExecutionContext( isError = true } + /** + * Record that this execution has a potential problem + * + * @param message The warning message to communicate to the user + */ + def warn(message: String) + { + stderr(message) + } + /** * Communicate a message to the end-user. * @@ -700,12 +727,115 @@ class ExecutionContext( } } + var nextScriptId = 0; + + /** + * Execute the referenced script + */ + def runScript( + script: Script, + revision: ScriptRevision, + inputs: Map[String, String], + outputs: Map[String, String], + quiet: Boolean = true + ): Long = + { + val subId = nextScriptId + nextScriptId += 1 + val subcontext = + new ExecutionContext( + projectId = projectId, + scope = Map.empty, + workflow = workflow, + cell = cell, + module = module, + stdout = if(quiet) { (_, _) => () } else { stdout }, //disable output + stderr = stderr, + subId = Some(subId) + ) + + for(module <- revision.decodeModules) + { + if(module.enabled){ + module match { + case module: serialized.VizierScriptModule.InputOutput => + { + for((id, _) <- module.imports){ + subcontext.output(id, artifact(inputs(id)).get) + } + for((id,_) <- module.exports){ + outputs.get(id) match { + case None => () + case Some(localId) => + output(localId, subcontext.artifact(id).get) + } + } + } + case module: serialized.VizierScriptModule.Inline => + { + val spec = module.spec + val command = + Commands.getOption(spec.command.packageId, spec.command.commandId) + .getOrElse { + subcontext.error(s"Command ${spec.command.packageId}.${spec.command.commandId} does not exist") + throw new VizierException("Module does not exist") + } + val arguments = + Arguments( + command.argumentsFromPropertyList(spec.command.arguments).as[Map[String,JsValue]], + command.parameters + ) + val argumentErrors = arguments.validate + if(!argumentErrors.isEmpty){ + val msg = "Error in module arguments:\n"+argumentErrors.mkString("\n") + logger.warn(msg) + subcontext.error(msg) + throw new VizierException(msg) + } + command.process(arguments, subcontext) + } + } + } + } + + revision.version + } + + def runScript( + scriptId: Identifier, + inputs: Map[String, String], + outputs: Map[String, String] + ): Long = + { + val (script, revision) = + CatalogDB.withDBReadOnly { implicit s => + Script.getHead(scriptId) + } + + runScript(script, revision, inputs, outputs) + } + + def runScript( + name: String, + inputs: Map[String, String], + outputs: Map[String, String] + ): Long = + { + val (script, revision) = + CatalogDB.withDBReadOnly { implicit s => + Script.getHeadByNameOption(name) + }.getOrElse { + throw new VizierException(s"No script named $name") + } + runScript(script, revision, inputs, outputs) + } + /** * Get a unique string for this execution */ def executionIdentifier: String = { - s"${module.id}_${cell.position}${cell.resultId.map { "_"+_ }.getOrElse("")}" + s"${module.id}_${cell.position}${subId.map { i => s"_$i" }.getOrElse("")}${cell.resultId.map { "_"+_ }.getOrElse("")}" } override def toString: String = diff --git a/vizier/backend/src/info/vizierdb/commands/Parameter.scala b/vizier/backend/src/info/vizierdb/commands/Parameter.scala index 7ee2000a..7a524655 100644 --- a/vizier/backend/src/info/vizierdb/commands/Parameter.scala +++ b/vizier/backend/src/info/vizierdb/commands/Parameter.scala @@ -403,7 +403,7 @@ case class ListParameter( else { j.as[Seq[JsValue]].flatMap { elem => if(!elem.isInstanceOf[JsObject]) { - return Some("Expected list elements in $name to be objects, but $elem isn't.") + return Some(s"Expected list elements in $name to be objects, but $elem isn't.") } zipParameters(elem.as[Map[String, JsValue]]) .flatMap { case (component, v) => diff --git a/vizier/backend/src/info/vizierdb/commands/data/CheckpointDataset.scala b/vizier/backend/src/info/vizierdb/commands/data/CheckpointDataset.scala index 8392d624..cc5d43e3 100644 --- a/vizier/backend/src/info/vizierdb/commands/data/CheckpointDataset.scala +++ b/vizier/backend/src/info/vizierdb/commands/data/CheckpointDataset.scala @@ -49,7 +49,7 @@ object CheckpointDataset extends Command context.message("Checkpointing data...") - val artifact = context.outputDatasetWithFile(name, { artifact => + val artifact = context.outputDatasetWithFile(datasetName, { artifact => Staging.stage( input = df, format = MaterializeConstructor.DEFAULT_FORMAT, diff --git a/vizier/backend/src/info/vizierdb/commands/jvmScript/ScalaScript.scala b/vizier/backend/src/info/vizierdb/commands/jvmScript/ScalaScript.scala index 6b8fe83b..71c8e793 100644 --- a/vizier/backend/src/info/vizierdb/commands/jvmScript/ScalaScript.scala +++ b/vizier/backend/src/info/vizierdb/commands/jvmScript/ScalaScript.scala @@ -32,6 +32,9 @@ import scala.reflect.runtime.universe._ import scala.tools.reflect.ToolBox import info.vizierdb.viztrails.ProvenancePrediction import play.api.libs.json.JsObject +import java.net.URLClassLoader +import info.vizierdb.Vizier +import info.vizierdb.Plugin object ScalaScript extends Command { @@ -62,7 +65,14 @@ object ScalaScript extends Command def eval(script: String, context: ExecutionContext): Unit = { - val toolbox = universe.runtimeMirror(getClass.getClassLoader).mkToolBox() + val classLoader = + new URLClassLoader( + Plugin.loadedJars.toArray, + Vizier.mainClassLoader + ) + + val toolbox = universe.runtimeMirror(classLoader) + .mkToolBox() val tree = toolbox.parse(STANDARD_PREFIX + "\n" + script) executionContext.set(context) toolbox.eval(tree) diff --git a/vizier/backend/src/info/vizierdb/commands/plot/CDFPlot.scala b/vizier/backend/src/info/vizierdb/commands/plot/CDFPlot.scala index 4434b664..30688ff5 100644 --- a/vizier/backend/src/info/vizierdb/commands/plot/CDFPlot.scala +++ b/vizier/backend/src/info/vizierdb/commands/plot/CDFPlot.scala @@ -83,8 +83,8 @@ object CDFPlot extends Command PlotUtils.makeSeries( context = context, datasetName = series.get[String](PARAM_DATASET), - xIndex = series.get[Int](PARAM_X), // this is just a placeholder; CDF below replaces it - yIndex = series.get[Int](PARAM_X), + xIndex = series.get[Int](PARAM_X), + yIndex = series.get[Int](PARAM_X), // this is just a placeholder; CDF below replaces it name = series.getOpt[String](PARAM_LABEL), ) .filtered(series.getOpt[String](PARAM_FILTER).getOrElse("")) diff --git a/vizier/backend/src/info/vizierdb/commands/plot/GeoPlot.scala b/vizier/backend/src/info/vizierdb/commands/plot/GeoPlot.scala index 5dc0ebf6..bb2b366d 100644 --- a/vizier/backend/src/info/vizierdb/commands/plot/GeoPlot.scala +++ b/vizier/backend/src/info/vizierdb/commands/plot/GeoPlot.scala @@ -34,6 +34,7 @@ import info.vizierdb.viztrails.ProvenancePrediction import java.io.FileOutputStream import info.vizierdb.gis._ import info.vizierdb.util.StringUtils +import java.awt.image.BufferedImage object GeoPlot extends Command with LazyLogging @@ -79,6 +80,22 @@ object GeoPlot extends Command def fileNameForIndex(idx: Int) = s"geojson_$idx" + def renderDatum(datum: Any): String = + { + datum match { + case img:BufferedImage => + val out = new ByteArrayOutputStream() + ImageIO.write(img, "png", out) + ( + "" + ) + case d => d.toString + } + } + def process(arguments: Arguments, context: ExecutionContext): Unit = { var bounds: Envelope = null @@ -119,7 +136,7 @@ object GeoPlot extends Command .zipWithIndex .filterNot { _._2 == shapeColumnIdx } .map { case (field, idx) => - s"$field${row.get(idx)}" + s"$field${renderDatum(row.get(idx))}" } .mkString("\n")+ "" @@ -204,7 +221,7 @@ object GeoPlot extends Command .zipWithIndex .filterNot { _._2 == shapeColumnIdx } .map { case (field, idx) => - s"$field${row.get(idx)}" + s"$field${renderDatum(row.get(idx))}" } .mkString("\n")+ "" diff --git a/vizier/backend/src/info/vizierdb/commands/plot/PlotUtils.scala b/vizier/backend/src/info/vizierdb/commands/plot/PlotUtils.scala index 2e4cb8c8..6ff197ab 100644 --- a/vizier/backend/src/info/vizierdb/commands/plot/PlotUtils.scala +++ b/vizier/backend/src/info/vizierdb/commands/plot/PlotUtils.scala @@ -190,7 +190,7 @@ object PlotUtils copy( dataframe = newDataframe, - x = cdf_attr + y = cdf_attr ) } diff --git a/vizier/backend/src/info/vizierdb/commands/python/Pyenv.scala b/vizier/backend/src/info/vizierdb/commands/python/Pyenv.scala index cf0bcba8..36316739 100644 --- a/vizier/backend/src/info/vizierdb/commands/python/Pyenv.scala +++ b/vizier/backend/src/info/vizierdb/commands/python/Pyenv.scala @@ -18,6 +18,7 @@ import info.vizierdb.Vizier import java.io.File import scala.sys.process._ import info.vizierdb.VizierException +import java.io.IOException object Pyenv { @@ -27,6 +28,7 @@ object Pyenv return true } catch { case _:RuntimeException => return false + case _:IOException => return false } def apply(command: String*) = @@ -42,7 +44,11 @@ object Pyenv def versions: Seq[String] = { - apply("install", "--list").!!.split("\n").drop(1).map { _.trim() } + try { + apply("install", "--list").!!.split("\n").drop(1).map { _.trim() } + } catch { + case _:IOException => Seq.empty + } } def installed: Seq[String] = diff --git a/vizier/backend/src/info/vizierdb/commands/python/Python.scala b/vizier/backend/src/info/vizierdb/commands/python/Python.scala index dc9aa978..3e5ae7f7 100644 --- a/vizier/backend/src/info/vizierdb/commands/python/Python.scala +++ b/vizier/backend/src/info/vizierdb/commands/python/Python.scala @@ -29,6 +29,7 @@ import info.vizierdb.catalog.ArtifactRef import info.vizierdb.spark.vizual.{ VizualCommand, VizualScriptConstructor } import info.vizierdb.spark.caveats.QueryWithCaveats import info.vizierdb.util.ExperimentalOptions +import info.vizierdb.util.JsonUtils import info.vizierdb.viztrails.ProvenancePrediction import info.vizierdb.catalog.CatalogDB import info.vizierdb.serialized @@ -90,7 +91,7 @@ object Python extends Command python.send("script", "script" -> JsString(script), "artifacts" -> - JsObject(context.scope.mapValues { artifact => + JsObject(context.artifacts(registerInput = false).mapValues { artifact => Json.obj( "type" -> artifact.t.toString(), "mimeType" -> artifact.mimeType, @@ -139,7 +140,7 @@ object Python extends Command // each message object already gets a free newline, so trim here case "stderr" => { logger.warn( (event\"content").as[String].trim() ) - context.error( (event\"content").as[String].trim() ) + context.warn( (event\"content").as[String].trim() ) } case x => context.error(s"Received message on unknown stream '$x'") } @@ -227,7 +228,29 @@ object Python extends Command handler(Some(existingDs.id), Some(existingDs.datasetSchema)) } } - + case "vizier_script" => + { + val inputs = (event\"inputs").as[Map[String, String]] + val outputs = (event\"outputs").as[Map[String, String]] + val quiet = (event\"quiet").asOpt[Boolean].getOrElse(true) + context.runScript( + name = (event\"script").as[String], + inputs = inputs, + outputs = outputs, + ) + python.send("script_datasets", + "outputs" -> JsObject( + outputs.map { case (scriptName, myName) => + val artifact = context.artifact(myName, registerInput = false).get + myName -> Json.obj( + "type" -> artifact.t.toString(), + "mimeType" -> artifact.mimeType, + "artifactId" -> artifact.id + ) + }.toMap + ) + ) + } case "create_dataset" => { val artifact = @@ -324,15 +347,26 @@ object Python extends Command python.kill() } } catch { - case e: Exception => + case m:UnsupportedOperationException => { - e match { - case m:UnsupportedOperationException => - context.error(m.getMessage()) - case _ => - e.printStackTrace() - context.error(s"INTERNAL ERROR: $e") + context.error(m.getMessage()) + python.kill() + } + + case j:JsResultException => + { + context.error(s"INTERNAL ERROR: $j") + for(i <- JsonUtils.prettyJsonParseError(j)) + { + System.err.println(i) } + j.printStackTrace() + python.kill() + } + + case e: Exception => + { + e.printStackTrace() python.kill() } } diff --git a/vizier/backend/src/info/vizierdb/commands/sample/BasicSample.scala b/vizier/backend/src/info/vizierdb/commands/sample/BasicSample.scala index bda2d890..53a9adb5 100644 --- a/vizier/backend/src/info/vizierdb/commands/sample/BasicSample.scala +++ b/vizier/backend/src/info/vizierdb/commands/sample/BasicSample.scala @@ -50,7 +50,11 @@ object BasicSample extends Command val outputName = arguments.getOpt[String](PAR_OUTPUT_DATASET) .getOrElse { inputName } val probability = arguments.get[Float](PAR_SAMPLE_RATE) - val seedMaybe = arguments.getOpt[String](PAR_SEED).map { _.toLong } + val seedMaybe = arguments.getOpt[String](PAR_SEED) + .flatMap { + case "" => None + case x => Some(x) + }.map { _.toLong } val seed = seedMaybe.getOrElse { Random.nextLong } val input = context.artifact(inputName) diff --git a/vizier/backend/src/info/vizierdb/commands/sample/SampleConstructor.scala b/vizier/backend/src/info/vizierdb/commands/sample/SampleConstructor.scala index 4c63f6dc..974e2ab6 100644 --- a/vizier/backend/src/info/vizierdb/commands/sample/SampleConstructor.scala +++ b/vizier/backend/src/info/vizierdb/commands/sample/SampleConstructor.scala @@ -133,6 +133,8 @@ case class SampleConstructor( } object SampleConstructor + extends DataFrameConstructorCodec { implicit val format: Format[SampleConstructor] = Json.format + def apply(j: JsValue) = j.as[SampleConstructor] } \ No newline at end of file diff --git a/vizier/backend/src/info/vizierdb/commands/sql/Query.scala b/vizier/backend/src/info/vizierdb/commands/sql/Query.scala index 1830f379..89c2d035 100644 --- a/vizier/backend/src/info/vizierdb/commands/sql/Query.scala +++ b/vizier/backend/src/info/vizierdb/commands/sql/Query.scala @@ -34,16 +34,21 @@ object Query extends Command { val TEMPORARY_DATASET = "temporary_dataset" + val PARAM_SOURCE = "source" + val PARAM_OUTPUT_DATASET = "output_dataset" + val PARAM_SHOW_OUTPUT = "show_output" + def name: String = "SQL Query" def parameters: Seq[Parameter] = Seq( - CodeParameter(id = "source", language = "sql", name = "SQL Code"), - StringParameter(id = "output_dataset", name = "Output Dataset", required = false) + CodeParameter(id = PARAM_SOURCE, language = "sql", name = "SQL Code"), + StringParameter(id = PARAM_OUTPUT_DATASET, name = "Output Dataset", required = false), + BooleanParameter(id = PARAM_SHOW_OUTPUT, name = "Show Query Result", required = false, default = Some(true)), ) def format(arguments: Arguments): String = - arguments.pretty("source") + arguments.pretty(PARAM_SOURCE) def title(arguments: Arguments): String = - arguments.getOpt[String]("source") + arguments.getOpt[String](PARAM_SOURCE) .flatMap { source => // If there's a -- comment on the first line, use it as the // title. @@ -56,7 +61,7 @@ object Query extends Command } else { None } } .orElse { - arguments.getOpt[String]("output_dataset") + arguments.getOpt[String](PARAM_OUTPUT_DATASET) .map { "SELECT into " + _ } } @@ -74,8 +79,8 @@ object Query extends Command .toSeq .filter { _._2.t == ArtifactType.PARAMETER } .toMap - val datasetName = arguments.getOpt[String]("output_dataset").getOrElse { TEMPORARY_DATASET } - val query = arguments.get[String]("source") + val datasetName = arguments.getOpt[String](PARAM_OUTPUT_DATASET).getOrElse { TEMPORARY_DATASET } + val query = arguments.get[String](PARAM_SOURCE) try { @@ -148,8 +153,11 @@ object Query extends Command context.inputs.put(dep, parameters(dep).id) } - logger.trace("Rendering dataset summary") - context.displayDataset(datasetName) + if(arguments.getOpt[Boolean](PARAM_SHOW_OUTPUT).getOrElse { true }) + { + logger.trace("Rendering dataset summary") + context.displayDataset(datasetName) + } } catch { case e: info.vizierdb.api.FormattedError => context.error(e.getMessage) @@ -176,10 +184,10 @@ object Query extends Command try { ProvenancePrediction .definitelyReads( - computeDependencies(arguments.get[String]("source")):_* + computeDependencies(arguments.get[String](PARAM_SOURCE)):_* ) .definitelyWrites( - arguments.getOpt[String]("output_dataset").getOrElse { TEMPORARY_DATASET } + arguments.getOpt[String](PARAM_OUTPUT_DATASET).getOrElse { TEMPORARY_DATASET } ) .andNothingElse } catch { diff --git a/vizier/backend/src/info/vizierdb/serializers.scala b/vizier/backend/src/info/vizierdb/serializers.scala index 6643cb21..47732cc4 100644 --- a/vizier/backend/src/info/vizierdb/serializers.scala +++ b/vizier/backend/src/info/vizierdb/serializers.scala @@ -230,4 +230,33 @@ object serializers implicit val pythonEnvironmentDescriptorFormat: Format[serialized.PythonEnvironmentDescriptor] = Json.format implicit val pythonEnvironmentSummaryFormat: Format[serialized.PythonEnvironmentSummary] = Json.format implicit val pythonSettingsSummaryFormat: Format[serialized.PythonSettingsSummary] = Json.format + + implicit val vizierScriptModuleInlineFormat: Format[serialized.VizierScriptModule.Inline] = Json.format + implicit val vizierScriptModuleIOFormat: Format[serialized.VizierScriptModule.InputOutput] = Json.format + implicit val vizierScriptModuleFormat = Format[serialized.VizierScriptModule]( + new Reads[serialized.VizierScriptModule] { + def reads(j: JsValue): JsResult[serialized.VizierScriptModule] = + { + (j \ "type").as[String] match { + case serialized.VizierScriptModule.INLINE => + JsSuccess(j.as[serialized.VizierScriptModule.Inline]) + case serialized.VizierScriptModule.INPUT_OUTPUT => + JsSuccess(j.as[serialized.VizierScriptModule.InputOutput]) + case _ => JsError() + } + } + }, + new Writes[serialized.VizierScriptModule] { + def writes(j: serialized.VizierScriptModule): JsValue = + { + j match { + case v: serialized.VizierScriptModule.Inline => Json.toJson(v) + case v: serialized.VizierScriptModule.InputOutput => Json.toJson(v) + } + } + } + ) + implicit val vizierScriptFormat: Format[serialized.VizierScript] = Json.format + implicit val vizierScriptSummaryFormat: Format[serialized.VizierScriptSummary] = Json.format + implicit val vizierScriptListFormat: Format[serialized.VizierScriptList] = Json.format } \ No newline at end of file diff --git a/vizier/backend/src/info/vizierdb/spark/DataFrameOps.scala b/vizier/backend/src/info/vizierdb/spark/DataFrameOps.scala new file mode 100644 index 00000000..338a0c64 --- /dev/null +++ b/vizier/backend/src/info/vizierdb/spark/DataFrameOps.scala @@ -0,0 +1,52 @@ +/* -- copyright-header:v2 -- + * Copyright (C) 2017-2021 University at Buffalo, + * New York University, + * Illinois Institute of Technology. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * -- copyright-header:end -- */ +package info.vizierdb.spark + +import org.apache.spark.sql.DataFrame +import org.apache.spark.sql.Column +import org.apache.spark.sql.catalyst.expressions.NamedExpression +import info.vizierdb.VizierException + +object DataFrameOps +{ + def columns(df: DataFrame): Seq[Column] = + outputs(df).map { new Column(_) } + + def columnsWhere(df: DataFrame)(cond: String => Boolean): Seq[Column] = + outputs(df).filter { x => cond(x.name) } + .map { new Column(_) } + + def outputs(df: DataFrame): Seq[NamedExpression] = + df.queryExecution.logical.output + + def safeColumnLookup(df: DataFrame, col: String): Column = + safeColumnLookupOpt(df, col).getOrElse { + throw new VizierException(s"Expected to find $col in ${df.columns.mkString(", ")}") + } + + def safeColumnLookupOpt(df: DataFrame, col: String): Option[Column] = + safeOutputLookupOpt(df, col) + .map { new Column(_) } + + def safeOutputLookup(df: DataFrame, col: String): NamedExpression = + safeOutputLookupOpt(df, col).getOrElse { + throw new VizierException(s"Expected to find $col in ${df.columns.mkString(", ")}") + } + + def safeOutputLookupOpt(df: DataFrame, col: String): Option[NamedExpression] = + df.queryExecution.logical.output + .find { _.name == col } + +} diff --git a/vizier/backend/src/info/vizierdb/spark/InitSpark.scala b/vizier/backend/src/info/vizierdb/spark/InitSpark.scala index ac977a8c..d4e20302 100644 --- a/vizier/backend/src/info/vizierdb/spark/InitSpark.scala +++ b/vizier/backend/src/info/vizierdb/spark/InitSpark.scala @@ -85,10 +85,14 @@ object InitSpark // Force materialization session.sharedState.externalCatalog - // Reset old classloader - Thread.currentThread().setContextClassLoader(originalClassloader) - - // end workaround + // TODO: In principle, we should be able to avoid the workaround above by + // adding the Vizier URL to the session.sharedState.jarClassLoader (which is, + // by design, mutable). + + // Since plugins are making use of it, we're going to make sure we use Spark's + // classloader as the canonical classloader moving forward. + Thread.currentThread().setContextClassLoader(session.sharedState.jarClassLoader) + Vizier.mainClassLoader = session.sharedState.jarClassLoader return session } diff --git a/vizier/backend/src/info/vizierdb/spark/MaterializeConstructor.scala b/vizier/backend/src/info/vizierdb/spark/MaterializeConstructor.scala index e591fa40..ad80909f 100644 --- a/vizier/backend/src/info/vizierdb/spark/MaterializeConstructor.scala +++ b/vizier/backend/src/info/vizierdb/spark/MaterializeConstructor.scala @@ -48,7 +48,7 @@ case class MaterializeConstructor( for((option, value) <- options){ parser = parser.option(option, value) } - val materialized = Filestore.getRelative(projectId = projectId, artifactId = artifactId) + val materialized = Filestore.getAbsolute(projectId = projectId, artifactId = artifactId) var df = parser.load(materialized.toString) // println(absoluteUrl) diff --git a/vizier/backend/src/info/vizierdb/spark/SafeExport.scala b/vizier/backend/src/info/vizierdb/spark/SafeExport.scala index 2a8b77f0..d3241554 100644 --- a/vizier/backend/src/info/vizierdb/spark/SafeExport.scala +++ b/vizier/backend/src/info/vizierdb/spark/SafeExport.scala @@ -20,6 +20,8 @@ import org.apache.spark.sql.sedona_sql.UDT.GeometryUDT import org.apache.spark.sql.sedona_sql.expressions.ST_AsText import org.apache.spark.sql.Column import org.mimirdb.caveats.implicits._ +import org.apache.spark.sql.functions.base64 +import org.apache.spark.sql.types.BinaryType /** * Certain column types (most notably UDTs) are not safe for export through @@ -36,7 +38,10 @@ object SafeExport column.dataType match { case t:UserDefinedType[_] if t.isInstanceOf[GeometryUDT] => - new Column(ST_AsText(Seq(base.expr))) + new Column(ST_AsText(Seq(base.expr))) as column.name + + case BinaryType => + base64(base) as column.name case _ => base diff --git a/vizier/backend/src/info/vizierdb/spark/SparkPrimitive.scala b/vizier/backend/src/info/vizierdb/spark/SparkPrimitive.scala index cf895172..48212fb2 100644 --- a/vizier/backend/src/info/vizierdb/spark/SparkPrimitive.scala +++ b/vizier/backend/src/info/vizierdb/spark/SparkPrimitive.scala @@ -46,6 +46,8 @@ import info.vizierdb.VizierException import org.apache.spark.ml.linalg import info.vizierdb.serialized.MLVector import info.vizierdb.serializers.mlvectorFormat +import info.vizierdb.util.JsonUtils +import org.apache.spark.sql.catalyst.expressions.UnsafeArrayData object SparkPrimitive extends Object @@ -150,7 +152,7 @@ object SparkPrimitive case (_, null) => JsNull case (StringType, _) => JsString(k.toString) case (BinaryType, _) => JsString(base64Encode(k.asInstanceOf[Array[Byte]])) - case (_:UserDefinedType[_], _) => + case (ut:UserDefinedType[_], _) => { // GeometryUDT is broken: https://issues.apache.org/jira/browse/SEDONA-89?filter=-2 // so we need to do a manual comparison here. @@ -174,6 +176,8 @@ object SparkPrimitive MLVector(false, 0, Seq(), values) } ) + } else if(!ut.sqlType.isInstanceOf[UserDefinedType[_]]){ + encode(ut.asInstanceOf[UserDefinedType[Any]].serialize(k), ut.sqlType) } else { throw new VizierException(s"Unsupported UDT: $t (${t.getClass().getName()}") } @@ -187,14 +191,33 @@ object SparkPrimitive "days" -> k.asInstanceOf[CalendarInterval].days, "microseconds" -> k.asInstanceOf[CalendarInterval].microseconds ) + case (DoubleType,_) if k.asInstanceOf[Double].isInfinite + => JsString( (if(k.asInstanceOf[Double] < 0){ "-" } else { "" }) + "infinity" ) case (DoubleType,_) => JsNumber(k.asInstanceOf[Double]) + case (FloatType,_) if k.asInstanceOf[Float].isInfinite + => JsString( (if(k.asInstanceOf[Float] < 0){ "-" } else { "" }) + "infinity" ) case (FloatType,_) => JsNumber(k.asInstanceOf[Float]) case (ByteType,_) => JsNumber(k.asInstanceOf[Byte]) case (IntegerType,_) => JsNumber(k.asInstanceOf[Integer]:Int) case (LongType,_) => JsNumber(k.asInstanceOf[Long]) case (ShortType,_) => JsNumber(k.asInstanceOf[Short]) case (NullType,_) => JsNull - case (ArrayType(element,_),_) => JsArray(k.asInstanceOf[Seq[_]].map { encode(_, element) }) + case (ArrayType(element,_),_) => + JsArray((k match { + case i:Iterable[_] => i + case u:UnsafeArrayData => { + element match { + case BooleanType => u.toBooleanArray() + case ByteType => u.toByteArray() + case ShortType => u.toShortArray() + case IntegerType => u.toIntArray() + case LongType => u.toLongArray() + case FloatType => u.toFloatArray() + case DoubleType => u.toDoubleArray() + } + }: Iterable[Any] + case a:ArrayData => a.array: Iterable[Any] + }).map { encode(_, element) }.toSeq) case (s:StructType,_) => encodeStruct(k, s) // Encode Geometry as WKT @@ -202,6 +225,14 @@ object SparkPrimitive case (DecimalType(),d:Decimal) => JsNumber(d.toBigDecimal) case (DecimalType(),d:java.math.BigDecimal) => JsNumber(d) + case (MapType(keyType, valueType, _), elems: Map[_, _]) => JsArray( + elems.map { case (k, v) => + Json.obj( + "key" -> encode(k, keyType), + "value" -> encode(v, valueType) + ) + }.toIndexedSeq + ) case _ if k != null => JsString(k.toString) case _ => JsNull } @@ -222,66 +253,88 @@ object SparkPrimitive // The following matching order is important logger.trace(s"DECODE $t: \n$k") - (k, t) match { - // Check for null first to avoid null pointer errors - case (JsNull, _) => null + try { + (k, t) match { + // Check for null first to avoid null pointer errors + case (JsNull, _) => null - // Check for string-based parsing before the cast-strings fallback - case (JsString(str), StringType) => str - case (JsNumber(num), StringType) => num.toString() - case (JsBoolean(b), StringType) => b.toString() + // Check for string-based parsing before the cast-strings fallback + case (JsString(str), StringType) => str + case (JsNumber(num), StringType) => num.toString() + case (JsBoolean(b), StringType) => b.toString() - // Formats that are encoded as strings, but use a non-string internal - // representation need to come next, before the cast-strings fallback - case (_, DateType) => decodeDate(k.as[String]) - case (_, TimestampType) => decodeTimestamp(k.as[String]) - case (_, BinaryType) => base64Decode(k.as[String]) - case (_, _:UserDefinedType[_]) => - { - // GeometryUDT is broken: https://issues.apache.org/jira/browse/SEDONA-89?filter=-2 - // so we need to do a manual comparison here. + // Formats that are encoded as strings, but use a non-string internal + // representation need to come next, before the cast-strings fallback + case (_, DateType) => decodeDate(k.as[String]) + case (_, TimestampType) => decodeTimestamp(k.as[String]) + case (_, BinaryType) => base64Decode(k.as[String]) + case (_, ut:UserDefinedType[_]) => + { + // GeometryUDT is broken: https://issues.apache.org/jira/browse/SEDONA-89?filter=-2 + // so we need to do a manual comparison here. - if(t.isInstanceOf[GeometryUDT]){ - geometryFormatMapper.readGeometry(k.as[String]) // parse as WKT - } else if(t.isInstanceOf[RasterUDT]){ - SedonaRasterSerde.deserialize(base64Decode(k.as[String])) - } else if(t.isInstanceOf[ImageUDT]){ - ImageUDT.deserialize(base64Decode(k.as[String])) - } else if(t.getClass().getName() == "org.apache.spark.ml.linalg.VectorUDT" - || t.getClass().getName() == "org.apache.spark.mllib.linalg.VectorUDT") { - val v = k.as[MLVector] - if(v.sparse){ - new linalg.SparseVector(v.size, v.indices.toArray, v.values.toArray) + if(t.isInstanceOf[GeometryUDT]){ + geometryFormatMapper.readGeometry(k.as[String]) // parse as WKT + } else if(t.isInstanceOf[RasterUDT]){ + SedonaRasterSerde.deserialize(base64Decode(k.as[String])) + } else if(t.isInstanceOf[ImageUDT]){ + ImageUDT.deserialize(base64Decode(k.as[String])) + } else if(t.getClass().getName() == "org.apache.spark.ml.linalg.VectorUDT" + || t.getClass().getName() == "org.apache.spark.mllib.linalg.VectorUDT") { + val v = k.as[MLVector] + if(v.sparse){ + new linalg.SparseVector(v.size, v.indices.toArray, v.values.toArray) + } else { + new linalg.DenseVector(v.values.toArray) + } + } else if(!ut.sqlType.isInstanceOf[UserDefinedType[_]]) { + ut.deserialize(decode(k, ut.sqlType)) } else { - new linalg.DenseVector(v.values.toArray) + throw new VizierException(s"Unsupported UDT: $t (${t.getClass().getName}") } - } else { - throw new VizierException(s"Unsupported UDT: $t (${t.getClass().getName}") } - } - // Now that we've gotten through all String types, check if we still have - // a string and fall back to string parsing if so. - case (_:JsString, _) if castStrings => Cast(Literal(k.as[String]), t).eval() + // Now that we've gotten through all String types, check if we still have + // a string and fall back to string parsing if so. + case (_:JsString, _) if castStrings => Cast(Literal(k.as[String]), t).eval() - // Finally, types with native Json parsers. These can come in any order - case (_, BooleanType) => k.as[Boolean] - case (_, CalendarIntervalType) => { - val fields = k.as[Map[String,JsValue]] - new CalendarInterval(fields("months").as[Int], fields("days").as[Int], fields("microseconds").as[Int]) + // Finally, types with native Json parsers. These can come in any order + case (_, BooleanType) => k.as[Boolean] + case (_, CalendarIntervalType) => { + val fields = k.as[Map[String,JsValue]] + new CalendarInterval(fields("months").as[Int], fields("days").as[Int], fields("microseconds").as[Int]) + } + case (JsString("infinity"), DoubleType) => Double.PositiveInfinity + case (JsString("-infinity"), DoubleType) => Double.NegativeInfinity + case (_, DoubleType) => k.as[Double] + case (JsString("infinity"), FloatType) => Float.PositiveInfinity + case (JsString("-infinity"), FloatType) => Float.NegativeInfinity + case (_, FloatType) => k.as[Float] + case (_, ByteType) => k.as[Byte] + case (_, IntegerType) => k.as[Int]:Integer + case (_, LongType) => k.as[Long] + case (_, ShortType) => k.as[Short] + case (_, DecimalType()) => k.as[java.math.BigDecimal] + case (_, NullType) => JsNull + case (_, ArrayType(element,_)) => ArraySeq(k.as[Seq[JsValue]].map { decode(_, element) }:_*) + case (_, s:StructType) => decodeStruct(k, s, castStrings = castStrings) + case (JsObject(elems), MapType(keyType, valueType, _)) => + elems.map { case (key, value) => + ( decode(JsString(key), keyType, castStrings), + decode(value, valueType, castStrings) + ) }.toMap + case (JsArray(elems), MapType(keyType, valueType, _)) => + elems.map { arr => + val fields = arr.as[Map[String, JsValue]] + ( decode(fields("key"), keyType, castStrings), + decode(fields("value"), valueType, castStrings) + ) }.toMap + case (_, _:MapType) => throw new JsResultException(Seq()) + case _ => throw new IllegalArgumentException(s"Unsupported type for decode: $t; ${t.getClass()}") } - case (_, DoubleType) => k.as[Double] - case (_, FloatType) => k.as[Float] - case (_, ByteType) => k.as[Byte] - case (_, IntegerType) => k.as[Int]:Integer - case (_, LongType) => k.as[Long] - case (_, ShortType) => k.as[Short] - case (_, DecimalType()) => k.as[java.math.BigDecimal] - case (_, NullType) => JsNull - case (_, ArrayType(element,_)) => ArraySeq(k.as[Seq[JsValue]].map { decode(_, element) }:_*) - case (_, s:StructType) => decodeStruct(k, s, castStrings = castStrings) - case _ => throw new IllegalArgumentException(s"Unsupported type for decode: $t; ${t.getClass()}") - } + } catch { + case e: JsResultException => + throw new VizierException(s"Failed to decode $k as a $t (cast strings = $castStrings): ${JsonUtils.prettyJsonParseError(e).mkString("; ")}") } } implicit val dataTypeFormat = SparkSchema.dataTypeFormat diff --git a/vizier/backend/src/info/vizierdb/spark/SparkSchema.scala b/vizier/backend/src/info/vizierdb/spark/SparkSchema.scala index de1ce108..7a22e804 100644 --- a/vizier/backend/src/info/vizierdb/spark/SparkSchema.scala +++ b/vizier/backend/src/info/vizierdb/spark/SparkSchema.scala @@ -23,6 +23,7 @@ import org.apache.spark.sql.types.UDTRegistration import info.vizierdb.spark.udt.ImageUDT import org.apache.spark.mllib.linalg.VectorUDT import info.vizierdb.util.StringUtils +import info.vizierdb.Vizier object SparkSchema { def apply(df: DataFrame): Seq[StructField] = @@ -60,6 +61,12 @@ object SparkSchema { field.name -> writes(field.dataType) }.toMap ) + case MapType(keyType, valueType, containsNulls) => + JsString("map:" + Json.obj( + "key" -> writes(keyType), + "value" -> writes(valueType), + "nulls" -> containsNulls + ).toString) case _ => JsString(encodeType(d)) } } @@ -67,7 +74,14 @@ object SparkSchema { lazy val vectorSingleton = new VectorUDT + def loadUserDefinedType(fullyQualifiedName: String): UserDefinedType[_] = + { + val clazz = Class.forName(fullyQualifiedName, true, Vizier.mainClassLoader) + clazz.newInstance().asInstanceOf[UserDefinedType[_]] + } + def decodeType(t: String): DataType = + { t match { case "varchar" => StringType case "int" => IntegerType @@ -81,13 +95,26 @@ object SparkSchema { Json.parse(t).as[DataType] case _ if t.startsWith("array:") => ArrayType(decodeType(t.substring(6))) + case _ if t.startsWith("udt:") => + loadUserDefinedType(t.substring(4)) + case _ if t.startsWith("map:") => + { + val map = Json.parse(t.substring(4)) + MapType( + (map \ "key").as[DataType], + (map \ "value").as[DataType], + (map \ "nulls").as[Boolean] + ) + } case _ => DataType.fromJson("\""+t+"\"") } + } def encodeType(t: DataType): String = + { t match { - case (_:ArrayType) | (_:StructType) => Json.toJson(t).toString + case (_:ArrayType) | (_:StructType) | (_:MapType) => Json.toJson(t).toString case DoubleType => "real" case IntegerType => "int" case BinaryType => "binary" @@ -98,9 +125,18 @@ object SparkSchema { case _ if t.isInstanceOf[RasterUDT] => "raster" case _ if t.isInstanceOf[VectorUDT] => "vector" case _ if t.isInstanceOf[ImageUDT] => "image/png" + case _ if t.isInstanceOf[UserDefinedType[_]] => + { + // TODO: We need cleaner UDT handling. Convention in most UDT-based systems is to + // adopt a UDT object with the same name as the actual UDT. Drop down to the base + // UDT if we see this + var udtName = t.getClass().getCanonicalName() + if(udtName.endsWith("$")){ udtName = udtName.dropRight(1) } + /* return */ "udt:"+udtName + } case _ => t.typeName } - + } implicit val fieldFormat = Format[StructField]( new Reads[StructField] { diff --git a/vizier/backend/src/info/vizierdb/spark/rowids/AnnotateWithRowIDs.scala b/vizier/backend/src/info/vizierdb/spark/rowids/AnnotateWithRowIDs.scala index 279454fd..58ce0c36 100644 --- a/vizier/backend/src/info/vizierdb/spark/rowids/AnnotateWithRowIDs.scala +++ b/vizier/backend/src/info/vizierdb/spark/rowids/AnnotateWithRowIDs.scala @@ -441,6 +441,10 @@ class AnnotateWithRowIds( case Deduplicate(keys: Seq[Attribute], child: LogicalPlan) => passthrough(plan) + /*********************************************************/ + case AttachDistributedSequence(_, child: LogicalPlan) => + passthrough(plan) + /*********************************************************/ case leaf:LeafNode => { diff --git a/vizier/backend/src/info/vizierdb/spark/rowids/AnnotateWithSequenceNumber.scala b/vizier/backend/src/info/vizierdb/spark/rowids/AnnotateWithSequenceNumber.scala index 4cff1449..52f6b4e2 100644 --- a/vizier/backend/src/info/vizierdb/spark/rowids/AnnotateWithSequenceNumber.scala +++ b/vizier/backend/src/info/vizierdb/spark/rowids/AnnotateWithSequenceNumber.scala @@ -62,17 +62,18 @@ object AnnotateWithSequenceNumber } val annotatedPlan = - apply( - df.queryExecution.analyzed, - df.queryExecution.sparkSession, + AttachDistributedSequence( AttributeReference(attribute, LongType, false)(), - offset + df.queryExecution.logical ) - new DataFrame( - df.queryExecution.sparkSession, - annotatedPlan, - RowEncoder(StructType(df.schema.fields :+ FIELD_TYPE(attribute))) - ) + val ret = + new DataFrame( + df.queryExecution.sparkSession, + annotatedPlan, + RowEncoder(StructType(annotatedPlan.output.map { a => StructField(a.name, a.dataType) })) + ) + if(offset == 0){ return ret } + else { ??? } } def apply( diff --git a/vizier/backend/src/info/vizierdb/util/ClassLoaderUtils.scala b/vizier/backend/src/info/vizierdb/util/ClassLoaderUtils.scala index 20076fd6..85852722 100644 --- a/vizier/backend/src/info/vizierdb/util/ClassLoaderUtils.scala +++ b/vizier/backend/src/info/vizierdb/util/ClassLoaderUtils.scala @@ -16,7 +16,7 @@ package info.vizierdb.util object ClassLoaderUtils { - def withContextClassloader[T](classloader: ClassLoader)(f: => T): T = + def withContextClassLoader[T](classloader: ClassLoader)(f: => T): T = { val originalClassloader = Thread.currentThread().getContextClassLoader() Thread.currentThread().setContextClassLoader(classloader) diff --git a/vizier/backend/src/info/vizierdb/viztrails/RunningCell.scala b/vizier/backend/src/info/vizierdb/viztrails/RunningCell.scala index 14cf10f0..2339df98 100644 --- a/vizier/backend/src/info/vizierdb/viztrails/RunningCell.scala +++ b/vizier/backend/src/info/vizierdb/viztrails/RunningCell.scala @@ -80,7 +80,7 @@ class RunningCell( def exec(): Boolean = { - ClassLoaderUtils.withContextClassloader(workflowTask.classloader) { + ClassLoaderUtils.withContextClassLoader(workflowTask.classloader) { try { processSynchronously match { case _ if aborted.get => diff --git a/vizier/backend/src/info/vizierdb/viztrails/RunningWorkflow.scala b/vizier/backend/src/info/vizierdb/viztrails/RunningWorkflow.scala index 5db79247..bcfccf68 100644 --- a/vizier/backend/src/info/vizierdb/viztrails/RunningWorkflow.scala +++ b/vizier/backend/src/info/vizierdb/viztrails/RunningWorkflow.scala @@ -62,7 +62,7 @@ class RunningWorkflow(workflow: Workflow, val classloader: ClassLoader) def exec: Boolean = { - ClassLoaderUtils.withContextClassloader[Boolean](classloader){ + ClassLoaderUtils.withContextClassLoader[Boolean](classloader){ val ret = try { logger.info(s"Starting execution of Workflow ${workflow.id}") diff --git a/vizier/backend/src/info/vizierdb/viztrails/Scheduler.scala b/vizier/backend/src/info/vizierdb/viztrails/Scheduler.scala index 91df58f5..d526fe20 100644 --- a/vizier/backend/src/info/vizierdb/viztrails/Scheduler.scala +++ b/vizier/backend/src/info/vizierdb/viztrails/Scheduler.scala @@ -50,7 +50,7 @@ object Scheduler logger.trace(s"Allocating execution manager for ${workflow.id}") val executor = new RunningWorkflow( workflow, - Thread.currentThread().getContextClassLoader() + Vizier.mainClassLoader ) runningWorkflows.put(workflow.id, executor) logger.trace(s"Starting execution manager for ${workflow.id}") @@ -138,5 +138,20 @@ object Scheduler cleanup(workflowId) } } + + /** + * Block until all running workflows have quiesced + */ + def joinAll() + { + var nextWorkflowId = + this.synchronized { runningWorkflows.keys.headOption } + while(!nextWorkflowId.isEmpty) + { + joinWorkflow(nextWorkflowId.get, failIfNotRunning = false) + nextWorkflowId = + this.synchronized { runningWorkflows.keys.headOption } + } + } } diff --git a/vizier/backend/test/src/info/vizierdb/PluginTest.scala b/vizier/backend/test/src/info/vizierdb/PluginTest.scala new file mode 100644 index 00000000..cf45a0f3 --- /dev/null +++ b/vizier/backend/test/src/info/vizierdb/PluginTest.scala @@ -0,0 +1,47 @@ +/* -- copyright-header:v2 -- + * Copyright (C) 2017-2021 University at Buffalo, + * New York University, + * Illinois Institute of Technology. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * -- copyright-header:end -- */ +package info.vizierdb + +import org.specs2.mutable.Specification +import org.specs2.specification.BeforeAll +import info.vizierdb.test.SharedTestResources +import java.io.File +import info.vizierdb.util.ClassLoaderUtils +import org.apache.spark.sql.functions.udf + +class PluginTest extends Specification with BeforeAll +{ + def beforeAll(): Unit = + { + SharedTestResources.init() + } + + "Load Class Jars" >> + { + val jar = new File("plugins/mimir-pip.jar") + + val plugin = Plugin.load(jar) + + ClassLoaderUtils.withContextClassLoader(Vizier.mainClassLoader) { + val df = Vizier.sparkSession.sql(""" + SELECT gaussian(cast(5.0 as double), cast(1.0 as double)) as variable + """) + df.show() + } + + ok + } + +} \ No newline at end of file diff --git a/vizier/backend/test/src/info/vizierdb/test/SharedTestResources.scala b/vizier/backend/test/src/info/vizierdb/test/SharedTestResources.scala index ae946bc7..4042e049 100644 --- a/vizier/backend/test/src/info/vizierdb/test/SharedTestResources.scala +++ b/vizier/backend/test/src/info/vizierdb/test/SharedTestResources.scala @@ -22,6 +22,7 @@ import java.nio.file.{ Files, Paths } import scala.sys.process.Process import info.vizierdb.commands.mimir.geocoder.Geocode import info.vizierdb.commands.mimir.geocoder.TestCaseGeocoder +import info.vizierdb.catalog.CatalogDB object SharedTestResources { @@ -66,6 +67,7 @@ object SharedTestResources // Reset the database Schema.drop Schema.initialize + CatalogDB.initialize() // And initialize testing DummyCommands.init diff --git a/vizier/resources/pycell/client.py b/vizier/resources/pycell/client.py index 3dc0afe5..98e02d97 100644 --- a/vizier/resources/pycell/client.py +++ b/vizier/resources/pycell/client.py @@ -285,7 +285,7 @@ def create_dataset(self, name: str, dataset: DatasetClient, backend_options: List[Tuple[str, str]] = [], - use_deltas: bool = True + use_deltas: bool = False ) -> None: """Save a new dataset in Vizier with given name. @@ -320,7 +320,7 @@ def create_dataset(self, def update_dataset(self, name: str, dataset: DatasetClient, - use_deltas: bool = True + use_deltas: bool = False ) -> DatasetClient: """Update a given dataset. @@ -516,6 +516,33 @@ def pycell_open(self, print("***File access may not be reproducible because filesystem resources are transient***") return open(file, mode, buffering, encoding, errors, newline, closefd, opener) + def run_script(self, + script: str, + inputs: Dict[str, str] = {}, + outputs: Dict[str, str] = {}, + passthrough_messages: bool = False + ) -> None: + response = self.vizier_request("vizier_script", + script=script, + inputs=inputs, + outputs=outputs, + quiet=not passthrough_messages, + has_response=True, + ) + assert response is not None + for key in response["outputs"]: + self.invalidate_cache(key) + self.artifacts[key] = Artifact( + name=key, + artifact_type=response["outputs"][key]["type"], + artifact_id=response["outputs"][key]["artifactId"], + mime_type=response["outputs"][key]["mimeType"] + ) + + def invalidate_cache(self, artifact: str) -> None: + if artifact in self.datasets: + del self.datasets[artifact] + def show(self, value: Any, mime_type: Optional[str] = None, @@ -544,10 +571,16 @@ def show(self, vizier_bokeh_show(value, None, None) return elif issubclass(type(value), MatplotlibFigure): - value = vizier_matplotlib_render(value) + import matplotlib + fig = value + value = vizier_matplotlib_render(fig) + matplotlib.pyplot.close(fig) mime_type = OUTPUT_HTML elif issubclass(type(value), MatplotlibAxes): + import matplotlib + fig = value.get_figure() value = vizier_matplotlib_render(value.get_figure()) + matplotlib.pyplot.close(fig) mime_type = OUTPUT_HTML elif issubclass(type(value), list): for i in value: diff --git a/vizier/resources/pycell/dataset.py b/vizier/resources/pycell/dataset.py index ecc27ab8..0fb87503 100644 --- a/vizier/resources/pycell/dataset.py +++ b/vizier/resources/pycell/dataset.py @@ -21,6 +21,7 @@ import datetime import io +import math from bokeh.models.sources import ColumnDataSource # type: ignore[import] """Identifier for column data types. By now the following data types are @@ -705,10 +706,12 @@ def import_to_native_type(value: Any, data_type: str) -> Any: import base64 with io.BytesIO(base64.b64decode(value.encode('utf-8'))) as f: return Image.open(f) - elif data_type in ["string", "varchar", "int", "float", "double", "long", "real"]: + elif data_type in ["double", "float", "real"]: + return float(value) + elif data_type in ["string", "varchar", "int", "long"]: return value else: - print("Unknown type: "+data_type) + #print("Unknown type: "+data_type) return value @@ -734,32 +737,49 @@ def export_from_native_type(value: Any, data_type: str, context="the value") -> return value elif data_type == DATATYPE_DATETIME or data_type == DATATYPE_DATE: return value.isoformat() + elif data_type in ["double", "float", "real"]: + if value == math.inf: + return "infinity" + elif value == -math.inf: + return "-infinity" + else: + return value else: return value -TYPE_MAPPINGS = [ - (datetime.date, [DATATYPE_DATE]), - (datetime.datetime, [DATATYPE_DATETIME]), - (int, [DATATYPE_INT, DATATYPE_SHORT, DATATYPE_LONG]), - (float, [DATATYPE_REAL]), - (str, [DATATYPE_VARCHAR]), - (bytes, [DATATYPE_BINARY]), -] - -PYTHON_TO_VIZIER_TYPES = {p: tlist[0] for (p, tlist) in TYPE_MAPPINGS} -VIZIER_TO_PYTHON_TYPES = {t: p for (p, tlist) in TYPE_MAPPINGS for t in tlist} +PYTHON_TO_VIZIER_TYPES = { + datetime.date: [DATATYPE_DATE], + datetime.datetime: [DATATYPE_DATETIME], + int: [DATATYPE_INT, DATATYPE_SHORT, DATATYPE_LONG, DATATYPE_REAL], + float: [DATATYPE_REAL], + str: [DATATYPE_VARCHAR], + bytes: [DATATYPE_BINARY], +} +VIZIER_TYPES = set( + v + for p in PYTHON_TO_VIZIER_TYPES + for v in PYTHON_TO_VIZIER_TYPES[p] +) +VIZIER_TO_PYTHON_TYPES = { + v: [ + p + for p in PYTHON_TO_VIZIER_TYPES + if v in PYTHON_TO_VIZIER_TYPES[p] + ] + for v in VIZIER_TYPES +} def assert_type(value: Any, data_type: str, context="the value") -> Any: if value is None: return value elif data_type in VIZIER_TO_PYTHON_TYPES: - python_type = VIZIER_TO_PYTHON_TYPES[data_type] - if isinstance(value, python_type): - return value - else: - raise ValueError(f"{context} ({value}) is a {type(value)} but should be a {data_type}") + valid_python_types = VIZIER_TO_PYTHON_TYPES[data_type] + for python_type in valid_python_types: + if isinstance(value, python_type): + return value + raise ValueError(f"{context} ({value}) is a {type(value)} but should be a {data_type}") # Special-case handling for Geometry types elif data_type == DATATYPE_IMAGE: from PIL.Image import Image diff --git a/vizier/resources/pycell/file.py b/vizier/resources/pycell/file.py index 00e8fc27..15d91810 100644 --- a/vizier/resources/pycell/file.py +++ b/vizier/resources/pycell/file.py @@ -58,9 +58,15 @@ def __enter__(self): return self.io - def __exit__(self, type, value, traceback): + def __exit__(self, type, value, tb): + import traceback + self.io.flush() self.io.close() self.io = None + if tb is not None: + print(tb) + traceback.print_tb(tb) + raise Exception("Error while writing file") return self def _repr_html_(self) -> str: diff --git a/vizier/resources/vizier-routes.txt b/vizier/resources/vizier-routes.txt index c28d843a..a1e2f1fa 100644 --- a/vizier/resources/vizier-routes.txt +++ b/vizier/resources/vizier-routes.txt @@ -60,6 +60,12 @@ /projects/{projectId:long}/files POST artifact upload CreateFile serialized.ArtifactSummary file:FILE /projects/{projectId:long}/files/{artifactId:long} GET artifact download GetArtifact.File FILE[*] _ /projects/{projectId:long}/files/{artifactId:long}/{tail:subpath} GET artifact download_subfile GetArtifact.File FILE[*] _ +/scripts GET script list_scripts ListScripts serialized.VizierScriptList _ +/scripts PUT script create_script CreateScript serialized.VizierScript name:String;projectId:String;branchId:String;workflowId:String;modules:Seq[serialized.VizierScriptModule] +/scripts/by_id/{scriptId:string}/versions/{version:long} GET script get_script_by_id_ver GetScript serialized.VizierScript _ +/scripts/by_id/{scriptId:string}/versions/head GET script get_script_by_id GetScript serialized.VizierScript _ +/scripts/by_id/{scriptId:string} PUT script update_script CreateScript serialized.VizierScript name:String;projectId:String;branchId:String;workflowId:String;modules:Seq[serialized.VizierScriptModule] +/scripts/by_id/{scriptId:string} DELETE script delete_script DeleteScript Unit _ /published/{artifactName:string} GET published download_published GetPublishedArtifact serialized.ArtifactDescription _ /tasks GET service list ListTasks Seq[serialized.WorkflowSummary] _ /reload POST service reload Reload Unit _ diff --git a/vizier/shared/resources/swagger/.swagger-codegen-ignore b/vizier/shared/resources/swagger/.swagger-codegen-ignore deleted file mode 100644 index c5fa491b..00000000 --- a/vizier/shared/resources/swagger/.swagger-codegen-ignore +++ /dev/null @@ -1,23 +0,0 @@ -# Swagger Codegen Ignore -# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen - -# Use this file to prevent files from being overwritten by the generator. -# The patterns follow closely to .gitignore or .dockerignore. - -# As an example, the C# client generator defines ApiClient.cs. -# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: -#ApiClient.cs - -# You can match any string of characters against a directory, file or extension with a single asterisk (*): -#foo/*/qux -# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux - -# You can recursively match patterns against a directory, file or extension with a double asterisk (**): -#foo/**/qux -# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux - -# You can also negate patterns with an exclamation (!). -# For example, you can ignore all files in a docs folder with the file extension .md: -#docs/*.md -# Then explicitly reverse the ignore rule for a single file: -#!docs/README.md diff --git a/vizier/shared/resources/swagger/.swagger-codegen/VERSION b/vizier/shared/resources/swagger/.swagger-codegen/VERSION deleted file mode 100644 index d32233fe..00000000 --- a/vizier/shared/resources/swagger/.swagger-codegen/VERSION +++ /dev/null @@ -1 +0,0 @@ -2.4.27 \ No newline at end of file diff --git a/vizier/shared/resources/swagger/index.html b/vizier/shared/resources/swagger/index.html deleted file mode 100644 index 755a115b..00000000 --- a/vizier/shared/resources/swagger/index.html +++ /dev/null @@ -1,24330 +0,0 @@ - - - - - Vizier DB - - - - - - - - - - - - - - - - - -
-
-
- -
-
-
-
-

Vizier DB

-
-
-
- -
-
-

Artifact

-
-
-
-

artifactCreateDataset

-

-
-
-
-

-

-

-
-
/projects/{projectId}/datasets
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/datasets"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ArtifactApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Body_14 body = ; // Body_14 | 
-        try {
-            apiInstance.artifactCreateDataset(projectId, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactCreateDataset");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ArtifactApi;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Body_14 body = ; // Body_14 | 
-        try {
-            apiInstance.artifactCreateDataset(projectId, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactCreateDataset");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Body_14 *body = ; // 
-
-ArtifactApi *apiInstance = [[ArtifactApi alloc] init];
-
-[apiInstance artifactCreateDatasetWith:projectId
-    body:body
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ArtifactApi()
-
-var projectId = 56; // {Integer} 
-
-var body = ; // {Body_14} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.artifactCreateDataset(projectId, body, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class artifactCreateDatasetExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ArtifactApi();
-            var projectId = 56;  // Integer | 
-            var body = new Body_14(); // Body_14 | 
-
-            try
-            {
-                apiInstance.artifactCreateDataset(projectId, body);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ArtifactApi.artifactCreateDataset: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ArtifactApi();
-$projectId = 56; // Integer | 
-$body = ; // Body_14 | 
-
-try {
-    $api_instance->artifactCreateDataset($projectId, $body);
-} catch (Exception $e) {
-    echo 'Exception when calling ArtifactApi->artifactCreateDataset: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ArtifactApi;
-
-my $api_instance = WWW::SwaggerClient::ArtifactApi->new();
-my $projectId = 56; # Integer | 
-my $body = WWW::SwaggerClient::Object::Body_14->new(); # Body_14 | 
-
-eval { 
-    $api_instance->artifactCreateDataset(projectId => $projectId, body => $body);
-};
-if ($@) {
-    warn "Exception when calling ArtifactApi->artifactCreateDataset: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ArtifactApi()
-projectId = 56 # Integer | 
-body =  # Body_14 | 
-
-try: 
-    api_instance.artifact_create_dataset(projectId, body)
-except ApiException as e:
-    print("Exception when calling ArtifactApi->artifactCreateDataset: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - -
Body parameters
- - - - - - - - - -
NameDescription
body * - - - -
-
- - - -

Responses

-
-
-
-
-
-
-

artifactDownload

-

-
-
-
-

-

-

-
-
/projects/{projectId}/files/{artifactId}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/files/{artifactId}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ArtifactApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        try {
-            apiInstance.artifactDownload(projectId, artifactId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactDownload");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ArtifactApi;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        try {
-            apiInstance.artifactDownload(projectId, artifactId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactDownload");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *artifactId = 56; // 
-
-ArtifactApi *apiInstance = [[ArtifactApi alloc] init];
-
-[apiInstance artifactDownloadWith:projectId
-    artifactId:artifactId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ArtifactApi()
-
-var projectId = 56; // {Integer} 
-
-var artifactId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.artifactDownload(projectId, artifactId, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class artifactDownloadExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ArtifactApi();
-            var projectId = 56;  // Integer | 
-            var artifactId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.artifactDownload(projectId, artifactId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ArtifactApi.artifactDownload: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ArtifactApi();
-$projectId = 56; // Integer | 
-$artifactId = 56; // Integer | 
-
-try {
-    $api_instance->artifactDownload($projectId, $artifactId);
-} catch (Exception $e) {
-    echo 'Exception when calling ArtifactApi->artifactDownload: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ArtifactApi;
-
-my $api_instance = WWW::SwaggerClient::ArtifactApi->new();
-my $projectId = 56; # Integer | 
-my $artifactId = 56; # Integer | 
-
-eval { 
-    $api_instance->artifactDownload(projectId => $projectId, artifactId => $artifactId);
-};
-if ($@) {
-    warn "Exception when calling ArtifactApi->artifactDownload: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ArtifactApi()
-projectId = 56 # Integer | 
-artifactId = 56 # Integer | 
-
-try: 
-    api_instance.artifact_download(projectId, artifactId)
-except ApiException as e:
-    print("Exception when calling ArtifactApi->artifactDownload: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
artifactId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

artifactDownloadSubfile

-

-
-
-
-

-

-

-
-
/projects/{projectId}/files/{artifactId}/{tail}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/files/{artifactId}/{tail}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ArtifactApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        String tail = tail_example; // String | 
-        try {
-            apiInstance.artifactDownloadSubfile(projectId, artifactId, tail);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactDownloadSubfile");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ArtifactApi;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        String tail = tail_example; // String | 
-        try {
-            apiInstance.artifactDownloadSubfile(projectId, artifactId, tail);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactDownloadSubfile");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *artifactId = 56; // 
-String *tail = tail_example; // 
-
-ArtifactApi *apiInstance = [[ArtifactApi alloc] init];
-
-[apiInstance artifactDownloadSubfileWith:projectId
-    artifactId:artifactId
-    tail:tail
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ArtifactApi()
-
-var projectId = 56; // {Integer} 
-
-var artifactId = 56; // {Integer} 
-
-var tail = tail_example; // {String} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.artifactDownloadSubfile(projectId, artifactId, tail, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class artifactDownloadSubfileExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ArtifactApi();
-            var projectId = 56;  // Integer | 
-            var artifactId = 56;  // Integer | 
-            var tail = tail_example;  // String | 
-
-            try
-            {
-                apiInstance.artifactDownloadSubfile(projectId, artifactId, tail);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ArtifactApi.artifactDownloadSubfile: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ArtifactApi();
-$projectId = 56; // Integer | 
-$artifactId = 56; // Integer | 
-$tail = tail_example; // String | 
-
-try {
-    $api_instance->artifactDownloadSubfile($projectId, $artifactId, $tail);
-} catch (Exception $e) {
-    echo 'Exception when calling ArtifactApi->artifactDownloadSubfile: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ArtifactApi;
-
-my $api_instance = WWW::SwaggerClient::ArtifactApi->new();
-my $projectId = 56; # Integer | 
-my $artifactId = 56; # Integer | 
-my $tail = tail_example; # String | 
-
-eval { 
-    $api_instance->artifactDownloadSubfile(projectId => $projectId, artifactId => $artifactId, tail => $tail);
-};
-if ($@) {
-    warn "Exception when calling ArtifactApi->artifactDownloadSubfile: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ArtifactApi()
-projectId = 56 # Integer | 
-artifactId = 56 # Integer | 
-tail = tail_example # String | 
-
-try: 
-    api_instance.artifact_download_subfile(projectId, artifactId, tail)
-except ApiException as e:
-    print("Exception when calling ArtifactApi->artifactDownloadSubfile: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
artifactId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
tail* - - -
-
-
- - String - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

artifactDsGetAnnotations

-

-
-
-
-

-

-

-
-
/projects/{projectId}/datasets/{artifactId}/annotations
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/datasets/{artifactId}/annotations?column=&row="
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ArtifactApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        Integer column = 56; // Integer | 
-        String row = row_example; // String | 
-        try {
-            apiInstance.artifactDsGetAnnotations(projectId, artifactId, column, row);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactDsGetAnnotations");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ArtifactApi;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        Integer column = 56; // Integer | 
-        String row = row_example; // String | 
-        try {
-            apiInstance.artifactDsGetAnnotations(projectId, artifactId, column, row);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactDsGetAnnotations");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *artifactId = 56; // 
-Integer *column = 56; //  (optional)
-String *row = row_example; //  (optional)
-
-ArtifactApi *apiInstance = [[ArtifactApi alloc] init];
-
-[apiInstance artifactDsGetAnnotationsWith:projectId
-    artifactId:artifactId
-    column:column
-    row:row
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ArtifactApi()
-
-var projectId = 56; // {Integer} 
-
-var artifactId = 56; // {Integer} 
-
-var opts = { 
-  'column': 56, // {Integer} 
-  'row': row_example // {String} 
-};
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.artifactDsGetAnnotations(projectId, artifactId, opts, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class artifactDsGetAnnotationsExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ArtifactApi();
-            var projectId = 56;  // Integer | 
-            var artifactId = 56;  // Integer | 
-            var column = 56;  // Integer |  (optional) 
-            var row = row_example;  // String |  (optional) 
-
-            try
-            {
-                apiInstance.artifactDsGetAnnotations(projectId, artifactId, column, row);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ArtifactApi.artifactDsGetAnnotations: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ArtifactApi();
-$projectId = 56; // Integer | 
-$artifactId = 56; // Integer | 
-$column = 56; // Integer | 
-$row = row_example; // String | 
-
-try {
-    $api_instance->artifactDsGetAnnotations($projectId, $artifactId, $column, $row);
-} catch (Exception $e) {
-    echo 'Exception when calling ArtifactApi->artifactDsGetAnnotations: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ArtifactApi;
-
-my $api_instance = WWW::SwaggerClient::ArtifactApi->new();
-my $projectId = 56; # Integer | 
-my $artifactId = 56; # Integer | 
-my $column = 56; # Integer | 
-my $row = row_example; # String | 
-
-eval { 
-    $api_instance->artifactDsGetAnnotations(projectId => $projectId, artifactId => $artifactId, column => $column, row => $row);
-};
-if ($@) {
-    warn "Exception when calling ArtifactApi->artifactDsGetAnnotations: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ArtifactApi()
-projectId = 56 # Integer | 
-artifactId = 56 # Integer | 
-column = 56 # Integer |  (optional)
-row = row_example # String |  (optional)
-
-try: 
-    api_instance.artifact_ds_get_annotations(projectId, artifactId, column=column, row=row)
-except ApiException as e:
-    print("Exception when calling ArtifactApi->artifactDsGetAnnotations: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
artifactId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - -
Query parameters
- - - - - - - - - - - - - -
NameDescription
column - - -
-
-
- - Integer - - -
-
-
-
row - - -
-
-
- - String - - -
-
-
-
- -

Responses

-
-
-
-
-
-
-

artifactDsGetCsv

-

-
-
-
-

-

-

-
-
/projects/{projectId}/datasets/{artifactId}/csv
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/datasets/{artifactId}/csv?name="
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ArtifactApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        String name = name_example; // String | 
-        try {
-            apiInstance.artifactDsGetCsv(projectId, artifactId, name);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactDsGetCsv");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ArtifactApi;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        String name = name_example; // String | 
-        try {
-            apiInstance.artifactDsGetCsv(projectId, artifactId, name);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactDsGetCsv");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *artifactId = 56; // 
-String *name = name_example; //  (optional)
-
-ArtifactApi *apiInstance = [[ArtifactApi alloc] init];
-
-[apiInstance artifactDsGetCsvWith:projectId
-    artifactId:artifactId
-    name:name
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ArtifactApi()
-
-var projectId = 56; // {Integer} 
-
-var artifactId = 56; // {Integer} 
-
-var opts = { 
-  'name': name_example // {String} 
-};
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.artifactDsGetCsv(projectId, artifactId, opts, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class artifactDsGetCsvExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ArtifactApi();
-            var projectId = 56;  // Integer | 
-            var artifactId = 56;  // Integer | 
-            var name = name_example;  // String |  (optional) 
-
-            try
-            {
-                apiInstance.artifactDsGetCsv(projectId, artifactId, name);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ArtifactApi.artifactDsGetCsv: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ArtifactApi();
-$projectId = 56; // Integer | 
-$artifactId = 56; // Integer | 
-$name = name_example; // String | 
-
-try {
-    $api_instance->artifactDsGetCsv($projectId, $artifactId, $name);
-} catch (Exception $e) {
-    echo 'Exception when calling ArtifactApi->artifactDsGetCsv: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ArtifactApi;
-
-my $api_instance = WWW::SwaggerClient::ArtifactApi->new();
-my $projectId = 56; # Integer | 
-my $artifactId = 56; # Integer | 
-my $name = name_example; # String | 
-
-eval { 
-    $api_instance->artifactDsGetCsv(projectId => $projectId, artifactId => $artifactId, name => $name);
-};
-if ($@) {
-    warn "Exception when calling ArtifactApi->artifactDsGetCsv: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ArtifactApi()
-projectId = 56 # Integer | 
-artifactId = 56 # Integer | 
-name = name_example # String |  (optional)
-
-try: 
-    api_instance.artifact_ds_get_csv(projectId, artifactId, name=name)
-except ApiException as e:
-    print("Exception when calling ArtifactApi->artifactDsGetCsv: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
artifactId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - -
Query parameters
- - - - - - - - - -
NameDescription
name - - -
-
-
- - String - - -
-
-
-
- -

Responses

-
-
-
-
-
-
-

artifactDsGetFile

-

-
-
-
-

-

-

-
-
/projects/{projectId}/datasets/{artifactId}/file
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/datasets/{artifactId}/file"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ArtifactApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        try {
-            apiInstance.artifactDsGetFile(projectId, artifactId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactDsGetFile");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ArtifactApi;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        try {
-            apiInstance.artifactDsGetFile(projectId, artifactId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactDsGetFile");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *artifactId = 56; // 
-
-ArtifactApi *apiInstance = [[ArtifactApi alloc] init];
-
-[apiInstance artifactDsGetFileWith:projectId
-    artifactId:artifactId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ArtifactApi()
-
-var projectId = 56; // {Integer} 
-
-var artifactId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.artifactDsGetFile(projectId, artifactId, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class artifactDsGetFileExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ArtifactApi();
-            var projectId = 56;  // Integer | 
-            var artifactId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.artifactDsGetFile(projectId, artifactId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ArtifactApi.artifactDsGetFile: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ArtifactApi();
-$projectId = 56; // Integer | 
-$artifactId = 56; // Integer | 
-
-try {
-    $api_instance->artifactDsGetFile($projectId, $artifactId);
-} catch (Exception $e) {
-    echo 'Exception when calling ArtifactApi->artifactDsGetFile: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ArtifactApi;
-
-my $api_instance = WWW::SwaggerClient::ArtifactApi->new();
-my $projectId = 56; # Integer | 
-my $artifactId = 56; # Integer | 
-
-eval { 
-    $api_instance->artifactDsGetFile(projectId => $projectId, artifactId => $artifactId);
-};
-if ($@) {
-    warn "Exception when calling ArtifactApi->artifactDsGetFile: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ArtifactApi()
-projectId = 56 # Integer | 
-artifactId = 56 # Integer | 
-
-try: 
-    api_instance.artifact_ds_get_file(projectId, artifactId)
-except ApiException as e:
-    print("Exception when calling ArtifactApi->artifactDsGetFile: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
artifactId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

artifactDsGetSummary

-

-
-
-
-

-

-

-
-
/projects/{projectId}/datasets/{artifactId}/descriptor
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/datasets/{artifactId}/descriptor"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ArtifactApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        try {
-            apiInstance.artifactDsGetSummary(projectId, artifactId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactDsGetSummary");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ArtifactApi;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        try {
-            apiInstance.artifactDsGetSummary(projectId, artifactId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactDsGetSummary");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *artifactId = 56; // 
-
-ArtifactApi *apiInstance = [[ArtifactApi alloc] init];
-
-[apiInstance artifactDsGetSummaryWith:projectId
-    artifactId:artifactId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ArtifactApi()
-
-var projectId = 56; // {Integer} 
-
-var artifactId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.artifactDsGetSummary(projectId, artifactId, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class artifactDsGetSummaryExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ArtifactApi();
-            var projectId = 56;  // Integer | 
-            var artifactId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.artifactDsGetSummary(projectId, artifactId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ArtifactApi.artifactDsGetSummary: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ArtifactApi();
-$projectId = 56; // Integer | 
-$artifactId = 56; // Integer | 
-
-try {
-    $api_instance->artifactDsGetSummary($projectId, $artifactId);
-} catch (Exception $e) {
-    echo 'Exception when calling ArtifactApi->artifactDsGetSummary: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ArtifactApi;
-
-my $api_instance = WWW::SwaggerClient::ArtifactApi->new();
-my $projectId = 56; # Integer | 
-my $artifactId = 56; # Integer | 
-
-eval { 
-    $api_instance->artifactDsGetSummary(projectId => $projectId, artifactId => $artifactId);
-};
-if ($@) {
-    warn "Exception when calling ArtifactApi->artifactDsGetSummary: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ArtifactApi()
-projectId = 56 # Integer | 
-artifactId = 56 # Integer | 
-
-try: 
-    api_instance.artifact_ds_get_summary(projectId, artifactId)
-except ApiException as e:
-    print("Exception when calling ArtifactApi->artifactDsGetSummary: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
artifactId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

artifactGet

-

-
-
-
-

-

-

-
-
/projects/{projectId}/artifacts/{artifactId}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/artifacts/{artifactId}?offset=&limit=&profile=&name="
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ArtifactApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        Integer offset = 56; // Integer | 
-        Integer limit = 56; // Integer | 
-        String profile = profile_example; // String | 
-        String name = name_example; // String | 
-        try {
-            apiInstance.artifactGet(projectId, artifactId, offset, limit, profile, name);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactGet");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ArtifactApi;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        Integer offset = 56; // Integer | 
-        Integer limit = 56; // Integer | 
-        String profile = profile_example; // String | 
-        String name = name_example; // String | 
-        try {
-            apiInstance.artifactGet(projectId, artifactId, offset, limit, profile, name);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactGet");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *artifactId = 56; // 
-Integer *offset = 56; //  (optional)
-Integer *limit = 56; //  (optional)
-String *profile = profile_example; //  (optional)
-String *name = name_example; //  (optional)
-
-ArtifactApi *apiInstance = [[ArtifactApi alloc] init];
-
-[apiInstance artifactGetWith:projectId
-    artifactId:artifactId
-    offset:offset
-    limit:limit
-    profile:profile
-    name:name
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ArtifactApi()
-
-var projectId = 56; // {Integer} 
-
-var artifactId = 56; // {Integer} 
-
-var opts = { 
-  'offset': 56, // {Integer} 
-  'limit': 56, // {Integer} 
-  'profile': profile_example, // {String} 
-  'name': name_example // {String} 
-};
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.artifactGet(projectId, artifactId, opts, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class artifactGetExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ArtifactApi();
-            var projectId = 56;  // Integer | 
-            var artifactId = 56;  // Integer | 
-            var offset = 56;  // Integer |  (optional) 
-            var limit = 56;  // Integer |  (optional) 
-            var profile = profile_example;  // String |  (optional) 
-            var name = name_example;  // String |  (optional) 
-
-            try
-            {
-                apiInstance.artifactGet(projectId, artifactId, offset, limit, profile, name);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ArtifactApi.artifactGet: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ArtifactApi();
-$projectId = 56; // Integer | 
-$artifactId = 56; // Integer | 
-$offset = 56; // Integer | 
-$limit = 56; // Integer | 
-$profile = profile_example; // String | 
-$name = name_example; // String | 
-
-try {
-    $api_instance->artifactGet($projectId, $artifactId, $offset, $limit, $profile, $name);
-} catch (Exception $e) {
-    echo 'Exception when calling ArtifactApi->artifactGet: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ArtifactApi;
-
-my $api_instance = WWW::SwaggerClient::ArtifactApi->new();
-my $projectId = 56; # Integer | 
-my $artifactId = 56; # Integer | 
-my $offset = 56; # Integer | 
-my $limit = 56; # Integer | 
-my $profile = profile_example; # String | 
-my $name = name_example; # String | 
-
-eval { 
-    $api_instance->artifactGet(projectId => $projectId, artifactId => $artifactId, offset => $offset, limit => $limit, profile => $profile, name => $name);
-};
-if ($@) {
-    warn "Exception when calling ArtifactApi->artifactGet: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ArtifactApi()
-projectId = 56 # Integer | 
-artifactId = 56 # Integer | 
-offset = 56 # Integer |  (optional)
-limit = 56 # Integer |  (optional)
-profile = profile_example # String |  (optional)
-name = name_example # String |  (optional)
-
-try: 
-    api_instance.artifact_get(projectId, artifactId, offset=offset, limit=limit, profile=profile, name=name)
-except ApiException as e:
-    print("Exception when calling ArtifactApi->artifactGet: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
artifactId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - -
Query parameters
- - - - - - - - - - - - - - - - - - - - - -
NameDescription
offset - - -
-
-
- - Integer - - -
-
-
-
limit - - -
-
-
- - Integer - - -
-
-
-
profile - - -
-
-
- - String - - -
-
-
-
name - - -
-
-
- - String - - -
-
-
-
- -

Responses

-
-
-
-
-
-
-

artifactGetAnnotations

-

-
-
-
-

-

-

-
-
/projects/{projectId}/artifacts/{artifactId}/annotations
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/artifacts/{artifactId}/annotations?column=&row="
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ArtifactApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        Integer column = 56; // Integer | 
-        String row = row_example; // String | 
-        try {
-            apiInstance.artifactGetAnnotations(projectId, artifactId, column, row);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactGetAnnotations");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ArtifactApi;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        Integer column = 56; // Integer | 
-        String row = row_example; // String | 
-        try {
-            apiInstance.artifactGetAnnotations(projectId, artifactId, column, row);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactGetAnnotations");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *artifactId = 56; // 
-Integer *column = 56; //  (optional)
-String *row = row_example; //  (optional)
-
-ArtifactApi *apiInstance = [[ArtifactApi alloc] init];
-
-[apiInstance artifactGetAnnotationsWith:projectId
-    artifactId:artifactId
-    column:column
-    row:row
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ArtifactApi()
-
-var projectId = 56; // {Integer} 
-
-var artifactId = 56; // {Integer} 
-
-var opts = { 
-  'column': 56, // {Integer} 
-  'row': row_example // {String} 
-};
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.artifactGetAnnotations(projectId, artifactId, opts, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class artifactGetAnnotationsExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ArtifactApi();
-            var projectId = 56;  // Integer | 
-            var artifactId = 56;  // Integer | 
-            var column = 56;  // Integer |  (optional) 
-            var row = row_example;  // String |  (optional) 
-
-            try
-            {
-                apiInstance.artifactGetAnnotations(projectId, artifactId, column, row);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ArtifactApi.artifactGetAnnotations: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ArtifactApi();
-$projectId = 56; // Integer | 
-$artifactId = 56; // Integer | 
-$column = 56; // Integer | 
-$row = row_example; // String | 
-
-try {
-    $api_instance->artifactGetAnnotations($projectId, $artifactId, $column, $row);
-} catch (Exception $e) {
-    echo 'Exception when calling ArtifactApi->artifactGetAnnotations: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ArtifactApi;
-
-my $api_instance = WWW::SwaggerClient::ArtifactApi->new();
-my $projectId = 56; # Integer | 
-my $artifactId = 56; # Integer | 
-my $column = 56; # Integer | 
-my $row = row_example; # String | 
-
-eval { 
-    $api_instance->artifactGetAnnotations(projectId => $projectId, artifactId => $artifactId, column => $column, row => $row);
-};
-if ($@) {
-    warn "Exception when calling ArtifactApi->artifactGetAnnotations: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ArtifactApi()
-projectId = 56 # Integer | 
-artifactId = 56 # Integer | 
-column = 56 # Integer |  (optional)
-row = row_example # String |  (optional)
-
-try: 
-    api_instance.artifact_get_annotations(projectId, artifactId, column=column, row=row)
-except ApiException as e:
-    print("Exception when calling ArtifactApi->artifactGetAnnotations: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
artifactId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - -
Query parameters
- - - - - - - - - - - - - -
NameDescription
column - - -
-
-
- - Integer - - -
-
-
-
row - - -
-
-
- - String - - -
-
-
-
- -

Responses

-
-
-
-
-
-
-

artifactGetChart

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}/charts/{artifactId}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}/charts/{artifactId}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ArtifactApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        try {
-            apiInstance.artifactGetChart(projectId, branchId, workflowId, modulePosition, artifactId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactGetChart");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ArtifactApi;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        try {
-            apiInstance.artifactGetChart(projectId, branchId, workflowId, modulePosition, artifactId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactGetChart");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *workflowId = 56; // 
-Integer *modulePosition = 56; // 
-Integer *artifactId = 56; // 
-
-ArtifactApi *apiInstance = [[ArtifactApi alloc] init];
-
-[apiInstance artifactGetChartWith:projectId
-    branchId:branchId
-    workflowId:workflowId
-    modulePosition:modulePosition
-    artifactId:artifactId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ArtifactApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var workflowId = 56; // {Integer} 
-
-var modulePosition = 56; // {Integer} 
-
-var artifactId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.artifactGetChart(projectId, branchId, workflowId, modulePosition, artifactId, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class artifactGetChartExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ArtifactApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var workflowId = 56;  // Integer | 
-            var modulePosition = 56;  // Integer | 
-            var artifactId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.artifactGetChart(projectId, branchId, workflowId, modulePosition, artifactId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ArtifactApi.artifactGetChart: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ArtifactApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$workflowId = 56; // Integer | 
-$modulePosition = 56; // Integer | 
-$artifactId = 56; // Integer | 
-
-try {
-    $api_instance->artifactGetChart($projectId, $branchId, $workflowId, $modulePosition, $artifactId);
-} catch (Exception $e) {
-    echo 'Exception when calling ArtifactApi->artifactGetChart: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ArtifactApi;
-
-my $api_instance = WWW::SwaggerClient::ArtifactApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $workflowId = 56; # Integer | 
-my $modulePosition = 56; # Integer | 
-my $artifactId = 56; # Integer | 
-
-eval { 
-    $api_instance->artifactGetChart(projectId => $projectId, branchId => $branchId, workflowId => $workflowId, modulePosition => $modulePosition, artifactId => $artifactId);
-};
-if ($@) {
-    warn "Exception when calling ArtifactApi->artifactGetChart: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ArtifactApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-workflowId = 56 # Integer | 
-modulePosition = 56 # Integer | 
-artifactId = 56 # Integer | 
-
-try: 
-    api_instance.artifact_get_chart(projectId, branchId, workflowId, modulePosition, artifactId)
-except ApiException as e:
-    print("Exception when calling ArtifactApi->artifactGetChart: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
workflowId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
modulePosition* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
artifactId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

artifactGetCsv

-

-
-
-
-

-

-

-
-
/projects/{projectId}/artifacts/{artifactId}/csv
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/artifacts/{artifactId}/csv?name="
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ArtifactApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        String name = name_example; // String | 
-        try {
-            apiInstance.artifactGetCsv(projectId, artifactId, name);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactGetCsv");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ArtifactApi;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        String name = name_example; // String | 
-        try {
-            apiInstance.artifactGetCsv(projectId, artifactId, name);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactGetCsv");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *artifactId = 56; // 
-String *name = name_example; //  (optional)
-
-ArtifactApi *apiInstance = [[ArtifactApi alloc] init];
-
-[apiInstance artifactGetCsvWith:projectId
-    artifactId:artifactId
-    name:name
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ArtifactApi()
-
-var projectId = 56; // {Integer} 
-
-var artifactId = 56; // {Integer} 
-
-var opts = { 
-  'name': name_example // {String} 
-};
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.artifactGetCsv(projectId, artifactId, opts, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class artifactGetCsvExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ArtifactApi();
-            var projectId = 56;  // Integer | 
-            var artifactId = 56;  // Integer | 
-            var name = name_example;  // String |  (optional) 
-
-            try
-            {
-                apiInstance.artifactGetCsv(projectId, artifactId, name);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ArtifactApi.artifactGetCsv: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ArtifactApi();
-$projectId = 56; // Integer | 
-$artifactId = 56; // Integer | 
-$name = name_example; // String | 
-
-try {
-    $api_instance->artifactGetCsv($projectId, $artifactId, $name);
-} catch (Exception $e) {
-    echo 'Exception when calling ArtifactApi->artifactGetCsv: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ArtifactApi;
-
-my $api_instance = WWW::SwaggerClient::ArtifactApi->new();
-my $projectId = 56; # Integer | 
-my $artifactId = 56; # Integer | 
-my $name = name_example; # String | 
-
-eval { 
-    $api_instance->artifactGetCsv(projectId => $projectId, artifactId => $artifactId, name => $name);
-};
-if ($@) {
-    warn "Exception when calling ArtifactApi->artifactGetCsv: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ArtifactApi()
-projectId = 56 # Integer | 
-artifactId = 56 # Integer | 
-name = name_example # String |  (optional)
-
-try: 
-    api_instance.artifact_get_csv(projectId, artifactId, name=name)
-except ApiException as e:
-    print("Exception when calling ArtifactApi->artifactGetCsv: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
artifactId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - -
Query parameters
- - - - - - - - - -
NameDescription
name - - -
-
-
- - String - - -
-
-
-
- -

Responses

-
-
-
-
-
-
-

artifactGetDataset

-

-
-
-
-

-

-

-
-
/projects/{projectId}/datasets/{artifactId}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/datasets/{artifactId}?offset=&limit=&profile=&name="
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ArtifactApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        Integer offset = 56; // Integer | 
-        Integer limit = 56; // Integer | 
-        String profile = profile_example; // String | 
-        String name = name_example; // String | 
-        try {
-            apiInstance.artifactGetDataset(projectId, artifactId, offset, limit, profile, name);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactGetDataset");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ArtifactApi;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        Integer offset = 56; // Integer | 
-        Integer limit = 56; // Integer | 
-        String profile = profile_example; // String | 
-        String name = name_example; // String | 
-        try {
-            apiInstance.artifactGetDataset(projectId, artifactId, offset, limit, profile, name);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactGetDataset");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *artifactId = 56; // 
-Integer *offset = 56; //  (optional)
-Integer *limit = 56; //  (optional)
-String *profile = profile_example; //  (optional)
-String *name = name_example; //  (optional)
-
-ArtifactApi *apiInstance = [[ArtifactApi alloc] init];
-
-[apiInstance artifactGetDatasetWith:projectId
-    artifactId:artifactId
-    offset:offset
-    limit:limit
-    profile:profile
-    name:name
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ArtifactApi()
-
-var projectId = 56; // {Integer} 
-
-var artifactId = 56; // {Integer} 
-
-var opts = { 
-  'offset': 56, // {Integer} 
-  'limit': 56, // {Integer} 
-  'profile': profile_example, // {String} 
-  'name': name_example // {String} 
-};
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.artifactGetDataset(projectId, artifactId, opts, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class artifactGetDatasetExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ArtifactApi();
-            var projectId = 56;  // Integer | 
-            var artifactId = 56;  // Integer | 
-            var offset = 56;  // Integer |  (optional) 
-            var limit = 56;  // Integer |  (optional) 
-            var profile = profile_example;  // String |  (optional) 
-            var name = name_example;  // String |  (optional) 
-
-            try
-            {
-                apiInstance.artifactGetDataset(projectId, artifactId, offset, limit, profile, name);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ArtifactApi.artifactGetDataset: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ArtifactApi();
-$projectId = 56; // Integer | 
-$artifactId = 56; // Integer | 
-$offset = 56; // Integer | 
-$limit = 56; // Integer | 
-$profile = profile_example; // String | 
-$name = name_example; // String | 
-
-try {
-    $api_instance->artifactGetDataset($projectId, $artifactId, $offset, $limit, $profile, $name);
-} catch (Exception $e) {
-    echo 'Exception when calling ArtifactApi->artifactGetDataset: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ArtifactApi;
-
-my $api_instance = WWW::SwaggerClient::ArtifactApi->new();
-my $projectId = 56; # Integer | 
-my $artifactId = 56; # Integer | 
-my $offset = 56; # Integer | 
-my $limit = 56; # Integer | 
-my $profile = profile_example; # String | 
-my $name = name_example; # String | 
-
-eval { 
-    $api_instance->artifactGetDataset(projectId => $projectId, artifactId => $artifactId, offset => $offset, limit => $limit, profile => $profile, name => $name);
-};
-if ($@) {
-    warn "Exception when calling ArtifactApi->artifactGetDataset: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ArtifactApi()
-projectId = 56 # Integer | 
-artifactId = 56 # Integer | 
-offset = 56 # Integer |  (optional)
-limit = 56 # Integer |  (optional)
-profile = profile_example # String |  (optional)
-name = name_example # String |  (optional)
-
-try: 
-    api_instance.artifact_get_dataset(projectId, artifactId, offset=offset, limit=limit, profile=profile, name=name)
-except ApiException as e:
-    print("Exception when calling ArtifactApi->artifactGetDataset: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
artifactId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - -
Query parameters
- - - - - - - - - - - - - - - - - - - - - -
NameDescription
offset - - -
-
-
- - Integer - - -
-
-
-
limit - - -
-
-
- - Integer - - -
-
-
-
profile - - -
-
-
- - String - - -
-
-
-
name - - -
-
-
- - String - - -
-
-
-
- -

Responses

-
-
-
-
-
-
-

artifactGetFile

-

-
-
-
-

-

-

-
-
/projects/{projectId}/artifacts/{artifactId}/file
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/artifacts/{artifactId}/file"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ArtifactApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        try {
-            apiInstance.artifactGetFile(projectId, artifactId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactGetFile");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ArtifactApi;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        try {
-            apiInstance.artifactGetFile(projectId, artifactId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactGetFile");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *artifactId = 56; // 
-
-ArtifactApi *apiInstance = [[ArtifactApi alloc] init];
-
-[apiInstance artifactGetFileWith:projectId
-    artifactId:artifactId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ArtifactApi()
-
-var projectId = 56; // {Integer} 
-
-var artifactId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.artifactGetFile(projectId, artifactId, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class artifactGetFileExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ArtifactApi();
-            var projectId = 56;  // Integer | 
-            var artifactId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.artifactGetFile(projectId, artifactId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ArtifactApi.artifactGetFile: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ArtifactApi();
-$projectId = 56; // Integer | 
-$artifactId = 56; // Integer | 
-
-try {
-    $api_instance->artifactGetFile($projectId, $artifactId);
-} catch (Exception $e) {
-    echo 'Exception when calling ArtifactApi->artifactGetFile: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ArtifactApi;
-
-my $api_instance = WWW::SwaggerClient::ArtifactApi->new();
-my $projectId = 56; # Integer | 
-my $artifactId = 56; # Integer | 
-
-eval { 
-    $api_instance->artifactGetFile(projectId => $projectId, artifactId => $artifactId);
-};
-if ($@) {
-    warn "Exception when calling ArtifactApi->artifactGetFile: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ArtifactApi()
-projectId = 56 # Integer | 
-artifactId = 56 # Integer | 
-
-try: 
-    api_instance.artifact_get_file(projectId, artifactId)
-except ApiException as e:
-    print("Exception when calling ArtifactApi->artifactGetFile: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
artifactId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

artifactGetSummary

-

-
-
-
-

-

-

-
-
/projects/{projectId}/artifacts/{artifactId}/descriptor
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/artifacts/{artifactId}/descriptor"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ArtifactApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        try {
-            apiInstance.artifactGetSummary(projectId, artifactId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactGetSummary");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ArtifactApi;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        try {
-            apiInstance.artifactGetSummary(projectId, artifactId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactGetSummary");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *artifactId = 56; // 
-
-ArtifactApi *apiInstance = [[ArtifactApi alloc] init];
-
-[apiInstance artifactGetSummaryWith:projectId
-    artifactId:artifactId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ArtifactApi()
-
-var projectId = 56; // {Integer} 
-
-var artifactId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.artifactGetSummary(projectId, artifactId, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class artifactGetSummaryExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ArtifactApi();
-            var projectId = 56;  // Integer | 
-            var artifactId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.artifactGetSummary(projectId, artifactId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ArtifactApi.artifactGetSummary: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ArtifactApi();
-$projectId = 56; // Integer | 
-$artifactId = 56; // Integer | 
-
-try {
-    $api_instance->artifactGetSummary($projectId, $artifactId);
-} catch (Exception $e) {
-    echo 'Exception when calling ArtifactApi->artifactGetSummary: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ArtifactApi;
-
-my $api_instance = WWW::SwaggerClient::ArtifactApi->new();
-my $projectId = 56; # Integer | 
-my $artifactId = 56; # Integer | 
-
-eval { 
-    $api_instance->artifactGetSummary(projectId => $projectId, artifactId => $artifactId);
-};
-if ($@) {
-    warn "Exception when calling ArtifactApi->artifactGetSummary: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ArtifactApi()
-projectId = 56 # Integer | 
-artifactId = 56 # Integer | 
-
-try: 
-    api_instance.artifact_get_summary(projectId, artifactId)
-except ApiException as e:
-    print("Exception when calling ArtifactApi->artifactGetSummary: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
artifactId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

artifactHeadGetChart

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}/charts/{artifactId}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}/charts/{artifactId}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ArtifactApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        try {
-            apiInstance.artifactHeadGetChart(projectId, branchId, modulePosition, artifactId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactHeadGetChart");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ArtifactApi;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        Integer artifactId = 56; // Integer | 
-        try {
-            apiInstance.artifactHeadGetChart(projectId, branchId, modulePosition, artifactId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactHeadGetChart");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *modulePosition = 56; // 
-Integer *artifactId = 56; // 
-
-ArtifactApi *apiInstance = [[ArtifactApi alloc] init];
-
-[apiInstance artifactHeadGetChartWith:projectId
-    branchId:branchId
-    modulePosition:modulePosition
-    artifactId:artifactId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ArtifactApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var modulePosition = 56; // {Integer} 
-
-var artifactId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.artifactHeadGetChart(projectId, branchId, modulePosition, artifactId, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class artifactHeadGetChartExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ArtifactApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var modulePosition = 56;  // Integer | 
-            var artifactId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.artifactHeadGetChart(projectId, branchId, modulePosition, artifactId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ArtifactApi.artifactHeadGetChart: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ArtifactApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$modulePosition = 56; // Integer | 
-$artifactId = 56; // Integer | 
-
-try {
-    $api_instance->artifactHeadGetChart($projectId, $branchId, $modulePosition, $artifactId);
-} catch (Exception $e) {
-    echo 'Exception when calling ArtifactApi->artifactHeadGetChart: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ArtifactApi;
-
-my $api_instance = WWW::SwaggerClient::ArtifactApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $modulePosition = 56; # Integer | 
-my $artifactId = 56; # Integer | 
-
-eval { 
-    $api_instance->artifactHeadGetChart(projectId => $projectId, branchId => $branchId, modulePosition => $modulePosition, artifactId => $artifactId);
-};
-if ($@) {
-    warn "Exception when calling ArtifactApi->artifactHeadGetChart: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ArtifactApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-modulePosition = 56 # Integer | 
-artifactId = 56 # Integer | 
-
-try: 
-    api_instance.artifact_head_get_chart(projectId, branchId, modulePosition, artifactId)
-except ApiException as e:
-    print("Exception when calling ArtifactApi->artifactHeadGetChart: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
modulePosition* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
artifactId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

artifactUpload

-

-
-
-
-

-

-

-
-
/projects/{projectId}/files
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/files"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ArtifactApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        File file = /path/to/file.txt; // File | 
-        try {
-            apiInstance.artifactUpload(projectId, file);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactUpload");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ArtifactApi;
-
-public class ArtifactApiExample {
-
-    public static void main(String[] args) {
-        ArtifactApi apiInstance = new ArtifactApi();
-        Integer projectId = 56; // Integer | 
-        File file = /path/to/file.txt; // File | 
-        try {
-            apiInstance.artifactUpload(projectId, file);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ArtifactApi#artifactUpload");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-File *file = /path/to/file.txt; // 
-
-ArtifactApi *apiInstance = [[ArtifactApi alloc] init];
-
-[apiInstance artifactUploadWith:projectId
-    file:file
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ArtifactApi()
-
-var projectId = 56; // {Integer} 
-
-var file = /path/to/file.txt; // {File} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.artifactUpload(projectId, file, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class artifactUploadExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ArtifactApi();
-            var projectId = 56;  // Integer | 
-            var file = new File(); // File | 
-
-            try
-            {
-                apiInstance.artifactUpload(projectId, file);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ArtifactApi.artifactUpload: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ArtifactApi();
-$projectId = 56; // Integer | 
-$file = /path/to/file.txt; // File | 
-
-try {
-    $api_instance->artifactUpload($projectId, $file);
-} catch (Exception $e) {
-    echo 'Exception when calling ArtifactApi->artifactUpload: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ArtifactApi;
-
-my $api_instance = WWW::SwaggerClient::ArtifactApi->new();
-my $projectId = 56; # Integer | 
-my $file = WWW::SwaggerClient::Object::File->new(); # File | 
-
-eval { 
-    $api_instance->artifactUpload(projectId => $projectId, file => $file);
-};
-if ($@) {
-    warn "Exception when calling ArtifactApi->artifactUpload: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ArtifactApi()
-projectId = 56 # Integer | 
-file = /path/to/file.txt # File | 
-
-try: 
-    api_instance.artifact_upload(projectId, file)
-except ApiException as e:
-    print("Exception when calling ArtifactApi->artifactUpload: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - -
Body parameters
- - - - - - - - - -
NameDescription
file * - - - -
-
- - - -

Responses

-
-
-
-
-
-

Branch

-
-
-
-

branchCreate

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.BranchApi;
-
-import java.io.File;
-import java.util.*;
-
-public class BranchApiExample {
-
-    public static void main(String[] args) {
-        
-        BranchApi apiInstance = new BranchApi();
-        Integer projectId = 56; // Integer | 
-        Body_5 body = ; // Body_5 | 
-        try {
-            apiInstance.branchCreate(projectId, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling BranchApi#branchCreate");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.BranchApi;
-
-public class BranchApiExample {
-
-    public static void main(String[] args) {
-        BranchApi apiInstance = new BranchApi();
-        Integer projectId = 56; // Integer | 
-        Body_5 body = ; // Body_5 | 
-        try {
-            apiInstance.branchCreate(projectId, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling BranchApi#branchCreate");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Body_5 *body = ; // 
-
-BranchApi *apiInstance = [[BranchApi alloc] init];
-
-[apiInstance branchCreateWith:projectId
-    body:body
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.BranchApi()
-
-var projectId = 56; // {Integer} 
-
-var body = ; // {Body_5} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.branchCreate(projectId, body, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class branchCreateExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new BranchApi();
-            var projectId = 56;  // Integer | 
-            var body = new Body_5(); // Body_5 | 
-
-            try
-            {
-                apiInstance.branchCreate(projectId, body);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling BranchApi.branchCreate: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\BranchApi();
-$projectId = 56; // Integer | 
-$body = ; // Body_5 | 
-
-try {
-    $api_instance->branchCreate($projectId, $body);
-} catch (Exception $e) {
-    echo 'Exception when calling BranchApi->branchCreate: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::BranchApi;
-
-my $api_instance = WWW::SwaggerClient::BranchApi->new();
-my $projectId = 56; # Integer | 
-my $body = WWW::SwaggerClient::Object::Body_5->new(); # Body_5 | 
-
-eval { 
-    $api_instance->branchCreate(projectId => $projectId, body => $body);
-};
-if ($@) {
-    warn "Exception when calling BranchApi->branchCreate: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.BranchApi()
-projectId = 56 # Integer | 
-body =  # Body_5 | 
-
-try: 
-    api_instance.branch_create(projectId, body)
-except ApiException as e:
-    print("Exception when calling BranchApi->branchCreate: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - -
Body parameters
- - - - - - - - - -
NameDescription
body * - - - -
-
- - - -

Responses

-
-
-
-
-
-
-

branchDelete

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X DELETE "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.BranchApi;
-
-import java.io.File;
-import java.util.*;
-
-public class BranchApiExample {
-
-    public static void main(String[] args) {
-        
-        BranchApi apiInstance = new BranchApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        try {
-            apiInstance.branchDelete(projectId, branchId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling BranchApi#branchDelete");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.BranchApi;
-
-public class BranchApiExample {
-
-    public static void main(String[] args) {
-        BranchApi apiInstance = new BranchApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        try {
-            apiInstance.branchDelete(projectId, branchId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling BranchApi#branchDelete");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-
-BranchApi *apiInstance = [[BranchApi alloc] init];
-
-[apiInstance branchDeleteWith:projectId
-    branchId:branchId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.BranchApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.branchDelete(projectId, branchId, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class branchDeleteExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new BranchApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.branchDelete(projectId, branchId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling BranchApi.branchDelete: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\BranchApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-
-try {
-    $api_instance->branchDelete($projectId, $branchId);
-} catch (Exception $e) {
-    echo 'Exception when calling BranchApi->branchDelete: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::BranchApi;
-
-my $api_instance = WWW::SwaggerClient::BranchApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-
-eval { 
-    $api_instance->branchDelete(projectId => $projectId, branchId => $branchId);
-};
-if ($@) {
-    warn "Exception when calling BranchApi->branchDelete: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.BranchApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-
-try: 
-    api_instance.branch_delete(projectId, branchId)
-except ApiException as e:
-    print("Exception when calling BranchApi->branchDelete: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

branchGet

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.BranchApi;
-
-import java.io.File;
-import java.util.*;
-
-public class BranchApiExample {
-
-    public static void main(String[] args) {
-        
-        BranchApi apiInstance = new BranchApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        try {
-            apiInstance.branchGet(projectId, branchId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling BranchApi#branchGet");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.BranchApi;
-
-public class BranchApiExample {
-
-    public static void main(String[] args) {
-        BranchApi apiInstance = new BranchApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        try {
-            apiInstance.branchGet(projectId, branchId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling BranchApi#branchGet");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-
-BranchApi *apiInstance = [[BranchApi alloc] init];
-
-[apiInstance branchGetWith:projectId
-    branchId:branchId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.BranchApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.branchGet(projectId, branchId, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class branchGetExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new BranchApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.branchGet(projectId, branchId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling BranchApi.branchGet: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\BranchApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-
-try {
-    $api_instance->branchGet($projectId, $branchId);
-} catch (Exception $e) {
-    echo 'Exception when calling BranchApi->branchGet: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::BranchApi;
-
-my $api_instance = WWW::SwaggerClient::BranchApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-
-eval { 
-    $api_instance->branchGet(projectId => $projectId, branchId => $branchId);
-};
-if ($@) {
-    warn "Exception when calling BranchApi->branchGet: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.BranchApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-
-try: 
-    api_instance.branch_get(projectId, branchId)
-except ApiException as e:
-    print("Exception when calling BranchApi->branchGet: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

branchList

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.BranchApi;
-
-import java.io.File;
-import java.util.*;
-
-public class BranchApiExample {
-
-    public static void main(String[] args) {
-        
-        BranchApi apiInstance = new BranchApi();
-        Integer projectId = 56; // Integer | 
-        try {
-            apiInstance.branchList(projectId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling BranchApi#branchList");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.BranchApi;
-
-public class BranchApiExample {
-
-    public static void main(String[] args) {
-        BranchApi apiInstance = new BranchApi();
-        Integer projectId = 56; // Integer | 
-        try {
-            apiInstance.branchList(projectId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling BranchApi#branchList");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-
-BranchApi *apiInstance = [[BranchApi alloc] init];
-
-[apiInstance branchListWith:projectId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.BranchApi()
-
-var projectId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.branchList(projectId, , callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class branchListExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new BranchApi();
-            var projectId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.branchList(projectId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling BranchApi.branchList: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\BranchApi();
-$projectId = 56; // Integer | 
-
-try {
-    $api_instance->branchList($projectId);
-} catch (Exception $e) {
-    echo 'Exception when calling BranchApi->branchList: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::BranchApi;
-
-my $api_instance = WWW::SwaggerClient::BranchApi->new();
-my $projectId = 56; # Integer | 
-
-eval { 
-    $api_instance->branchList(projectId => $projectId);
-};
-if ($@) {
-    warn "Exception when calling BranchApi->branchList: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.BranchApi()
-projectId = 56 # Integer | 
-
-try: 
-    api_instance.branch_list(projectId)
-except ApiException as e:
-    print("Exception when calling BranchApi->branchList: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

branchUpdate

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X PUT "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.BranchApi;
-
-import java.io.File;
-import java.util.*;
-
-public class BranchApiExample {
-
-    public static void main(String[] args) {
-        
-        BranchApi apiInstance = new BranchApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Body_6 body = ; // Body_6 | 
-        try {
-            apiInstance.branchUpdate(projectId, branchId, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling BranchApi#branchUpdate");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.BranchApi;
-
-public class BranchApiExample {
-
-    public static void main(String[] args) {
-        BranchApi apiInstance = new BranchApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Body_6 body = ; // Body_6 | 
-        try {
-            apiInstance.branchUpdate(projectId, branchId, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling BranchApi#branchUpdate");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Body_6 *body = ; // 
-
-BranchApi *apiInstance = [[BranchApi alloc] init];
-
-[apiInstance branchUpdateWith:projectId
-    branchId:branchId
-    body:body
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.BranchApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var body = ; // {Body_6} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.branchUpdate(projectId, branchIdbody, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class branchUpdateExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new BranchApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var body = new Body_6(); // Body_6 | 
-
-            try
-            {
-                apiInstance.branchUpdate(projectId, branchId, body);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling BranchApi.branchUpdate: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\BranchApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$body = ; // Body_6 | 
-
-try {
-    $api_instance->branchUpdate($projectId, $branchId, $body);
-} catch (Exception $e) {
-    echo 'Exception when calling BranchApi->branchUpdate: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::BranchApi;
-
-my $api_instance = WWW::SwaggerClient::BranchApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $body = WWW::SwaggerClient::Object::Body_6->new(); # Body_6 | 
-
-eval { 
-    $api_instance->branchUpdate(projectId => $projectId, branchId => $branchId, body => $body);
-};
-if ($@) {
-    warn "Exception when calling BranchApi->branchUpdate: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.BranchApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-body =  # Body_6 | 
-
-try: 
-    api_instance.branch_update(projectId, branchId, body)
-except ApiException as e:
-    print("Exception when calling BranchApi->branchUpdate: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - -
Body parameters
- - - - - - - - - -
NameDescription
body * - - - -
-
- - - -

Responses

-
-
-
-
-
-

Config

-
-
-
-

configCreatePythonEnv

-

-
-
-
-

-

-

-
-
/config/python/envByName/{env}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X PUT "https://localhost:5000/vizier-db/api/v1/config/python/envByName/{env}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ConfigApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ConfigApiExample {
-
-    public static void main(String[] args) {
-        
-        ConfigApi apiInstance = new ConfigApi();
-        String env = env_example; // String | 
-        Body_1 body = ; // Body_1 | 
-        try {
-            apiInstance.configCreatePythonEnv(env, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ConfigApi#configCreatePythonEnv");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ConfigApi;
-
-public class ConfigApiExample {
-
-    public static void main(String[] args) {
-        ConfigApi apiInstance = new ConfigApi();
-        String env = env_example; // String | 
-        Body_1 body = ; // Body_1 | 
-        try {
-            apiInstance.configCreatePythonEnv(env, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ConfigApi#configCreatePythonEnv");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
String *env = env_example; // 
-Body_1 *body = ; // 
-
-ConfigApi *apiInstance = [[ConfigApi alloc] init];
-
-[apiInstance configCreatePythonEnvWith:env
-    body:body
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ConfigApi()
-
-var env = env_example; // {String} 
-
-var body = ; // {Body_1} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.configCreatePythonEnv(env, body, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class configCreatePythonEnvExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ConfigApi();
-            var env = env_example;  // String | 
-            var body = new Body_1(); // Body_1 | 
-
-            try
-            {
-                apiInstance.configCreatePythonEnv(env, body);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ConfigApi.configCreatePythonEnv: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ConfigApi();
-$env = env_example; // String | 
-$body = ; // Body_1 | 
-
-try {
-    $api_instance->configCreatePythonEnv($env, $body);
-} catch (Exception $e) {
-    echo 'Exception when calling ConfigApi->configCreatePythonEnv: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ConfigApi;
-
-my $api_instance = WWW::SwaggerClient::ConfigApi->new();
-my $env = env_example; # String | 
-my $body = WWW::SwaggerClient::Object::Body_1->new(); # Body_1 | 
-
-eval { 
-    $api_instance->configCreatePythonEnv(env => $env, body => $body);
-};
-if ($@) {
-    warn "Exception when calling ConfigApi->configCreatePythonEnv: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ConfigApi()
-env = env_example # String | 
-body =  # Body_1 | 
-
-try: 
-    api_instance.config_create_python_env(env, body)
-except ApiException as e:
-    print("Exception when calling ConfigApi->configCreatePythonEnv: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - -
NameDescription
env* - - -
-
-
- - String - - -
-
- Required -
-
-
-
- - -
Body parameters
- - - - - - - - - -
NameDescription
body * - - - -
-
- - - -

Responses

-
-
-
-
-
-
-

configDeletePythonEnv

-

-
-
-
-

-

-

-
-
/config/python/envById/{envId}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X DELETE "https://localhost:5000/vizier-db/api/v1/config/python/envById/{envId}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ConfigApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ConfigApiExample {
-
-    public static void main(String[] args) {
-        
-        ConfigApi apiInstance = new ConfigApi();
-        Integer envId = 56; // Integer | 
-        try {
-            apiInstance.configDeletePythonEnv(envId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ConfigApi#configDeletePythonEnv");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ConfigApi;
-
-public class ConfigApiExample {
-
-    public static void main(String[] args) {
-        ConfigApi apiInstance = new ConfigApi();
-        Integer envId = 56; // Integer | 
-        try {
-            apiInstance.configDeletePythonEnv(envId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ConfigApi#configDeletePythonEnv");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *envId = 56; // 
-
-ConfigApi *apiInstance = [[ConfigApi alloc] init];
-
-[apiInstance configDeletePythonEnvWith:envId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ConfigApi()
-
-var envId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.configDeletePythonEnv(envId, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class configDeletePythonEnvExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ConfigApi();
-            var envId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.configDeletePythonEnv(envId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ConfigApi.configDeletePythonEnv: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ConfigApi();
-$envId = 56; // Integer | 
-
-try {
-    $api_instance->configDeletePythonEnv($envId);
-} catch (Exception $e) {
-    echo 'Exception when calling ConfigApi->configDeletePythonEnv: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ConfigApi;
-
-my $api_instance = WWW::SwaggerClient::ConfigApi->new();
-my $envId = 56; # Integer | 
-
-eval { 
-    $api_instance->configDeletePythonEnv(envId => $envId);
-};
-if ($@) {
-    warn "Exception when calling ConfigApi->configDeletePythonEnv: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ConfigApi()
-envId = 56 # Integer | 
-
-try: 
-    api_instance.config_delete_python_env(envId)
-except ApiException as e:
-    print("Exception when calling ConfigApi->configDeletePythonEnv: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - -
NameDescription
envId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

configGetPythonEnv

-

-
-
-
-

-

-

-
-
/config/python/envById/{envId}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/config/python/envById/{envId}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ConfigApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ConfigApiExample {
-
-    public static void main(String[] args) {
-        
-        ConfigApi apiInstance = new ConfigApi();
-        Integer envId = 56; // Integer | 
-        try {
-            apiInstance.configGetPythonEnv(envId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ConfigApi#configGetPythonEnv");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ConfigApi;
-
-public class ConfigApiExample {
-
-    public static void main(String[] args) {
-        ConfigApi apiInstance = new ConfigApi();
-        Integer envId = 56; // Integer | 
-        try {
-            apiInstance.configGetPythonEnv(envId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ConfigApi#configGetPythonEnv");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *envId = 56; // 
-
-ConfigApi *apiInstance = [[ConfigApi alloc] init];
-
-[apiInstance configGetPythonEnvWith:envId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ConfigApi()
-
-var envId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.configGetPythonEnv(envId, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class configGetPythonEnvExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ConfigApi();
-            var envId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.configGetPythonEnv(envId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ConfigApi.configGetPythonEnv: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ConfigApi();
-$envId = 56; // Integer | 
-
-try {
-    $api_instance->configGetPythonEnv($envId);
-} catch (Exception $e) {
-    echo 'Exception when calling ConfigApi->configGetPythonEnv: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ConfigApi;
-
-my $api_instance = WWW::SwaggerClient::ConfigApi->new();
-my $envId = 56; # Integer | 
-
-eval { 
-    $api_instance->configGetPythonEnv(envId => $envId);
-};
-if ($@) {
-    warn "Exception when calling ConfigApi->configGetPythonEnv: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ConfigApi()
-envId = 56 # Integer | 
-
-try: 
-    api_instance.config_get_python_env(envId)
-except ApiException as e:
-    print("Exception when calling ConfigApi->configGetPythonEnv: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - -
NameDescription
envId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

configGetPythonEnvByname

-

-
-
-
-

-

-

-
-
/config/python/envByName/{env}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/config/python/envByName/{env}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ConfigApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ConfigApiExample {
-
-    public static void main(String[] args) {
-        
-        ConfigApi apiInstance = new ConfigApi();
-        String env = env_example; // String | 
-        try {
-            apiInstance.configGetPythonEnvByname(env);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ConfigApi#configGetPythonEnvByname");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ConfigApi;
-
-public class ConfigApiExample {
-
-    public static void main(String[] args) {
-        ConfigApi apiInstance = new ConfigApi();
-        String env = env_example; // String | 
-        try {
-            apiInstance.configGetPythonEnvByname(env);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ConfigApi#configGetPythonEnvByname");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
String *env = env_example; // 
-
-ConfigApi *apiInstance = [[ConfigApi alloc] init];
-
-[apiInstance configGetPythonEnvBynameWith:env
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ConfigApi()
-
-var env = env_example; // {String} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.configGetPythonEnvByname(env, , callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class configGetPythonEnvBynameExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ConfigApi();
-            var env = env_example;  // String | 
-
-            try
-            {
-                apiInstance.configGetPythonEnvByname(env);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ConfigApi.configGetPythonEnvByname: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ConfigApi();
-$env = env_example; // String | 
-
-try {
-    $api_instance->configGetPythonEnvByname($env);
-} catch (Exception $e) {
-    echo 'Exception when calling ConfigApi->configGetPythonEnvByname: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ConfigApi;
-
-my $api_instance = WWW::SwaggerClient::ConfigApi->new();
-my $env = env_example; # String | 
-
-eval { 
-    $api_instance->configGetPythonEnvByname(env => $env);
-};
-if ($@) {
-    warn "Exception when calling ConfigApi->configGetPythonEnvByname: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ConfigApi()
-env = env_example # String | 
-
-try: 
-    api_instance.config_get_python_env_byname(env)
-except ApiException as e:
-    print("Exception when calling ConfigApi->configGetPythonEnvByname: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - -
NameDescription
env* - - -
-
-
- - String - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

configGetRegistry

-

-
-
-
-

-

-

-
-
/config/registry
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/config/registry"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ConfigApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ConfigApiExample {
-
-    public static void main(String[] args) {
-        
-        ConfigApi apiInstance = new ConfigApi();
-        try {
-            apiInstance.configGetRegistry();
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ConfigApi#configGetRegistry");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ConfigApi;
-
-public class ConfigApiExample {
-
-    public static void main(String[] args) {
-        ConfigApi apiInstance = new ConfigApi();
-        try {
-            apiInstance.configGetRegistry();
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ConfigApi#configGetRegistry");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-

-ConfigApi *apiInstance = [[ConfigApi alloc] init];
-
-[apiInstance configGetRegistryWithCompletionHandler: 
-              ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ConfigApi()
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.configGetRegistry(callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class configGetRegistryExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ConfigApi();
-
-            try
-            {
-                apiInstance.configGetRegistry();
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ConfigApi.configGetRegistry: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ConfigApi();
-
-try {
-    $api_instance->configGetRegistry();
-} catch (Exception $e) {
-    echo 'Exception when calling ConfigApi->configGetRegistry: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ConfigApi;
-
-my $api_instance = WWW::SwaggerClient::ConfigApi->new();
-
-eval { 
-    $api_instance->configGetRegistry();
-};
-if ($@) {
-    warn "Exception when calling ConfigApi->configGetRegistry: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ConfigApi()
-
-try: 
-    api_instance.config_get_registry()
-except ApiException as e:
-    print("Exception when calling ConfigApi->configGetRegistry: %s\n" % e)
-
-
- -

Parameters

- - - - - - -

Responses

-
-
-
-
-
-
-

configGetRegistryKey

-

-
-
-
-

-

-

-
-
/config/registry/{key}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/config/registry/{key}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ConfigApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ConfigApiExample {
-
-    public static void main(String[] args) {
-        
-        ConfigApi apiInstance = new ConfigApi();
-        String key = key_example; // String | 
-        try {
-            apiInstance.configGetRegistryKey(key);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ConfigApi#configGetRegistryKey");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ConfigApi;
-
-public class ConfigApiExample {
-
-    public static void main(String[] args) {
-        ConfigApi apiInstance = new ConfigApi();
-        String key = key_example; // String | 
-        try {
-            apiInstance.configGetRegistryKey(key);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ConfigApi#configGetRegistryKey");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
String *key = key_example; // 
-
-ConfigApi *apiInstance = [[ConfigApi alloc] init];
-
-[apiInstance configGetRegistryKeyWith:key
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ConfigApi()
-
-var key = key_example; // {String} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.configGetRegistryKey(key, , callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class configGetRegistryKeyExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ConfigApi();
-            var key = key_example;  // String | 
-
-            try
-            {
-                apiInstance.configGetRegistryKey(key);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ConfigApi.configGetRegistryKey: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ConfigApi();
-$key = key_example; // String | 
-
-try {
-    $api_instance->configGetRegistryKey($key);
-} catch (Exception $e) {
-    echo 'Exception when calling ConfigApi->configGetRegistryKey: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ConfigApi;
-
-my $api_instance = WWW::SwaggerClient::ConfigApi->new();
-my $key = key_example; # String | 
-
-eval { 
-    $api_instance->configGetRegistryKey(key => $key);
-};
-if ($@) {
-    warn "Exception when calling ConfigApi->configGetRegistryKey: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ConfigApi()
-key = key_example # String | 
-
-try: 
-    api_instance.config_get_registry_key(key)
-except ApiException as e:
-    print("Exception when calling ConfigApi->configGetRegistryKey: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - -
NameDescription
key* - - -
-
-
- - String - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

configListPythonEnvs

-

-
-
-
-

-

-

-
-
/config/python
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/config/python"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ConfigApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ConfigApiExample {
-
-    public static void main(String[] args) {
-        
-        ConfigApi apiInstance = new ConfigApi();
-        try {
-            apiInstance.configListPythonEnvs();
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ConfigApi#configListPythonEnvs");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ConfigApi;
-
-public class ConfigApiExample {
-
-    public static void main(String[] args) {
-        ConfigApi apiInstance = new ConfigApi();
-        try {
-            apiInstance.configListPythonEnvs();
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ConfigApi#configListPythonEnvs");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-

-ConfigApi *apiInstance = [[ConfigApi alloc] init];
-
-[apiInstance configListPythonEnvsWithCompletionHandler: 
-              ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ConfigApi()
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.configListPythonEnvs(callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class configListPythonEnvsExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ConfigApi();
-
-            try
-            {
-                apiInstance.configListPythonEnvs();
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ConfigApi.configListPythonEnvs: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ConfigApi();
-
-try {
-    $api_instance->configListPythonEnvs();
-} catch (Exception $e) {
-    echo 'Exception when calling ConfigApi->configListPythonEnvs: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ConfigApi;
-
-my $api_instance = WWW::SwaggerClient::ConfigApi->new();
-
-eval { 
-    $api_instance->configListPythonEnvs();
-};
-if ($@) {
-    warn "Exception when calling ConfigApi->configListPythonEnvs: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ConfigApi()
-
-try: 
-    api_instance.config_list_python_envs()
-except ApiException as e:
-    print("Exception when calling ConfigApi->configListPythonEnvs: %s\n" % e)
-
-
- -

Parameters

- - - - - - -

Responses

-
-
-
-
-
-
-

configSetRegistryKey

-

-
-
-
-

-

-

-
-
/config/registry/{key}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X PUT "https://localhost:5000/vizier-db/api/v1/config/registry/{key}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ConfigApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ConfigApiExample {
-
-    public static void main(String[] args) {
-        
-        ConfigApi apiInstance = new ConfigApi();
-        String key = key_example; // String | 
-        String value = value_example; // String | 
-        try {
-            apiInstance.configSetRegistryKey(key, value);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ConfigApi#configSetRegistryKey");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ConfigApi;
-
-public class ConfigApiExample {
-
-    public static void main(String[] args) {
-        ConfigApi apiInstance = new ConfigApi();
-        String key = key_example; // String | 
-        String value = value_example; // String | 
-        try {
-            apiInstance.configSetRegistryKey(key, value);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ConfigApi#configSetRegistryKey");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
String *key = key_example; // 
-String *value = value_example; // 
-
-ConfigApi *apiInstance = [[ConfigApi alloc] init];
-
-[apiInstance configSetRegistryKeyWith:key
-    value:value
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ConfigApi()
-
-var key = key_example; // {String} 
-
-var value = value_example; // {String} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.configSetRegistryKey(key, value, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class configSetRegistryKeyExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ConfigApi();
-            var key = key_example;  // String | 
-            var value = value_example;  // String | 
-
-            try
-            {
-                apiInstance.configSetRegistryKey(key, value);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ConfigApi.configSetRegistryKey: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ConfigApi();
-$key = key_example; // String | 
-$value = value_example; // String | 
-
-try {
-    $api_instance->configSetRegistryKey($key, $value);
-} catch (Exception $e) {
-    echo 'Exception when calling ConfigApi->configSetRegistryKey: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ConfigApi;
-
-my $api_instance = WWW::SwaggerClient::ConfigApi->new();
-my $key = key_example; # String | 
-my $value = WWW::SwaggerClient::Object::String->new(); # String | 
-
-eval { 
-    $api_instance->configSetRegistryKey(key => $key, value => $value);
-};
-if ($@) {
-    warn "Exception when calling ConfigApi->configSetRegistryKey: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ConfigApi()
-key = key_example # String | 
-value = value_example # String | 
-
-try: 
-    api_instance.config_set_registry_key(key, value)
-except ApiException as e:
-    print("Exception when calling ConfigApi->configSetRegistryKey: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - -
NameDescription
key* - - -
-
-
- - String - - -
-
- Required -
-
-
-
- - -
Body parameters
- - - - - - - - - -
NameDescription
value * - - - -
-
- - - -

Responses

-
-
-
-
-
-
-

configUpdatePythonEnv

-

-
-
-
-

-

-

-
-
/config/python/envById/{envId}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X PUT "https://localhost:5000/vizier-db/api/v1/config/python/envById/{envId}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ConfigApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ConfigApiExample {
-
-    public static void main(String[] args) {
-        
-        ConfigApi apiInstance = new ConfigApi();
-        Integer envId = 56; // Integer | 
-        Body body = ; // Body | 
-        try {
-            apiInstance.configUpdatePythonEnv(envId, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ConfigApi#configUpdatePythonEnv");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ConfigApi;
-
-public class ConfigApiExample {
-
-    public static void main(String[] args) {
-        ConfigApi apiInstance = new ConfigApi();
-        Integer envId = 56; // Integer | 
-        Body body = ; // Body | 
-        try {
-            apiInstance.configUpdatePythonEnv(envId, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ConfigApi#configUpdatePythonEnv");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *envId = 56; // 
-Body *body = ; // 
-
-ConfigApi *apiInstance = [[ConfigApi alloc] init];
-
-[apiInstance configUpdatePythonEnvWith:envId
-    body:body
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ConfigApi()
-
-var envId = 56; // {Integer} 
-
-var body = ; // {Body} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.configUpdatePythonEnv(envIdbody, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class configUpdatePythonEnvExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ConfigApi();
-            var envId = 56;  // Integer | 
-            var body = new Body(); // Body | 
-
-            try
-            {
-                apiInstance.configUpdatePythonEnv(envId, body);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ConfigApi.configUpdatePythonEnv: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ConfigApi();
-$envId = 56; // Integer | 
-$body = ; // Body | 
-
-try {
-    $api_instance->configUpdatePythonEnv($envId, $body);
-} catch (Exception $e) {
-    echo 'Exception when calling ConfigApi->configUpdatePythonEnv: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ConfigApi;
-
-my $api_instance = WWW::SwaggerClient::ConfigApi->new();
-my $envId = 56; # Integer | 
-my $body = WWW::SwaggerClient::Object::Body->new(); # Body | 
-
-eval { 
-    $api_instance->configUpdatePythonEnv(envId => $envId, body => $body);
-};
-if ($@) {
-    warn "Exception when calling ConfigApi->configUpdatePythonEnv: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ConfigApi()
-envId = 56 # Integer | 
-body =  # Body | 
-
-try: 
-    api_instance.config_update_python_env(envId, body)
-except ApiException as e:
-    print("Exception when calling ConfigApi->configUpdatePythonEnv: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - -
NameDescription
envId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - -
Body parameters
- - - - - - - - - -
NameDescription
body * - - - -
-
- - - -

Responses

-
-
-
-
-
-

Fs

-
-
-
-

fsGet

-

-
-
-
-

-

-

-
-
/filesystem/{path}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/filesystem/{path}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.FsApi;
-
-import java.io.File;
-import java.util.*;
-
-public class FsApiExample {
-
-    public static void main(String[] args) {
-        
-        FsApi apiInstance = new FsApi();
-        String path = path_example; // String | 
-        try {
-            apiInstance.fsGet(path);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling FsApi#fsGet");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.FsApi;
-
-public class FsApiExample {
-
-    public static void main(String[] args) {
-        FsApi apiInstance = new FsApi();
-        String path = path_example; // String | 
-        try {
-            apiInstance.fsGet(path);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling FsApi#fsGet");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
String *path = path_example; // 
-
-FsApi *apiInstance = [[FsApi alloc] init];
-
-[apiInstance fsGetWith:path
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.FsApi()
-
-var path = path_example; // {String} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.fsGet(path, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class fsGetExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new FsApi();
-            var path = path_example;  // String | 
-
-            try
-            {
-                apiInstance.fsGet(path);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling FsApi.fsGet: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\FsApi();
-$path = path_example; // String | 
-
-try {
-    $api_instance->fsGet($path);
-} catch (Exception $e) {
-    echo 'Exception when calling FsApi->fsGet: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::FsApi;
-
-my $api_instance = WWW::SwaggerClient::FsApi->new();
-my $path = path_example; # String | 
-
-eval { 
-    $api_instance->fsGet(path => $path);
-};
-if ($@) {
-    warn "Exception when calling FsApi->fsGet: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.FsApi()
-path = path_example # String | 
-
-try: 
-    api_instance.fs_get(path)
-except ApiException as e:
-    print("Exception when calling FsApi->fsGet: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - -
NameDescription
path* - - -
-
-
- - String - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

fsGetRoot

-

-
-
-
-

-

-

-
-
/filesystem
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/filesystem"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.FsApi;
-
-import java.io.File;
-import java.util.*;
-
-public class FsApiExample {
-
-    public static void main(String[] args) {
-        
-        FsApi apiInstance = new FsApi();
-        try {
-            apiInstance.fsGetRoot();
-        } catch (ApiException e) {
-            System.err.println("Exception when calling FsApi#fsGetRoot");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.FsApi;
-
-public class FsApiExample {
-
-    public static void main(String[] args) {
-        FsApi apiInstance = new FsApi();
-        try {
-            apiInstance.fsGetRoot();
-        } catch (ApiException e) {
-            System.err.println("Exception when calling FsApi#fsGetRoot");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-

-FsApi *apiInstance = [[FsApi alloc] init];
-
-[apiInstance fsGetRootWithCompletionHandler: 
-              ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.FsApi()
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.fsGetRoot(callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class fsGetRootExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new FsApi();
-
-            try
-            {
-                apiInstance.fsGetRoot();
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling FsApi.fsGetRoot: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\FsApi();
-
-try {
-    $api_instance->fsGetRoot();
-} catch (Exception $e) {
-    echo 'Exception when calling FsApi->fsGetRoot: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::FsApi;
-
-my $api_instance = WWW::SwaggerClient::FsApi->new();
-
-eval { 
-    $api_instance->fsGetRoot();
-};
-if ($@) {
-    warn "Exception when calling FsApi->fsGetRoot: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.FsApi()
-
-try: 
-    api_instance.fs_get_root()
-except ApiException as e:
-    print("Exception when calling FsApi->fsGetRoot: %s\n" % e)
-
-
- -

Parameters

- - - - - - -

Responses

-
-
-
-
-
-

Project

-
-
-
-

projectCreate

-

-
-
-
-

-

-

-
-
/projects
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/projects"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ProjectApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ProjectApiExample {
-
-    public static void main(String[] args) {
-        
-        ProjectApi apiInstance = new ProjectApi();
-        Body_2 body = ; // Body_2 | 
-        try {
-            apiInstance.projectCreate(body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ProjectApi#projectCreate");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ProjectApi;
-
-public class ProjectApiExample {
-
-    public static void main(String[] args) {
-        ProjectApi apiInstance = new ProjectApi();
-        Body_2 body = ; // Body_2 | 
-        try {
-            apiInstance.projectCreate(body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ProjectApi#projectCreate");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Body_2 *body = ; // 
-
-ProjectApi *apiInstance = [[ProjectApi alloc] init];
-
-[apiInstance projectCreateWith:body
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ProjectApi()
-
-var body = ; // {Body_2} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.projectCreate(body, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class projectCreateExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ProjectApi();
-            var body = new Body_2(); // Body_2 | 
-
-            try
-            {
-                apiInstance.projectCreate(body);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ProjectApi.projectCreate: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ProjectApi();
-$body = ; // Body_2 | 
-
-try {
-    $api_instance->projectCreate($body);
-} catch (Exception $e) {
-    echo 'Exception when calling ProjectApi->projectCreate: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ProjectApi;
-
-my $api_instance = WWW::SwaggerClient::ProjectApi->new();
-my $body = WWW::SwaggerClient::Object::Body_2->new(); # Body_2 | 
-
-eval { 
-    $api_instance->projectCreate(body => $body);
-};
-if ($@) {
-    warn "Exception when calling ProjectApi->projectCreate: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ProjectApi()
-body =  # Body_2 | 
-
-try: 
-    api_instance.project_create(body)
-except ApiException as e:
-    print("Exception when calling ProjectApi->projectCreate: %s\n" % e)
-
-
- -

Parameters

- - - -
Body parameters
- - - - - - - - - -
NameDescription
body * - - - -
-
- - - -

Responses

-
-
-
-
-
-
-

projectDelete

-

-
-
-
-

-

-

-
-
/projects/{projectId}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X DELETE "https://localhost:5000/vizier-db/api/v1/projects/{projectId}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ProjectApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ProjectApiExample {
-
-    public static void main(String[] args) {
-        
-        ProjectApi apiInstance = new ProjectApi();
-        Integer projectId = 56; // Integer | 
-        try {
-            apiInstance.projectDelete(projectId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ProjectApi#projectDelete");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ProjectApi;
-
-public class ProjectApiExample {
-
-    public static void main(String[] args) {
-        ProjectApi apiInstance = new ProjectApi();
-        Integer projectId = 56; // Integer | 
-        try {
-            apiInstance.projectDelete(projectId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ProjectApi#projectDelete");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-
-ProjectApi *apiInstance = [[ProjectApi alloc] init];
-
-[apiInstance projectDeleteWith:projectId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ProjectApi()
-
-var projectId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.projectDelete(projectId, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class projectDeleteExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ProjectApi();
-            var projectId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.projectDelete(projectId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ProjectApi.projectDelete: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ProjectApi();
-$projectId = 56; // Integer | 
-
-try {
-    $api_instance->projectDelete($projectId);
-} catch (Exception $e) {
-    echo 'Exception when calling ProjectApi->projectDelete: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ProjectApi;
-
-my $api_instance = WWW::SwaggerClient::ProjectApi->new();
-my $projectId = 56; # Integer | 
-
-eval { 
-    $api_instance->projectDelete(projectId => $projectId);
-};
-if ($@) {
-    warn "Exception when calling ProjectApi->projectDelete: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ProjectApi()
-projectId = 56 # Integer | 
-
-try: 
-    api_instance.project_delete(projectId)
-except ApiException as e:
-    print("Exception when calling ProjectApi->projectDelete: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

projectExport

-

-
-
-
-

-

-

-
-
/projects/{projectId}/export
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/export"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ProjectApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ProjectApiExample {
-
-    public static void main(String[] args) {
-        
-        ProjectApi apiInstance = new ProjectApi();
-        Integer projectId = 56; // Integer | 
-        try {
-            apiInstance.projectExport(projectId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ProjectApi#projectExport");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ProjectApi;
-
-public class ProjectApiExample {
-
-    public static void main(String[] args) {
-        ProjectApi apiInstance = new ProjectApi();
-        Integer projectId = 56; // Integer | 
-        try {
-            apiInstance.projectExport(projectId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ProjectApi#projectExport");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-
-ProjectApi *apiInstance = [[ProjectApi alloc] init];
-
-[apiInstance projectExportWith:projectId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ProjectApi()
-
-var projectId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.projectExport(projectId, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class projectExportExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ProjectApi();
-            var projectId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.projectExport(projectId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ProjectApi.projectExport: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ProjectApi();
-$projectId = 56; // Integer | 
-
-try {
-    $api_instance->projectExport($projectId);
-} catch (Exception $e) {
-    echo 'Exception when calling ProjectApi->projectExport: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ProjectApi;
-
-my $api_instance = WWW::SwaggerClient::ProjectApi->new();
-my $projectId = 56; # Integer | 
-
-eval { 
-    $api_instance->projectExport(projectId => $projectId);
-};
-if ($@) {
-    warn "Exception when calling ProjectApi->projectExport: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ProjectApi()
-projectId = 56 # Integer | 
-
-try: 
-    api_instance.project_export(projectId)
-except ApiException as e:
-    print("Exception when calling ProjectApi->projectExport: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

projectGet

-

-
-
-
-

-

-

-
-
/projects/{projectId}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ProjectApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ProjectApiExample {
-
-    public static void main(String[] args) {
-        
-        ProjectApi apiInstance = new ProjectApi();
-        Integer projectId = 56; // Integer | 
-        try {
-            apiInstance.projectGet(projectId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ProjectApi#projectGet");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ProjectApi;
-
-public class ProjectApiExample {
-
-    public static void main(String[] args) {
-        ProjectApi apiInstance = new ProjectApi();
-        Integer projectId = 56; // Integer | 
-        try {
-            apiInstance.projectGet(projectId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ProjectApi#projectGet");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-
-ProjectApi *apiInstance = [[ProjectApi alloc] init];
-
-[apiInstance projectGetWith:projectId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ProjectApi()
-
-var projectId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.projectGet(projectId, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class projectGetExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ProjectApi();
-            var projectId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.projectGet(projectId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ProjectApi.projectGet: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ProjectApi();
-$projectId = 56; // Integer | 
-
-try {
-    $api_instance->projectGet($projectId);
-} catch (Exception $e) {
-    echo 'Exception when calling ProjectApi->projectGet: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ProjectApi;
-
-my $api_instance = WWW::SwaggerClient::ProjectApi->new();
-my $projectId = 56; # Integer | 
-
-eval { 
-    $api_instance->projectGet(projectId => $projectId);
-};
-if ($@) {
-    warn "Exception when calling ProjectApi->projectGet: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ProjectApi()
-projectId = 56 # Integer | 
-
-try: 
-    api_instance.project_get(projectId)
-except ApiException as e:
-    print("Exception when calling ProjectApi->projectGet: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

projectImport

-

-
-
-
-

-

-

-
-
/projects/import
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/projects/import"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ProjectApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ProjectApiExample {
-
-    public static void main(String[] args) {
-        
-        ProjectApi apiInstance = new ProjectApi();
-        File file = /path/to/file.txt; // File | 
-        try {
-            apiInstance.projectImport(file);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ProjectApi#projectImport");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ProjectApi;
-
-public class ProjectApiExample {
-
-    public static void main(String[] args) {
-        ProjectApi apiInstance = new ProjectApi();
-        File file = /path/to/file.txt; // File | 
-        try {
-            apiInstance.projectImport(file);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ProjectApi#projectImport");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
File *file = /path/to/file.txt; // 
-
-ProjectApi *apiInstance = [[ProjectApi alloc] init];
-
-[apiInstance projectImportWith:file
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ProjectApi()
-
-var file = /path/to/file.txt; // {File} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.projectImport(file, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class projectImportExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ProjectApi();
-            var file = new File(); // File | 
-
-            try
-            {
-                apiInstance.projectImport(file);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ProjectApi.projectImport: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ProjectApi();
-$file = /path/to/file.txt; // File | 
-
-try {
-    $api_instance->projectImport($file);
-} catch (Exception $e) {
-    echo 'Exception when calling ProjectApi->projectImport: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ProjectApi;
-
-my $api_instance = WWW::SwaggerClient::ProjectApi->new();
-my $file = WWW::SwaggerClient::Object::File->new(); # File | 
-
-eval { 
-    $api_instance->projectImport(file => $file);
-};
-if ($@) {
-    warn "Exception when calling ProjectApi->projectImport: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ProjectApi()
-file = /path/to/file.txt # File | 
-
-try: 
-    api_instance.project_import(file)
-except ApiException as e:
-    print("Exception when calling ProjectApi->projectImport: %s\n" % e)
-
-
- -

Parameters

- - - -
Body parameters
- - - - - - - - - -
NameDescription
file * - - - -
-
- - - -

Responses

-
-
-
-
-
-
-

projectList

-

-
-
-
-

-

-

-
-
/projects
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ProjectApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ProjectApiExample {
-
-    public static void main(String[] args) {
-        
-        ProjectApi apiInstance = new ProjectApi();
-        try {
-            apiInstance.projectList();
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ProjectApi#projectList");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ProjectApi;
-
-public class ProjectApiExample {
-
-    public static void main(String[] args) {
-        ProjectApi apiInstance = new ProjectApi();
-        try {
-            apiInstance.projectList();
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ProjectApi#projectList");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-

-ProjectApi *apiInstance = [[ProjectApi alloc] init];
-
-[apiInstance projectListWithCompletionHandler: 
-              ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ProjectApi()
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.projectList(callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class projectListExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ProjectApi();
-
-            try
-            {
-                apiInstance.projectList();
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ProjectApi.projectList: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ProjectApi();
-
-try {
-    $api_instance->projectList();
-} catch (Exception $e) {
-    echo 'Exception when calling ProjectApi->projectList: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ProjectApi;
-
-my $api_instance = WWW::SwaggerClient::ProjectApi->new();
-
-eval { 
-    $api_instance->projectList();
-};
-if ($@) {
-    warn "Exception when calling ProjectApi->projectList: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ProjectApi()
-
-try: 
-    api_instance.project_list()
-except ApiException as e:
-    print("Exception when calling ProjectApi->projectList: %s\n" % e)
-
-
- -

Parameters

- - - - - - -

Responses

-
-
-
-
-
-
-

projectReplaceProps

-

-
-
-
-

-

-

-
-
/projects/{projectId}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/projects/{projectId}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ProjectApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ProjectApiExample {
-
-    public static void main(String[] args) {
-        
-        ProjectApi apiInstance = new ProjectApi();
-        Integer projectId = 56; // Integer | 
-        Body_4 body = ; // Body_4 | 
-        try {
-            apiInstance.projectReplaceProps(projectId, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ProjectApi#projectReplaceProps");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ProjectApi;
-
-public class ProjectApiExample {
-
-    public static void main(String[] args) {
-        ProjectApi apiInstance = new ProjectApi();
-        Integer projectId = 56; // Integer | 
-        Body_4 body = ; // Body_4 | 
-        try {
-            apiInstance.projectReplaceProps(projectId, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ProjectApi#projectReplaceProps");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Body_4 *body = ; // 
-
-ProjectApi *apiInstance = [[ProjectApi alloc] init];
-
-[apiInstance projectReplacePropsWith:projectId
-    body:body
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ProjectApi()
-
-var projectId = 56; // {Integer} 
-
-var body = ; // {Body_4} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.projectReplaceProps(projectIdbody, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class projectReplacePropsExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ProjectApi();
-            var projectId = 56;  // Integer | 
-            var body = new Body_4(); // Body_4 | 
-
-            try
-            {
-                apiInstance.projectReplaceProps(projectId, body);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ProjectApi.projectReplaceProps: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ProjectApi();
-$projectId = 56; // Integer | 
-$body = ; // Body_4 | 
-
-try {
-    $api_instance->projectReplaceProps($projectId, $body);
-} catch (Exception $e) {
-    echo 'Exception when calling ProjectApi->projectReplaceProps: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ProjectApi;
-
-my $api_instance = WWW::SwaggerClient::ProjectApi->new();
-my $projectId = 56; # Integer | 
-my $body = WWW::SwaggerClient::Object::Body_4->new(); # Body_4 | 
-
-eval { 
-    $api_instance->projectReplaceProps(projectId => $projectId, body => $body);
-};
-if ($@) {
-    warn "Exception when calling ProjectApi->projectReplaceProps: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ProjectApi()
-projectId = 56 # Integer | 
-body =  # Body_4 | 
-
-try: 
-    api_instance.project_replace_props(projectId, body)
-except ApiException as e:
-    print("Exception when calling ProjectApi->projectReplaceProps: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - -
Body parameters
- - - - - - - - - -
NameDescription
body * - - - -
-
- - - -

Responses

-
-
-
-
-
-
-

projectUpdate

-

-
-
-
-

-

-

-
-
/projects/{projectId}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X PUT "https://localhost:5000/vizier-db/api/v1/projects/{projectId}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ProjectApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ProjectApiExample {
-
-    public static void main(String[] args) {
-        
-        ProjectApi apiInstance = new ProjectApi();
-        Integer projectId = 56; // Integer | 
-        Body_3 body = ; // Body_3 | 
-        try {
-            apiInstance.projectUpdate(projectId, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ProjectApi#projectUpdate");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ProjectApi;
-
-public class ProjectApiExample {
-
-    public static void main(String[] args) {
-        ProjectApi apiInstance = new ProjectApi();
-        Integer projectId = 56; // Integer | 
-        Body_3 body = ; // Body_3 | 
-        try {
-            apiInstance.projectUpdate(projectId, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ProjectApi#projectUpdate");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Body_3 *body = ; // 
-
-ProjectApi *apiInstance = [[ProjectApi alloc] init];
-
-[apiInstance projectUpdateWith:projectId
-    body:body
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ProjectApi()
-
-var projectId = 56; // {Integer} 
-
-var body = ; // {Body_3} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.projectUpdate(projectIdbody, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class projectUpdateExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ProjectApi();
-            var projectId = 56;  // Integer | 
-            var body = new Body_3(); // Body_3 | 
-
-            try
-            {
-                apiInstance.projectUpdate(projectId, body);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ProjectApi.projectUpdate: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ProjectApi();
-$projectId = 56; // Integer | 
-$body = ; // Body_3 | 
-
-try {
-    $api_instance->projectUpdate($projectId, $body);
-} catch (Exception $e) {
-    echo 'Exception when calling ProjectApi->projectUpdate: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ProjectApi;
-
-my $api_instance = WWW::SwaggerClient::ProjectApi->new();
-my $projectId = 56; # Integer | 
-my $body = WWW::SwaggerClient::Object::Body_3->new(); # Body_3 | 
-
-eval { 
-    $api_instance->projectUpdate(projectId => $projectId, body => $body);
-};
-if ($@) {
-    warn "Exception when calling ProjectApi->projectUpdate: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ProjectApi()
-projectId = 56 # Integer | 
-body =  # Body_3 | 
-
-try: 
-    api_instance.project_update(projectId, body)
-except ApiException as e:
-    print("Exception when calling ProjectApi->projectUpdate: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - -
Body parameters
- - - - - - - - - -
NameDescription
body * - - - -
-
- - - -

Responses

-
-
-
-
-
-

Published

-
-
-
-

publishedDownloadPublished

-

-
-
-
-

-

-

-
-
/published/{artifactName}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/published/{artifactName}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.PublishedApi;
-
-import java.io.File;
-import java.util.*;
-
-public class PublishedApiExample {
-
-    public static void main(String[] args) {
-        
-        PublishedApi apiInstance = new PublishedApi();
-        String artifactName = artifactName_example; // String | 
-        try {
-            apiInstance.publishedDownloadPublished(artifactName);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling PublishedApi#publishedDownloadPublished");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.PublishedApi;
-
-public class PublishedApiExample {
-
-    public static void main(String[] args) {
-        PublishedApi apiInstance = new PublishedApi();
-        String artifactName = artifactName_example; // String | 
-        try {
-            apiInstance.publishedDownloadPublished(artifactName);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling PublishedApi#publishedDownloadPublished");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
String *artifactName = artifactName_example; // 
-
-PublishedApi *apiInstance = [[PublishedApi alloc] init];
-
-[apiInstance publishedDownloadPublishedWith:artifactName
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.PublishedApi()
-
-var artifactName = artifactName_example; // {String} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.publishedDownloadPublished(artifactName, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class publishedDownloadPublishedExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new PublishedApi();
-            var artifactName = artifactName_example;  // String | 
-
-            try
-            {
-                apiInstance.publishedDownloadPublished(artifactName);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling PublishedApi.publishedDownloadPublished: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\PublishedApi();
-$artifactName = artifactName_example; // String | 
-
-try {
-    $api_instance->publishedDownloadPublished($artifactName);
-} catch (Exception $e) {
-    echo 'Exception when calling PublishedApi->publishedDownloadPublished: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::PublishedApi;
-
-my $api_instance = WWW::SwaggerClient::PublishedApi->new();
-my $artifactName = artifactName_example; # String | 
-
-eval { 
-    $api_instance->publishedDownloadPublished(artifactName => $artifactName);
-};
-if ($@) {
-    warn "Exception when calling PublishedApi->publishedDownloadPublished: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.PublishedApi()
-artifactName = artifactName_example # String | 
-
-try: 
-    api_instance.published_download_published(artifactName)
-except ApiException as e:
-    print("Exception when calling PublishedApi->publishedDownloadPublished: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - -
NameDescription
artifactName* - - -
-
-
- - String - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-

Service

-
-
-
-

serviceDescriptor

-

-
-
-
-

-

-

-
-
/
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ServiceApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ServiceApiExample {
-
-    public static void main(String[] args) {
-        
-        ServiceApi apiInstance = new ServiceApi();
-        try {
-            apiInstance.serviceDescriptor();
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ServiceApi#serviceDescriptor");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ServiceApi;
-
-public class ServiceApiExample {
-
-    public static void main(String[] args) {
-        ServiceApi apiInstance = new ServiceApi();
-        try {
-            apiInstance.serviceDescriptor();
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ServiceApi#serviceDescriptor");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-

-ServiceApi *apiInstance = [[ServiceApi alloc] init];
-
-[apiInstance serviceDescriptorWithCompletionHandler: 
-              ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ServiceApi()
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.serviceDescriptor(callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class serviceDescriptorExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ServiceApi();
-
-            try
-            {
-                apiInstance.serviceDescriptor();
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ServiceApi.serviceDescriptor: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ServiceApi();
-
-try {
-    $api_instance->serviceDescriptor();
-} catch (Exception $e) {
-    echo 'Exception when calling ServiceApi->serviceDescriptor: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ServiceApi;
-
-my $api_instance = WWW::SwaggerClient::ServiceApi->new();
-
-eval { 
-    $api_instance->serviceDescriptor();
-};
-if ($@) {
-    warn "Exception when calling ServiceApi->serviceDescriptor: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ServiceApi()
-
-try: 
-    api_instance.service_descriptor()
-except ApiException as e:
-    print("Exception when calling ServiceApi->serviceDescriptor: %s\n" % e)
-
-
- -

Parameters

- - - - - - -

Responses

-
-
-
-
-
-
-

serviceList

-

-
-
-
-

-

-

-
-
/tasks
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/tasks"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ServiceApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ServiceApiExample {
-
-    public static void main(String[] args) {
-        
-        ServiceApi apiInstance = new ServiceApi();
-        try {
-            apiInstance.serviceList();
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ServiceApi#serviceList");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ServiceApi;
-
-public class ServiceApiExample {
-
-    public static void main(String[] args) {
-        ServiceApi apiInstance = new ServiceApi();
-        try {
-            apiInstance.serviceList();
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ServiceApi#serviceList");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-

-ServiceApi *apiInstance = [[ServiceApi alloc] init];
-
-[apiInstance serviceListWithCompletionHandler: 
-              ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ServiceApi()
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.serviceList(callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class serviceListExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ServiceApi();
-
-            try
-            {
-                apiInstance.serviceList();
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ServiceApi.serviceList: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ServiceApi();
-
-try {
-    $api_instance->serviceList();
-} catch (Exception $e) {
-    echo 'Exception when calling ServiceApi->serviceList: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ServiceApi;
-
-my $api_instance = WWW::SwaggerClient::ServiceApi->new();
-
-eval { 
-    $api_instance->serviceList();
-};
-if ($@) {
-    warn "Exception when calling ServiceApi->serviceList: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ServiceApi()
-
-try: 
-    api_instance.service_list()
-except ApiException as e:
-    print("Exception when calling ServiceApi->serviceList: %s\n" % e)
-
-
- -

Parameters

- - - - - - -

Responses

-
-
-
-
-
-
-

serviceReload

-

-
-
-
-

-

-

-
-
/reload
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/reload"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.ServiceApi;
-
-import java.io.File;
-import java.util.*;
-
-public class ServiceApiExample {
-
-    public static void main(String[] args) {
-        
-        ServiceApi apiInstance = new ServiceApi();
-        try {
-            apiInstance.serviceReload();
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ServiceApi#serviceReload");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.ServiceApi;
-
-public class ServiceApiExample {
-
-    public static void main(String[] args) {
-        ServiceApi apiInstance = new ServiceApi();
-        try {
-            apiInstance.serviceReload();
-        } catch (ApiException e) {
-            System.err.println("Exception when calling ServiceApi#serviceReload");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-

-ServiceApi *apiInstance = [[ServiceApi alloc] init];
-
-[apiInstance serviceReloadWithCompletionHandler: 
-              ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.ServiceApi()
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.serviceReload(callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class serviceReloadExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new ServiceApi();
-
-            try
-            {
-                apiInstance.serviceReload();
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling ServiceApi.serviceReload: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\ServiceApi();
-
-try {
-    $api_instance->serviceReload();
-} catch (Exception $e) {
-    echo 'Exception when calling ServiceApi->serviceReload: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::ServiceApi;
-
-my $api_instance = WWW::SwaggerClient::ServiceApi->new();
-
-eval { 
-    $api_instance->serviceReload();
-};
-if ($@) {
-    warn "Exception when calling ServiceApi->serviceReload: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.ServiceApi()
-
-try: 
-    api_instance.service_reload()
-except ApiException as e:
-    print("Exception when calling ServiceApi->serviceReload: %s\n" % e)
-
-
- -

Parameters

- - - - - - -

Responses

-
-
-
-
-
-

Workflow

-
-
-
-

workflowAppend

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        Body_11 body = ; // Body_11 | 
-        try {
-            apiInstance.workflowAppend(projectId, branchId, workflowId, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowAppend");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        Body_11 body = ; // Body_11 | 
-        try {
-            apiInstance.workflowAppend(projectId, branchId, workflowId, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowAppend");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *workflowId = 56; // 
-Body_11 *body = ; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowAppendWith:projectId
-    branchId:branchId
-    workflowId:workflowId
-    body:body
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var workflowId = 56; // {Integer} 
-
-var body = ; // {Body_11} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowAppend(projectId, branchId, workflowId, body, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowAppendExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var workflowId = 56;  // Integer | 
-            var body = new Body_11(); // Body_11 | 
-
-            try
-            {
-                apiInstance.workflowAppend(projectId, branchId, workflowId, body);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowAppend: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$workflowId = 56; // Integer | 
-$body = ; // Body_11 | 
-
-try {
-    $api_instance->workflowAppend($projectId, $branchId, $workflowId, $body);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowAppend: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $workflowId = 56; # Integer | 
-my $body = WWW::SwaggerClient::Object::Body_11->new(); # Body_11 | 
-
-eval { 
-    $api_instance->workflowAppend(projectId => $projectId, branchId => $branchId, workflowId => $workflowId, body => $body);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowAppend: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-workflowId = 56 # Integer | 
-body =  # Body_11 | 
-
-try: 
-    api_instance.workflow_append(projectId, branchId, workflowId, body)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowAppend: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
workflowId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - -
Body parameters
- - - - - - - - - -
NameDescription
body * - - - -
-
- - - -

Responses

-
-
-
-
-
-
-

workflowBranchCancel

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/cancel
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/cancel"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        try {
-            apiInstance.workflowBranchCancel(projectId, branchId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowBranchCancel");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        try {
-            apiInstance.workflowBranchCancel(projectId, branchId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowBranchCancel");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowBranchCancelWith:projectId
-    branchId:branchId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowBranchCancel(projectId, branchId, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowBranchCancelExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.workflowBranchCancel(projectId, branchId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowBranchCancel: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-
-try {
-    $api_instance->workflowBranchCancel($projectId, $branchId);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowBranchCancel: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowBranchCancel(projectId => $projectId, branchId => $branchId);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowBranchCancel: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-
-try: 
-    api_instance.workflow_branch_cancel(projectId, branchId)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowBranchCancel: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

workflowCancel

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/cancel
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/cancel"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        try {
-            apiInstance.workflowCancel(projectId, branchId, workflowId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowCancel");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        try {
-            apiInstance.workflowCancel(projectId, branchId, workflowId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowCancel");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *workflowId = 56; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowCancelWith:projectId
-    branchId:branchId
-    workflowId:workflowId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var workflowId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowCancel(projectId, branchId, workflowId, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowCancelExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var workflowId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.workflowCancel(projectId, branchId, workflowId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowCancel: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$workflowId = 56; // Integer | 
-
-try {
-    $api_instance->workflowCancel($projectId, $branchId, $workflowId);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowCancel: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $workflowId = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowCancel(projectId => $projectId, branchId => $branchId, workflowId => $workflowId);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowCancel: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-workflowId = 56 # Integer | 
-
-try: 
-    api_instance.workflow_cancel(projectId, branchId, workflowId)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowCancel: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
workflowId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

workflowDelete

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X DELETE "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowDelete(projectId, branchId, workflowId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowDelete");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowDelete(projectId, branchId, workflowId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowDelete");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *workflowId = 56; // 
-Integer *modulePosition = 56; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowDeleteWith:projectId
-    branchId:branchId
-    workflowId:workflowId
-    modulePosition:modulePosition
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var workflowId = 56; // {Integer} 
-
-var modulePosition = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowDelete(projectId, branchId, workflowId, modulePosition, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowDeleteExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var workflowId = 56;  // Integer | 
-            var modulePosition = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.workflowDelete(projectId, branchId, workflowId, modulePosition);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowDelete: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$workflowId = 56; // Integer | 
-$modulePosition = 56; // Integer | 
-
-try {
-    $api_instance->workflowDelete($projectId, $branchId, $workflowId, $modulePosition);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowDelete: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $workflowId = 56; # Integer | 
-my $modulePosition = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowDelete(projectId => $projectId, branchId => $branchId, workflowId => $workflowId, modulePosition => $modulePosition);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowDelete: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-workflowId = 56 # Integer | 
-modulePosition = 56 # Integer | 
-
-try: 
-    api_instance.workflow_delete(projectId, branchId, workflowId, modulePosition)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowDelete: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
workflowId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
modulePosition* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

workflowFreezeFrom

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}/freeze
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}/freeze"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowFreezeFrom(projectId, branchId, workflowId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowFreezeFrom");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowFreezeFrom(projectId, branchId, workflowId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowFreezeFrom");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *workflowId = 56; // 
-Integer *modulePosition = 56; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowFreezeFromWith:projectId
-    branchId:branchId
-    workflowId:workflowId
-    modulePosition:modulePosition
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var workflowId = 56; // {Integer} 
-
-var modulePosition = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowFreezeFrom(projectId, branchId, workflowId, modulePosition, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowFreezeFromExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var workflowId = 56;  // Integer | 
-            var modulePosition = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.workflowFreezeFrom(projectId, branchId, workflowId, modulePosition);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowFreezeFrom: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$workflowId = 56; // Integer | 
-$modulePosition = 56; // Integer | 
-
-try {
-    $api_instance->workflowFreezeFrom($projectId, $branchId, $workflowId, $modulePosition);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowFreezeFrom: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $workflowId = 56; # Integer | 
-my $modulePosition = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowFreezeFrom(projectId => $projectId, branchId => $branchId, workflowId => $workflowId, modulePosition => $modulePosition);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowFreezeFrom: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-workflowId = 56 # Integer | 
-modulePosition = 56 # Integer | 
-
-try: 
-    api_instance.workflow_freeze_from(projectId, branchId, workflowId, modulePosition)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowFreezeFrom: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
workflowId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
modulePosition* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

workflowFreezeOne

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}/freeze_one
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}/freeze_one"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowFreezeOne(projectId, branchId, workflowId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowFreezeOne");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowFreezeOne(projectId, branchId, workflowId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowFreezeOne");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *workflowId = 56; // 
-Integer *modulePosition = 56; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowFreezeOneWith:projectId
-    branchId:branchId
-    workflowId:workflowId
-    modulePosition:modulePosition
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var workflowId = 56; // {Integer} 
-
-var modulePosition = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowFreezeOne(projectId, branchId, workflowId, modulePosition, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowFreezeOneExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var workflowId = 56;  // Integer | 
-            var modulePosition = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.workflowFreezeOne(projectId, branchId, workflowId, modulePosition);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowFreezeOne: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$workflowId = 56; // Integer | 
-$modulePosition = 56; // Integer | 
-
-try {
-    $api_instance->workflowFreezeOne($projectId, $branchId, $workflowId, $modulePosition);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowFreezeOne: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $workflowId = 56; # Integer | 
-my $modulePosition = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowFreezeOne(projectId => $projectId, branchId => $branchId, workflowId => $workflowId, modulePosition => $modulePosition);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowFreezeOne: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-workflowId = 56 # Integer | 
-modulePosition = 56 # Integer | 
-
-try: 
-    api_instance.workflow_freeze_one(projectId, branchId, workflowId, modulePosition)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowFreezeOne: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
workflowId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
modulePosition* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

workflowGet

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/workflows/{workflowId}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/workflows/{workflowId}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        try {
-            apiInstance.workflowGet(projectId, branchId, workflowId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowGet");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        try {
-            apiInstance.workflowGet(projectId, branchId, workflowId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowGet");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *workflowId = 56; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowGetWith:projectId
-    branchId:branchId
-    workflowId:workflowId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var workflowId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowGet(projectId, branchId, workflowId, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowGetExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var workflowId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.workflowGet(projectId, branchId, workflowId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowGet: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$workflowId = 56; // Integer | 
-
-try {
-    $api_instance->workflowGet($projectId, $branchId, $workflowId);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowGet: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $workflowId = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowGet(projectId => $projectId, branchId => $branchId, workflowId => $workflowId);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowGet: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-workflowId = 56 # Integer | 
-
-try: 
-    api_instance.workflow_get(projectId, branchId, workflowId)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowGet: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
workflowId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

workflowGetModule

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowGetModule(projectId, branchId, workflowId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowGetModule");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowGetModule(projectId, branchId, workflowId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowGetModule");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *workflowId = 56; // 
-Integer *modulePosition = 56; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowGetModuleWith:projectId
-    branchId:branchId
-    workflowId:workflowId
-    modulePosition:modulePosition
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var workflowId = 56; // {Integer} 
-
-var modulePosition = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowGetModule(projectId, branchId, workflowId, modulePosition, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowGetModuleExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var workflowId = 56;  // Integer | 
-            var modulePosition = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.workflowGetModule(projectId, branchId, workflowId, modulePosition);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowGetModule: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$workflowId = 56; // Integer | 
-$modulePosition = 56; // Integer | 
-
-try {
-    $api_instance->workflowGetModule($projectId, $branchId, $workflowId, $modulePosition);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowGetModule: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $workflowId = 56; # Integer | 
-my $modulePosition = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowGetModule(projectId => $projectId, branchId => $branchId, workflowId => $workflowId, modulePosition => $modulePosition);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowGetModule: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-workflowId = 56 # Integer | 
-modulePosition = 56 # Integer | 
-
-try: 
-    api_instance.workflow_get_module(projectId, branchId, workflowId, modulePosition)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowGetModule: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
workflowId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
modulePosition* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

workflowGraph

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/graph
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/graph"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        try {
-            apiInstance.workflowGraph(projectId, branchId, workflowId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowGraph");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        try {
-            apiInstance.workflowGraph(projectId, branchId, workflowId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowGraph");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *workflowId = 56; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowGraphWith:projectId
-    branchId:branchId
-    workflowId:workflowId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var workflowId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowGraph(projectId, branchId, workflowId, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowGraphExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var workflowId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.workflowGraph(projectId, branchId, workflowId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowGraph: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$workflowId = 56; // Integer | 
-
-try {
-    $api_instance->workflowGraph($projectId, $branchId, $workflowId);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowGraph: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $workflowId = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowGraph(projectId => $projectId, branchId => $branchId, workflowId => $workflowId);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowGraph: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-workflowId = 56 # Integer | 
-
-try: 
-    api_instance.workflow_graph(projectId, branchId, workflowId)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowGraph: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
workflowId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

workflowHeadAppend

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/head/modules
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/head/modules"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Body_7 body = ; // Body_7 | 
-        try {
-            apiInstance.workflowHeadAppend(projectId, branchId, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadAppend");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Body_7 body = ; // Body_7 | 
-        try {
-            apiInstance.workflowHeadAppend(projectId, branchId, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadAppend");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Body_7 *body = ; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowHeadAppendWith:projectId
-    branchId:branchId
-    body:body
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var body = ; // {Body_7} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowHeadAppend(projectId, branchId, body, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowHeadAppendExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var body = new Body_7(); // Body_7 | 
-
-            try
-            {
-                apiInstance.workflowHeadAppend(projectId, branchId, body);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowHeadAppend: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$body = ; // Body_7 | 
-
-try {
-    $api_instance->workflowHeadAppend($projectId, $branchId, $body);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowHeadAppend: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $body = WWW::SwaggerClient::Object::Body_7->new(); # Body_7 | 
-
-eval { 
-    $api_instance->workflowHeadAppend(projectId => $projectId, branchId => $branchId, body => $body);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowHeadAppend: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-body =  # Body_7 | 
-
-try: 
-    api_instance.workflow_head_append(projectId, branchId, body)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowHeadAppend: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - -
Body parameters
- - - - - - - - - -
NameDescription
body * - - - -
-
- - - -

Responses

-
-
-
-
-
-
-

workflowHeadCancel

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/head/cancel
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/head/cancel"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        try {
-            apiInstance.workflowHeadCancel(projectId, branchId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadCancel");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        try {
-            apiInstance.workflowHeadCancel(projectId, branchId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadCancel");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowHeadCancelWith:projectId
-    branchId:branchId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowHeadCancel(projectId, branchId, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowHeadCancelExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.workflowHeadCancel(projectId, branchId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowHeadCancel: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-
-try {
-    $api_instance->workflowHeadCancel($projectId, $branchId);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowHeadCancel: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowHeadCancel(projectId => $projectId, branchId => $branchId);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowHeadCancel: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-
-try: 
-    api_instance.workflow_head_cancel(projectId, branchId)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowHeadCancel: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

workflowHeadDelete

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X DELETE "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowHeadDelete(projectId, branchId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadDelete");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowHeadDelete(projectId, branchId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadDelete");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *modulePosition = 56; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowHeadDeleteWith:projectId
-    branchId:branchId
-    modulePosition:modulePosition
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var modulePosition = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowHeadDelete(projectId, branchId, modulePosition, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowHeadDeleteExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var modulePosition = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.workflowHeadDelete(projectId, branchId, modulePosition);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowHeadDelete: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$modulePosition = 56; // Integer | 
-
-try {
-    $api_instance->workflowHeadDelete($projectId, $branchId, $modulePosition);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowHeadDelete: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $modulePosition = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowHeadDelete(projectId => $projectId, branchId => $branchId, modulePosition => $modulePosition);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowHeadDelete: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-modulePosition = 56 # Integer | 
-
-try: 
-    api_instance.workflow_head_delete(projectId, branchId, modulePosition)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowHeadDelete: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
modulePosition* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

workflowHeadFreezeFrom

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}/freeze
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}/freeze"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowHeadFreezeFrom(projectId, branchId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadFreezeFrom");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowHeadFreezeFrom(projectId, branchId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadFreezeFrom");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *modulePosition = 56; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowHeadFreezeFromWith:projectId
-    branchId:branchId
-    modulePosition:modulePosition
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var modulePosition = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowHeadFreezeFrom(projectId, branchId, modulePosition, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowHeadFreezeFromExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var modulePosition = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.workflowHeadFreezeFrom(projectId, branchId, modulePosition);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowHeadFreezeFrom: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$modulePosition = 56; // Integer | 
-
-try {
-    $api_instance->workflowHeadFreezeFrom($projectId, $branchId, $modulePosition);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowHeadFreezeFrom: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $modulePosition = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowHeadFreezeFrom(projectId => $projectId, branchId => $branchId, modulePosition => $modulePosition);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowHeadFreezeFrom: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-modulePosition = 56 # Integer | 
-
-try: 
-    api_instance.workflow_head_freeze_from(projectId, branchId, modulePosition)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowHeadFreezeFrom: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
modulePosition* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

workflowHeadFreezeOne

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}/freeze_one
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}/freeze_one"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowHeadFreezeOne(projectId, branchId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadFreezeOne");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowHeadFreezeOne(projectId, branchId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadFreezeOne");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *modulePosition = 56; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowHeadFreezeOneWith:projectId
-    branchId:branchId
-    modulePosition:modulePosition
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var modulePosition = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowHeadFreezeOne(projectId, branchId, modulePosition, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowHeadFreezeOneExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var modulePosition = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.workflowHeadFreezeOne(projectId, branchId, modulePosition);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowHeadFreezeOne: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$modulePosition = 56; // Integer | 
-
-try {
-    $api_instance->workflowHeadFreezeOne($projectId, $branchId, $modulePosition);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowHeadFreezeOne: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $modulePosition = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowHeadFreezeOne(projectId => $projectId, branchId => $branchId, modulePosition => $modulePosition);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowHeadFreezeOne: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-modulePosition = 56 # Integer | 
-
-try: 
-    api_instance.workflow_head_freeze_one(projectId, branchId, modulePosition)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowHeadFreezeOne: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
modulePosition* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

workflowHeadGet

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/head
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/head"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        try {
-            apiInstance.workflowHeadGet(projectId, branchId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadGet");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        try {
-            apiInstance.workflowHeadGet(projectId, branchId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadGet");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowHeadGetWith:projectId
-    branchId:branchId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowHeadGet(projectId, branchId, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowHeadGetExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.workflowHeadGet(projectId, branchId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowHeadGet: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-
-try {
-    $api_instance->workflowHeadGet($projectId, $branchId);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowHeadGet: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowHeadGet(projectId => $projectId, branchId => $branchId);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowHeadGet: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-
-try: 
-    api_instance.workflow_head_get(projectId, branchId)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowHeadGet: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

workflowHeadGetModule

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowHeadGetModule(projectId, branchId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadGetModule");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowHeadGetModule(projectId, branchId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadGetModule");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *modulePosition = 56; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowHeadGetModuleWith:projectId
-    branchId:branchId
-    modulePosition:modulePosition
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var modulePosition = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowHeadGetModule(projectId, branchId, modulePosition, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowHeadGetModuleExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var modulePosition = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.workflowHeadGetModule(projectId, branchId, modulePosition);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowHeadGetModule: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$modulePosition = 56; // Integer | 
-
-try {
-    $api_instance->workflowHeadGetModule($projectId, $branchId, $modulePosition);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowHeadGetModule: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $modulePosition = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowHeadGetModule(projectId => $projectId, branchId => $branchId, modulePosition => $modulePosition);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowHeadGetModule: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-modulePosition = 56 # Integer | 
-
-try: 
-    api_instance.workflow_head_get_module(projectId, branchId, modulePosition)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowHeadGetModule: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
modulePosition* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

workflowHeadGraph

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/head/graph
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/head/graph"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        try {
-            apiInstance.workflowHeadGraph(projectId, branchId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadGraph");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        try {
-            apiInstance.workflowHeadGraph(projectId, branchId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadGraph");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowHeadGraphWith:projectId
-    branchId:branchId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowHeadGraph(projectId, branchId, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowHeadGraphExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.workflowHeadGraph(projectId, branchId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowHeadGraph: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-
-try {
-    $api_instance->workflowHeadGraph($projectId, $branchId);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowHeadGraph: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowHeadGraph(projectId => $projectId, branchId => $branchId);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowHeadGraph: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-
-try: 
-    api_instance.workflow_head_graph(projectId, branchId)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowHeadGraph: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

workflowHeadInsert

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        Body_9 body = ; // Body_9 | 
-        try {
-            apiInstance.workflowHeadInsert(projectId, branchId, modulePosition, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadInsert");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        Body_9 body = ; // Body_9 | 
-        try {
-            apiInstance.workflowHeadInsert(projectId, branchId, modulePosition, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadInsert");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *modulePosition = 56; // 
-Body_9 *body = ; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowHeadInsertWith:projectId
-    branchId:branchId
-    modulePosition:modulePosition
-    body:body
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var modulePosition = 56; // {Integer} 
-
-var body = ; // {Body_9} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowHeadInsert(projectId, branchId, modulePositionbody, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowHeadInsertExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var modulePosition = 56;  // Integer | 
-            var body = new Body_9(); // Body_9 | 
-
-            try
-            {
-                apiInstance.workflowHeadInsert(projectId, branchId, modulePosition, body);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowHeadInsert: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$modulePosition = 56; // Integer | 
-$body = ; // Body_9 | 
-
-try {
-    $api_instance->workflowHeadInsert($projectId, $branchId, $modulePosition, $body);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowHeadInsert: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $modulePosition = 56; # Integer | 
-my $body = WWW::SwaggerClient::Object::Body_9->new(); # Body_9 | 
-
-eval { 
-    $api_instance->workflowHeadInsert(projectId => $projectId, branchId => $branchId, modulePosition => $modulePosition, body => $body);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowHeadInsert: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-modulePosition = 56 # Integer | 
-body =  # Body_9 | 
-
-try: 
-    api_instance.workflow_head_insert(projectId, branchId, modulePosition, body)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowHeadInsert: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
modulePosition* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - -
Body parameters
- - - - - - - - - -
NameDescription
body * - - - -
-
- - - -

Responses

-
-
-
-
-
-
-

workflowHeadModules

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/head/modules
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/head/modules"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        try {
-            apiInstance.workflowHeadModules(projectId, branchId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadModules");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        try {
-            apiInstance.workflowHeadModules(projectId, branchId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadModules");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowHeadModulesWith:projectId
-    branchId:branchId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowHeadModules(projectId, branchId, , callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowHeadModulesExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.workflowHeadModules(projectId, branchId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowHeadModules: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-
-try {
-    $api_instance->workflowHeadModules($projectId, $branchId);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowHeadModules: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowHeadModules(projectId => $projectId, branchId => $branchId);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowHeadModules: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-
-try: 
-    api_instance.workflow_head_modules(projectId, branchId)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowHeadModules: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

workflowHeadQuery

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/head/sql
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/head/sql?query="
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        String query = query_example; // String | 
-        try {
-            apiInstance.workflowHeadQuery(projectId, branchId, query);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadQuery");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        String query = query_example; // String | 
-        try {
-            apiInstance.workflowHeadQuery(projectId, branchId, query);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadQuery");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-String *query = query_example; //  (optional)
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowHeadQueryWith:projectId
-    branchId:branchId
-    query:query
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var opts = { 
-  'query': query_example // {String} 
-};
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowHeadQuery(projectId, branchId, opts, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowHeadQueryExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var query = query_example;  // String |  (optional) 
-
-            try
-            {
-                apiInstance.workflowHeadQuery(projectId, branchId, query);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowHeadQuery: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$query = query_example; // String | 
-
-try {
-    $api_instance->workflowHeadQuery($projectId, $branchId, $query);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowHeadQuery: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $query = query_example; # String | 
-
-eval { 
-    $api_instance->workflowHeadQuery(projectId => $projectId, branchId => $branchId, query => $query);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowHeadQuery: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-query = query_example # String |  (optional)
-
-try: 
-    api_instance.workflow_head_query(projectId, branchId, query=query)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowHeadQuery: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - -
Query parameters
- - - - - - - - - -
NameDescription
query - - -
-
-
- - String - - -
-
-
-
- -

Responses

-
-
-
-
-
-
-

workflowHeadReplace

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X PUT "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        Body_8 body = ; // Body_8 | 
-        try {
-            apiInstance.workflowHeadReplace(projectId, branchId, modulePosition, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadReplace");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        Body_8 body = ; // Body_8 | 
-        try {
-            apiInstance.workflowHeadReplace(projectId, branchId, modulePosition, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadReplace");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *modulePosition = 56; // 
-Body_8 *body = ; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowHeadReplaceWith:projectId
-    branchId:branchId
-    modulePosition:modulePosition
-    body:body
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var modulePosition = 56; // {Integer} 
-
-var body = ; // {Body_8} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowHeadReplace(projectId, branchId, modulePositionbody, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowHeadReplaceExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var modulePosition = 56;  // Integer | 
-            var body = new Body_8(); // Body_8 | 
-
-            try
-            {
-                apiInstance.workflowHeadReplace(projectId, branchId, modulePosition, body);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowHeadReplace: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$modulePosition = 56; // Integer | 
-$body = ; // Body_8 | 
-
-try {
-    $api_instance->workflowHeadReplace($projectId, $branchId, $modulePosition, $body);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowHeadReplace: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $modulePosition = 56; # Integer | 
-my $body = WWW::SwaggerClient::Object::Body_8->new(); # Body_8 | 
-
-eval { 
-    $api_instance->workflowHeadReplace(projectId => $projectId, branchId => $branchId, modulePosition => $modulePosition, body => $body);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowHeadReplace: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-modulePosition = 56 # Integer | 
-body =  # Body_8 | 
-
-try: 
-    api_instance.workflow_head_replace(projectId, branchId, modulePosition, body)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowHeadReplace: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
modulePosition* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - -
Body parameters
- - - - - - - - - -
NameDescription
body * - - - -
-
- - - -

Responses

-
-
-
-
-
-
-

workflowHeadSuggest

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/head/suggest
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/head/suggest?before=&after="
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer before = 56; // Integer | 
-        Integer after = 56; // Integer | 
-        try {
-            apiInstance.workflowHeadSuggest(projectId, branchId, before, after);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadSuggest");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer before = 56; // Integer | 
-        Integer after = 56; // Integer | 
-        try {
-            apiInstance.workflowHeadSuggest(projectId, branchId, before, after);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadSuggest");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *before = 56; //  (optional)
-Integer *after = 56; //  (optional)
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowHeadSuggestWith:projectId
-    branchId:branchId
-    before:before
-    after:after
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var opts = { 
-  'before': 56, // {Integer} 
-  'after': 56 // {Integer} 
-};
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowHeadSuggest(projectId, branchId, opts, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowHeadSuggestExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var before = 56;  // Integer |  (optional) 
-            var after = 56;  // Integer |  (optional) 
-
-            try
-            {
-                apiInstance.workflowHeadSuggest(projectId, branchId, before, after);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowHeadSuggest: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$before = 56; // Integer | 
-$after = 56; // Integer | 
-
-try {
-    $api_instance->workflowHeadSuggest($projectId, $branchId, $before, $after);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowHeadSuggest: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $before = 56; # Integer | 
-my $after = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowHeadSuggest(projectId => $projectId, branchId => $branchId, before => $before, after => $after);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowHeadSuggest: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-before = 56 # Integer |  (optional)
-after = 56 # Integer |  (optional)
-
-try: 
-    api_instance.workflow_head_suggest(projectId, branchId, before=before, after=after)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowHeadSuggest: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - -
Query parameters
- - - - - - - - - - - - - -
NameDescription
before - - -
-
-
- - Integer - - -
-
-
-
after - - -
-
-
- - Integer - - -
-
-
-
- -

Responses

-
-
-
-
-
-
-

workflowHeadThawOne

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}/thaw_one
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}/thaw_one"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowHeadThawOne(projectId, branchId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadThawOne");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowHeadThawOne(projectId, branchId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadThawOne");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *modulePosition = 56; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowHeadThawOneWith:projectId
-    branchId:branchId
-    modulePosition:modulePosition
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var modulePosition = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowHeadThawOne(projectId, branchId, modulePosition, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowHeadThawOneExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var modulePosition = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.workflowHeadThawOne(projectId, branchId, modulePosition);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowHeadThawOne: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$modulePosition = 56; // Integer | 
-
-try {
-    $api_instance->workflowHeadThawOne($projectId, $branchId, $modulePosition);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowHeadThawOne: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $modulePosition = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowHeadThawOne(projectId => $projectId, branchId => $branchId, modulePosition => $modulePosition);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowHeadThawOne: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-modulePosition = 56 # Integer | 
-
-try: 
-    api_instance.workflow_head_thaw_one(projectId, branchId, modulePosition)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowHeadThawOne: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
modulePosition* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

workflowHeadThawUpto

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}/thaw
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}/thaw"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowHeadThawUpto(projectId, branchId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadThawUpto");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowHeadThawUpto(projectId, branchId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowHeadThawUpto");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *modulePosition = 56; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowHeadThawUptoWith:projectId
-    branchId:branchId
-    modulePosition:modulePosition
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var modulePosition = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowHeadThawUpto(projectId, branchId, modulePosition, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowHeadThawUptoExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var modulePosition = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.workflowHeadThawUpto(projectId, branchId, modulePosition);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowHeadThawUpto: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$modulePosition = 56; // Integer | 
-
-try {
-    $api_instance->workflowHeadThawUpto($projectId, $branchId, $modulePosition);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowHeadThawUpto: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $modulePosition = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowHeadThawUpto(projectId => $projectId, branchId => $branchId, modulePosition => $modulePosition);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowHeadThawUpto: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-modulePosition = 56 # Integer | 
-
-try: 
-    api_instance.workflow_head_thaw_upto(projectId, branchId, modulePosition)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowHeadThawUpto: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
modulePosition* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

workflowInsert

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        Body_13 body = ; // Body_13 | 
-        try {
-            apiInstance.workflowInsert(projectId, branchId, workflowId, modulePosition, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowInsert");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        Body_13 body = ; // Body_13 | 
-        try {
-            apiInstance.workflowInsert(projectId, branchId, workflowId, modulePosition, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowInsert");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *workflowId = 56; // 
-Integer *modulePosition = 56; // 
-Body_13 *body = ; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowInsertWith:projectId
-    branchId:branchId
-    workflowId:workflowId
-    modulePosition:modulePosition
-    body:body
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var workflowId = 56; // {Integer} 
-
-var modulePosition = 56; // {Integer} 
-
-var body = ; // {Body_13} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowInsert(projectId, branchId, workflowId, modulePositionbody, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowInsertExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var workflowId = 56;  // Integer | 
-            var modulePosition = 56;  // Integer | 
-            var body = new Body_13(); // Body_13 | 
-
-            try
-            {
-                apiInstance.workflowInsert(projectId, branchId, workflowId, modulePosition, body);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowInsert: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$workflowId = 56; // Integer | 
-$modulePosition = 56; // Integer | 
-$body = ; // Body_13 | 
-
-try {
-    $api_instance->workflowInsert($projectId, $branchId, $workflowId, $modulePosition, $body);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowInsert: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $workflowId = 56; # Integer | 
-my $modulePosition = 56; # Integer | 
-my $body = WWW::SwaggerClient::Object::Body_13->new(); # Body_13 | 
-
-eval { 
-    $api_instance->workflowInsert(projectId => $projectId, branchId => $branchId, workflowId => $workflowId, modulePosition => $modulePosition, body => $body);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowInsert: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-workflowId = 56 # Integer | 
-modulePosition = 56 # Integer | 
-body =  # Body_13 | 
-
-try: 
-    api_instance.workflow_insert(projectId, branchId, workflowId, modulePosition, body)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowInsert: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
workflowId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
modulePosition* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - -
Body parameters
- - - - - - - - - -
NameDescription
body * - - - -
-
- - - -

Responses

-
-
-
-
-
-
-

workflowModules

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        try {
-            apiInstance.workflowModules(projectId, branchId, workflowId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowModules");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        try {
-            apiInstance.workflowModules(projectId, branchId, workflowId);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowModules");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *workflowId = 56; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowModulesWith:projectId
-    branchId:branchId
-    workflowId:workflowId
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var workflowId = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowModules(projectId, branchId, workflowId, , callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowModulesExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var workflowId = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.workflowModules(projectId, branchId, workflowId);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowModules: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$workflowId = 56; // Integer | 
-
-try {
-    $api_instance->workflowModules($projectId, $branchId, $workflowId);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowModules: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $workflowId = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowModules(projectId => $projectId, branchId => $branchId, workflowId => $workflowId);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowModules: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-workflowId = 56 # Integer | 
-
-try: 
-    api_instance.workflow_modules(projectId, branchId, workflowId)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowModules: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
workflowId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

workflowQuery

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/sql
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/sql?query="
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        String query = query_example; // String | 
-        try {
-            apiInstance.workflowQuery(projectId, branchId, workflowId, query);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowQuery");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        String query = query_example; // String | 
-        try {
-            apiInstance.workflowQuery(projectId, branchId, workflowId, query);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowQuery");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *workflowId = 56; // 
-String *query = query_example; //  (optional)
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowQueryWith:projectId
-    branchId:branchId
-    workflowId:workflowId
-    query:query
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var workflowId = 56; // {Integer} 
-
-var opts = { 
-  'query': query_example // {String} 
-};
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowQuery(projectId, branchId, workflowId, opts, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowQueryExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var workflowId = 56;  // Integer | 
-            var query = query_example;  // String |  (optional) 
-
-            try
-            {
-                apiInstance.workflowQuery(projectId, branchId, workflowId, query);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowQuery: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$workflowId = 56; // Integer | 
-$query = query_example; // String | 
-
-try {
-    $api_instance->workflowQuery($projectId, $branchId, $workflowId, $query);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowQuery: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $workflowId = 56; # Integer | 
-my $query = query_example; # String | 
-
-eval { 
-    $api_instance->workflowQuery(projectId => $projectId, branchId => $branchId, workflowId => $workflowId, query => $query);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowQuery: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-workflowId = 56 # Integer | 
-query = query_example # String |  (optional)
-
-try: 
-    api_instance.workflow_query(projectId, branchId, workflowId, query=query)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowQuery: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
workflowId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - -
Query parameters
- - - - - - - - - -
NameDescription
query - - -
-
-
- - String - - -
-
-
-
- -

Responses

-
-
-
-
-
-
-

workflowReplace

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X PUT "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        Body_12 body = ; // Body_12 | 
-        try {
-            apiInstance.workflowReplace(projectId, branchId, workflowId, modulePosition, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowReplace");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        Body_12 body = ; // Body_12 | 
-        try {
-            apiInstance.workflowReplace(projectId, branchId, workflowId, modulePosition, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowReplace");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *workflowId = 56; // 
-Integer *modulePosition = 56; // 
-Body_12 *body = ; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowReplaceWith:projectId
-    branchId:branchId
-    workflowId:workflowId
-    modulePosition:modulePosition
-    body:body
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var workflowId = 56; // {Integer} 
-
-var modulePosition = 56; // {Integer} 
-
-var body = ; // {Body_12} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowReplace(projectId, branchId, workflowId, modulePositionbody, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowReplaceExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var workflowId = 56;  // Integer | 
-            var modulePosition = 56;  // Integer | 
-            var body = new Body_12(); // Body_12 | 
-
-            try
-            {
-                apiInstance.workflowReplace(projectId, branchId, workflowId, modulePosition, body);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowReplace: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$workflowId = 56; // Integer | 
-$modulePosition = 56; // Integer | 
-$body = ; // Body_12 | 
-
-try {
-    $api_instance->workflowReplace($projectId, $branchId, $workflowId, $modulePosition, $body);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowReplace: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $workflowId = 56; # Integer | 
-my $modulePosition = 56; # Integer | 
-my $body = WWW::SwaggerClient::Object::Body_12->new(); # Body_12 | 
-
-eval { 
-    $api_instance->workflowReplace(projectId => $projectId, branchId => $branchId, workflowId => $workflowId, modulePosition => $modulePosition, body => $body);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowReplace: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-workflowId = 56 # Integer | 
-modulePosition = 56 # Integer | 
-body =  # Body_12 | 
-
-try: 
-    api_instance.workflow_replace(projectId, branchId, workflowId, modulePosition, body)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowReplace: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
workflowId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
modulePosition* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - -
Body parameters
- - - - - - - - - -
NameDescription
body * - - - -
-
- - - -

Responses

-
-
-
-
-
-
-

workflowRun

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/head/run
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/head/run"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Body_10 body = ; // Body_10 | 
-        try {
-            apiInstance.workflowRun(projectId, branchId, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowRun");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Body_10 body = ; // Body_10 | 
-        try {
-            apiInstance.workflowRun(projectId, branchId, body);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowRun");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Body_10 *body = ; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowRunWith:projectId
-    branchId:branchId
-    body:body
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var body = ; // {Body_10} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowRun(projectId, branchId, body, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowRunExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var body = new Body_10(); // Body_10 | 
-
-            try
-            {
-                apiInstance.workflowRun(projectId, branchId, body);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowRun: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$body = ; // Body_10 | 
-
-try {
-    $api_instance->workflowRun($projectId, $branchId, $body);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowRun: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $body = WWW::SwaggerClient::Object::Body_10->new(); # Body_10 | 
-
-eval { 
-    $api_instance->workflowRun(projectId => $projectId, branchId => $branchId, body => $body);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowRun: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-body =  # Body_10 | 
-
-try: 
-    api_instance.workflow_run(projectId, branchId, body)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowRun: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - -
Body parameters
- - - - - - - - - -
NameDescription
body * - - - -
-
- - - -

Responses

-
-
-
-
-
-
-

workflowSuggest

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/suggest
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X GET "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/suggest?before=&after="
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        Integer before = 56; // Integer | 
-        Integer after = 56; // Integer | 
-        try {
-            apiInstance.workflowSuggest(projectId, branchId, workflowId, before, after);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowSuggest");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        Integer before = 56; // Integer | 
-        Integer after = 56; // Integer | 
-        try {
-            apiInstance.workflowSuggest(projectId, branchId, workflowId, before, after);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowSuggest");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *workflowId = 56; // 
-Integer *before = 56; //  (optional)
-Integer *after = 56; //  (optional)
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowSuggestWith:projectId
-    branchId:branchId
-    workflowId:workflowId
-    before:before
-    after:after
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var workflowId = 56; // {Integer} 
-
-var opts = { 
-  'before': 56, // {Integer} 
-  'after': 56 // {Integer} 
-};
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowSuggest(projectId, branchId, workflowId, opts, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowSuggestExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var workflowId = 56;  // Integer | 
-            var before = 56;  // Integer |  (optional) 
-            var after = 56;  // Integer |  (optional) 
-
-            try
-            {
-                apiInstance.workflowSuggest(projectId, branchId, workflowId, before, after);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowSuggest: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$workflowId = 56; // Integer | 
-$before = 56; // Integer | 
-$after = 56; // Integer | 
-
-try {
-    $api_instance->workflowSuggest($projectId, $branchId, $workflowId, $before, $after);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowSuggest: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $workflowId = 56; # Integer | 
-my $before = 56; # Integer | 
-my $after = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowSuggest(projectId => $projectId, branchId => $branchId, workflowId => $workflowId, before => $before, after => $after);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowSuggest: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-workflowId = 56 # Integer | 
-before = 56 # Integer |  (optional)
-after = 56 # Integer |  (optional)
-
-try: 
-    api_instance.workflow_suggest(projectId, branchId, workflowId, before=before, after=after)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowSuggest: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
workflowId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - -
Query parameters
- - - - - - - - - - - - - -
NameDescription
before - - -
-
-
- - Integer - - -
-
-
-
after - - -
-
-
- - Integer - - -
-
-
-
- -

Responses

-
-
-
-
-
-
-

workflowThawOne

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}/thaw_one
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}/thaw_one"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowThawOne(projectId, branchId, workflowId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowThawOne");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowThawOne(projectId, branchId, workflowId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowThawOne");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *workflowId = 56; // 
-Integer *modulePosition = 56; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowThawOneWith:projectId
-    branchId:branchId
-    workflowId:workflowId
-    modulePosition:modulePosition
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var workflowId = 56; // {Integer} 
-
-var modulePosition = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowThawOne(projectId, branchId, workflowId, modulePosition, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowThawOneExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var workflowId = 56;  // Integer | 
-            var modulePosition = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.workflowThawOne(projectId, branchId, workflowId, modulePosition);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowThawOne: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$workflowId = 56; // Integer | 
-$modulePosition = 56; // Integer | 
-
-try {
-    $api_instance->workflowThawOne($projectId, $branchId, $workflowId, $modulePosition);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowThawOne: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $workflowId = 56; # Integer | 
-my $modulePosition = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowThawOne(projectId => $projectId, branchId => $branchId, workflowId => $workflowId, modulePosition => $modulePosition);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowThawOne: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-workflowId = 56 # Integer | 
-modulePosition = 56 # Integer | 
-
-try: 
-    api_instance.workflow_thaw_one(projectId, branchId, workflowId, modulePosition)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowThawOne: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
workflowId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
modulePosition* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
-
-

workflowThawUpto

-

-
-
-
-

-

-

-
-
/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}/thaw
-

-

Usage and SDK Samples

-

- - -
-
-
curl -X POST "https://localhost:5000/vizier-db/api/v1/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}/thaw"
-
-
-
import io.swagger.client.*;
-import io.swagger.client.auth.*;
-import io.swagger.client.model.*;
-import io.swagger.client.api.WorkflowApi;
-
-import java.io.File;
-import java.util.*;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowThawUpto(projectId, branchId, workflowId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowThawUpto");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
import io.swagger.client.api.WorkflowApi;
-
-public class WorkflowApiExample {
-
-    public static void main(String[] args) {
-        WorkflowApi apiInstance = new WorkflowApi();
-        Integer projectId = 56; // Integer | 
-        Integer branchId = 56; // Integer | 
-        Integer workflowId = 56; // Integer | 
-        Integer modulePosition = 56; // Integer | 
-        try {
-            apiInstance.workflowThawUpto(projectId, branchId, workflowId, modulePosition);
-        } catch (ApiException e) {
-            System.err.println("Exception when calling WorkflowApi#workflowThawUpto");
-            e.printStackTrace();
-        }
-    }
-}
-
- -
-
Integer *projectId = 56; // 
-Integer *branchId = 56; // 
-Integer *workflowId = 56; // 
-Integer *modulePosition = 56; // 
-
-WorkflowApi *apiInstance = [[WorkflowApi alloc] init];
-
-[apiInstance workflowThawUptoWith:projectId
-    branchId:branchId
-    workflowId:workflowId
-    modulePosition:modulePosition
-              completionHandler: ^(NSError* error) {
-                            if (error) {
-                                NSLog(@"Error: %@", error);
-                            }
-                        }];
-
-
- -
-
var VizierDb = require('vizier_db');
-
-var api = new VizierDb.WorkflowApi()
-
-var projectId = 56; // {Integer} 
-
-var branchId = 56; // {Integer} 
-
-var workflowId = 56; // {Integer} 
-
-var modulePosition = 56; // {Integer} 
-
-
-var callback = function(error, data, response) {
-  if (error) {
-    console.error(error);
-  } else {
-    console.log('API called successfully.');
-  }
-};
-api.workflowThawUpto(projectId, branchId, workflowId, modulePosition, callback);
-
-
- - -
-
using System;
-using System.Diagnostics;
-using IO.Swagger.Api;
-using IO.Swagger.Client;
-using IO.Swagger.Model;
-
-namespace Example
-{
-    public class workflowThawUptoExample
-    {
-        public void main()
-        {
-            
-            var apiInstance = new WorkflowApi();
-            var projectId = 56;  // Integer | 
-            var branchId = 56;  // Integer | 
-            var workflowId = 56;  // Integer | 
-            var modulePosition = 56;  // Integer | 
-
-            try
-            {
-                apiInstance.workflowThawUpto(projectId, branchId, workflowId, modulePosition);
-            }
-            catch (Exception e)
-            {
-                Debug.Print("Exception when calling WorkflowApi.workflowThawUpto: " + e.Message );
-            }
-        }
-    }
-}
-
-
- -
-
<?php
-require_once(__DIR__ . '/vendor/autoload.php');
-
-$api_instance = new Swagger\Client\Api\WorkflowApi();
-$projectId = 56; // Integer | 
-$branchId = 56; // Integer | 
-$workflowId = 56; // Integer | 
-$modulePosition = 56; // Integer | 
-
-try {
-    $api_instance->workflowThawUpto($projectId, $branchId, $workflowId, $modulePosition);
-} catch (Exception $e) {
-    echo 'Exception when calling WorkflowApi->workflowThawUpto: ', $e->getMessage(), PHP_EOL;
-}
-?>
-
- -
-
use Data::Dumper;
-use WWW::SwaggerClient::Configuration;
-use WWW::SwaggerClient::WorkflowApi;
-
-my $api_instance = WWW::SwaggerClient::WorkflowApi->new();
-my $projectId = 56; # Integer | 
-my $branchId = 56; # Integer | 
-my $workflowId = 56; # Integer | 
-my $modulePosition = 56; # Integer | 
-
-eval { 
-    $api_instance->workflowThawUpto(projectId => $projectId, branchId => $branchId, workflowId => $workflowId, modulePosition => $modulePosition);
-};
-if ($@) {
-    warn "Exception when calling WorkflowApi->workflowThawUpto: $@\n";
-}
-
- -
-
from __future__ import print_statement
-import time
-import swagger_client
-from swagger_client.rest import ApiException
-from pprint import pprint
-
-# create an instance of the API class
-api_instance = swagger_client.WorkflowApi()
-projectId = 56 # Integer | 
-branchId = 56 # Integer | 
-workflowId = 56 # Integer | 
-modulePosition = 56 # Integer | 
-
-try: 
-    api_instance.workflow_thaw_upto(projectId, branchId, workflowId, modulePosition)
-except ApiException as e:
-    print("Exception when calling WorkflowApi->workflowThawUpto: %s\n" % e)
-
-
- -

Parameters

- -
Path parameters
- - - - - - - - - - - - - - - - - - - - - -
NameDescription
projectId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
branchId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
workflowId* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
modulePosition* - - -
-
-
- - Integer - - -
-
- Required -
-
-
-
- - - - - -

Responses

-
-
-
-
-
- -
-
-
- - - - - - - - - - - - - - diff --git a/vizier/shared/resources/swagger/vizier-api.json b/vizier/shared/resources/swagger/vizier-api.json deleted file mode 100644 index c5c49988..00000000 --- a/vizier/shared/resources/swagger/vizier-api.json +++ /dev/null @@ -1,1778 +0,0 @@ -{ - "swagger" : "2.0", - "basePath" : "vizier-db/api/v1", - "info" : { - "title" : "Vizier DB", - "description" : "A 'data-centric' microkernel notebook", - "version" : "v1.1", - "contact" : { - "name" : "University at Buffalo, Illinois Institute of Technology, New York University, Breadcrumb Analytics", - "url" : "https://vizierdb.info", - "email" : "info@vizierdb.info" - } - }, - "paths" : { - "/" : { - "get" : { - "operationId" : "serviceDescriptor", - "produces" : [ "application/json" ], - "tags" : [ "service" ], - "parameters" : [ ] - }, - "parameters" : [ ] - }, - "/config/python" : { - "get" : { - "operationId" : "configListPythonEnvs", - "produces" : [ "application/json" ], - "tags" : [ "config" ], - "parameters" : [ ] - }, - "parameters" : [ ] - }, - "/config/python/envById/{envId}" : { - "get" : { - "operationId" : "configGetPythonEnv", - "produces" : [ "application/json" ], - "tags" : [ "config" ], - "parameters" : [ ] - }, - "put" : { - "operationId" : "configUpdatePythonEnv", - "produces" : [ "application/json" ], - "tags" : [ "config" ], - "parameters" : [ { - "name" : "Body", - "in" : "body", - "required" : true, - "schema" : { - "type" : "object", - "required" : [ "spec" ], - "properties" : { - "spec" : { - "$ref" : "#/definitions/PythonEnvironmentDescriptor" - } - } - } - } ] - }, - "delete" : { - "operationId" : "configDeletePythonEnv", - "produces" : [ "application/json" ], - "tags" : [ "config" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "envId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/config/python/envByName/{env}" : { - "get" : { - "operationId" : "configGetPythonEnvByname", - "produces" : [ "application/json" ], - "tags" : [ "config" ], - "parameters" : [ ] - }, - "put" : { - "operationId" : "configCreatePythonEnv", - "produces" : [ "application/json" ], - "tags" : [ "config" ], - "parameters" : [ { - "name" : "Body", - "in" : "body", - "required" : true, - "schema" : { - "type" : "object", - "required" : [ "spec" ], - "properties" : { - "spec" : { - "$ref" : "#/definitions/PythonEnvironmentDescriptor" - } - } - } - } ] - }, - "parameters" : [ { - "name" : "env", - "in" : "path", - "required" : true, - "type" : "string" - } ] - }, - "/config/registry" : { - "get" : { - "operationId" : "configGetRegistry", - "produces" : [ "application/json" ], - "tags" : [ "config" ], - "parameters" : [ ] - }, - "parameters" : [ ] - }, - "/config/registry/{key}" : { - "get" : { - "operationId" : "configGetRegistryKey", - "produces" : [ "application/json" ], - "tags" : [ "config" ], - "parameters" : [ ] - }, - "put" : { - "operationId" : "configSetRegistryKey", - "produces" : [ "application/json" ], - "tags" : [ "config" ], - "parameters" : [ { - "name" : "value", - "in" : "body", - "required" : true, - "schema" : { - "type" : "string" - } - } ] - }, - "parameters" : [ { - "name" : "key", - "in" : "path", - "required" : true, - "type" : "string" - } ] - }, - "/filesystem" : { - "get" : { - "operationId" : "fsGetRoot", - "produces" : [ "application/json" ], - "tags" : [ "fs" ], - "parameters" : [ ] - }, - "parameters" : [ ] - }, - "/filesystem/{path}" : { - "get" : { - "operationId" : "fsGet", - "produces" : [ "application/json" ], - "tags" : [ "fs" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "path", - "in" : "path", - "required" : true, - "type" : "string" - } ] - }, - "/projects" : { - "get" : { - "operationId" : "projectList", - "produces" : [ "application/json" ], - "tags" : [ "project" ], - "parameters" : [ ] - }, - "post" : { - "operationId" : "projectCreate", - "produces" : [ "application/json" ], - "tags" : [ "project" ], - "parameters" : [ { - "name" : "Body", - "in" : "body", - "required" : true, - "schema" : { - "type" : "object", - "required" : [ "properties" ], - "properties" : { - "properties" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Property" - } - } - } - } - } ] - }, - "parameters" : [ ] - }, - "/projects/import" : { - "post" : { - "operationId" : "projectImport", - "produces" : [ "application/json" ], - "tags" : [ "project" ], - "parameters" : [ { - "name" : "file", - "in" : "body", - "required" : true, - "schema" : { - "type" : "file" - } - } ] - }, - "parameters" : [ ] - }, - "/projects/{projectId}" : { - "post" : { - "operationId" : "projectReplaceProps", - "produces" : [ "application/json" ], - "tags" : [ "project" ], - "parameters" : [ { - "name" : "Body", - "in" : "body", - "required" : true, - "schema" : { - "type" : "object", - "required" : [ "properties" ], - "properties" : { - "properties" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Property" - } - }, - "defaultBranch" : { - "$ref" : "#/definitions/Identifier" - } - } - } - } ] - }, - "delete" : { - "operationId" : "projectDelete", - "produces" : [ "application/json" ], - "tags" : [ "project" ], - "parameters" : [ ] - }, - "put" : { - "operationId" : "projectUpdate", - "produces" : [ "application/json" ], - "tags" : [ "project" ], - "parameters" : [ { - "name" : "Body", - "in" : "body", - "required" : true, - "schema" : { - "type" : "object", - "required" : [ "properties" ], - "properties" : { - "properties" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Property" - } - }, - "defaultBranch" : { - "$ref" : "#/definitions/Identifier" - } - } - } - } ] - }, - "get" : { - "operationId" : "projectGet", - "produces" : [ "application/json" ], - "tags" : [ "project" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/artifacts/{artifactId}" : { - "get" : { - "operationId" : "artifactGet", - "produces" : [ "application/json" ], - "tags" : [ "artifact" ], - "parameters" : [ { - "name" : "offset", - "in" : "query", - "required" : false, - "type" : "integer" - }, { - "name" : "limit", - "in" : "query", - "required" : false, - "type" : "integer" - }, { - "name" : "profile", - "in" : "query", - "required" : false, - "type" : "string" - }, { - "name" : "name", - "in" : "query", - "required" : false, - "type" : "string" - } ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "artifactId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/artifacts/{artifactId}/annotations" : { - "get" : { - "operationId" : "artifactGetAnnotations", - "produces" : [ "application/json" ], - "tags" : [ "artifact" ], - "parameters" : [ { - "name" : "column", - "in" : "query", - "required" : false, - "type" : "integer" - }, { - "name" : "row", - "in" : "query", - "required" : false, - "type" : "string" - } ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "artifactId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/artifacts/{artifactId}/csv" : { - "get" : { - "operationId" : "artifactGetCsv", - "produces" : [ "text/csv" ], - "tags" : [ "artifact" ], - "parameters" : [ { - "name" : "name", - "in" : "query", - "required" : false, - "type" : "string" - } ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "artifactId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/artifacts/{artifactId}/descriptor" : { - "get" : { - "operationId" : "artifactGetSummary", - "produces" : [ "application/json" ], - "tags" : [ "artifact" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "artifactId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/artifacts/{artifactId}/file" : { - "get" : { - "operationId" : "artifactGetFile", - "produces" : [ "application/octet-stream" ], - "tags" : [ "artifact" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "artifactId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches" : { - "get" : { - "operationId" : "branchList", - "produces" : [ "application/json" ], - "tags" : [ "branch" ], - "parameters" : [ ] - }, - "post" : { - "operationId" : "branchCreate", - "produces" : [ "application/json" ], - "tags" : [ "branch" ], - "parameters" : [ { - "name" : "Body", - "in" : "body", - "required" : true, - "schema" : { - "type" : "object", - "required" : [ "properties" ], - "properties" : { - "source" : { - "$ref" : "#/definitions/BranchSource" - }, - "properties" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Property" - } - } - } - } - } ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}" : { - "get" : { - "operationId" : "branchGet", - "produces" : [ "application/json" ], - "tags" : [ "branch" ], - "parameters" : [ ] - }, - "delete" : { - "operationId" : "branchDelete", - "produces" : [ "application/json" ], - "tags" : [ "branch" ], - "parameters" : [ ] - }, - "put" : { - "operationId" : "branchUpdate", - "produces" : [ "application/json" ], - "tags" : [ "branch" ], - "parameters" : [ { - "name" : "Body", - "in" : "body", - "required" : true, - "schema" : { - "type" : "object", - "required" : [ "properties" ], - "properties" : { - "properties" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Property" - } - } - } - } - } ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/cancel" : { - "post" : { - "operationId" : "workflowBranchCancel", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/head" : { - "get" : { - "operationId" : "workflowHeadGet", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/head/cancel" : { - "post" : { - "operationId" : "workflowHeadCancel", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/head/graph" : { - "get" : { - "operationId" : "workflowHeadGraph", - "produces" : [ "image/svg+xml" ], - "tags" : [ "workflow" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/head/modules" : { - "get" : { - "operationId" : "workflowHeadModules", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ ] - }, - "post" : { - "operationId" : "workflowHeadAppend", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ { - "name" : "Body", - "in" : "body", - "required" : true, - "schema" : { - "type" : "object", - "required" : [ "packageId", "commandId", "arguments" ], - "properties" : { - "packageId" : { - "type" : "string" - }, - "commandId" : { - "type" : "string" - }, - "arguments" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/CommandArgument" - } - } - } - } - } ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}" : { - "post" : { - "operationId" : "workflowHeadInsert", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ { - "name" : "Body", - "in" : "body", - "required" : true, - "schema" : { - "type" : "object", - "required" : [ "packageId", "commandId", "arguments" ], - "properties" : { - "packageId" : { - "type" : "string" - }, - "commandId" : { - "type" : "string" - }, - "arguments" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/CommandArgument" - } - } - } - } - } ] - }, - "delete" : { - "operationId" : "workflowHeadDelete", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ ] - }, - "put" : { - "operationId" : "workflowHeadReplace", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ { - "name" : "Body", - "in" : "body", - "required" : true, - "schema" : { - "type" : "object", - "required" : [ "packageId", "commandId", "arguments" ], - "properties" : { - "packageId" : { - "type" : "string" - }, - "commandId" : { - "type" : "string" - }, - "arguments" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/CommandArgument" - } - } - } - } - } ] - }, - "get" : { - "operationId" : "workflowHeadGetModule", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "modulePosition", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}/charts/{artifactId}" : { - "get" : { - "operationId" : "artifactHeadGetChart", - "produces" : [ "application/json" ], - "tags" : [ "artifact" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "modulePosition", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "artifactId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}/freeze" : { - "post" : { - "operationId" : "workflowHeadFreezeFrom", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "modulePosition", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}/freeze_one" : { - "post" : { - "operationId" : "workflowHeadFreezeOne", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "modulePosition", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}/thaw" : { - "post" : { - "operationId" : "workflowHeadThawUpto", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "modulePosition", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/head/modules/{modulePosition}/thaw_one" : { - "post" : { - "operationId" : "workflowHeadThawOne", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "modulePosition", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/head/run" : { - "post" : { - "operationId" : "workflowRun", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ { - "name" : "Body", - "in" : "body", - "required" : true, - "schema" : { - "type" : "object", - "required" : [ ], - "properties" : { - "modules" : { - "type" : "string" - } - } - } - } ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/head/sql" : { - "get" : { - "operationId" : "workflowHeadQuery", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ { - "name" : "query", - "in" : "query", - "required" : false, - "type" : "string" - } ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/head/suggest" : { - "get" : { - "operationId" : "workflowHeadSuggest", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ { - "name" : "before", - "in" : "query", - "required" : false, - "type" : "integer" - }, { - "name" : "after", - "in" : "query", - "required" : false, - "type" : "integer" - } ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/workflows/{workflowId}" : { - "get" : { - "operationId" : "workflowGet", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "workflowId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/cancel" : { - "post" : { - "operationId" : "workflowCancel", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "workflowId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/graph" : { - "get" : { - "operationId" : "workflowGraph", - "produces" : [ "image/svg+xml" ], - "tags" : [ "workflow" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "workflowId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules" : { - "get" : { - "operationId" : "workflowModules", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ ] - }, - "post" : { - "operationId" : "workflowAppend", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ { - "name" : "Body", - "in" : "body", - "required" : true, - "schema" : { - "type" : "object", - "required" : [ "packageId", "commandId", "arguments" ], - "properties" : { - "packageId" : { - "type" : "string" - }, - "commandId" : { - "type" : "string" - }, - "arguments" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/CommandArgument" - } - } - } - } - } ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "workflowId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}" : { - "post" : { - "operationId" : "workflowInsert", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ { - "name" : "Body", - "in" : "body", - "required" : true, - "schema" : { - "type" : "object", - "required" : [ "packageId", "commandId", "arguments" ], - "properties" : { - "packageId" : { - "type" : "string" - }, - "commandId" : { - "type" : "string" - }, - "arguments" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/CommandArgument" - } - } - } - } - } ] - }, - "delete" : { - "operationId" : "workflowDelete", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ ] - }, - "put" : { - "operationId" : "workflowReplace", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ { - "name" : "Body", - "in" : "body", - "required" : true, - "schema" : { - "type" : "object", - "required" : [ "packageId", "commandId", "arguments" ], - "properties" : { - "packageId" : { - "type" : "string" - }, - "commandId" : { - "type" : "string" - }, - "arguments" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/CommandArgument" - } - } - } - } - } ] - }, - "get" : { - "operationId" : "workflowGetModule", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "workflowId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "modulePosition", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}/charts/{artifactId}" : { - "get" : { - "operationId" : "artifactGetChart", - "produces" : [ "application/json" ], - "tags" : [ "artifact" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "workflowId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "modulePosition", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "artifactId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}/freeze" : { - "post" : { - "operationId" : "workflowFreezeFrom", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "workflowId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "modulePosition", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}/freeze_one" : { - "post" : { - "operationId" : "workflowFreezeOne", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "workflowId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "modulePosition", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}/thaw" : { - "post" : { - "operationId" : "workflowThawUpto", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "workflowId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "modulePosition", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/modules/{modulePosition}/thaw_one" : { - "post" : { - "operationId" : "workflowThawOne", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "workflowId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "modulePosition", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/sql" : { - "get" : { - "operationId" : "workflowQuery", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ { - "name" : "query", - "in" : "query", - "required" : false, - "type" : "string" - } ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "workflowId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/branches/{branchId}/workflows/{workflowId}/suggest" : { - "get" : { - "operationId" : "workflowSuggest", - "produces" : [ "application/json" ], - "tags" : [ "workflow" ], - "parameters" : [ { - "name" : "before", - "in" : "query", - "required" : false, - "type" : "integer" - }, { - "name" : "after", - "in" : "query", - "required" : false, - "type" : "integer" - } ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "branchId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "workflowId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/datasets" : { - "post" : { - "operationId" : "artifactCreateDataset", - "produces" : [ "application/json" ], - "tags" : [ "artifact" ], - "parameters" : [ { - "name" : "Body", - "in" : "body", - "required" : true, - "schema" : { - "type" : "object", - "required" : [ "columns", "rows", "properties" ], - "properties" : { - "name" : { - "type" : "string" - }, - "annotations" : { - "$ref" : "#/definitions/DatasetAnnotation" - }, - "properties" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/Property" - } - }, - "columns" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/DatasetColumn" - } - }, - "rows" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/DatasetRow" - } - } - } - } - } ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/datasets/{artifactId}" : { - "get" : { - "operationId" : "artifactGetDataset", - "produces" : [ "application/json" ], - "tags" : [ "artifact" ], - "parameters" : [ { - "name" : "offset", - "in" : "query", - "required" : false, - "type" : "integer" - }, { - "name" : "limit", - "in" : "query", - "required" : false, - "type" : "integer" - }, { - "name" : "profile", - "in" : "query", - "required" : false, - "type" : "string" - }, { - "name" : "name", - "in" : "query", - "required" : false, - "type" : "string" - } ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "artifactId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/datasets/{artifactId}/annotations" : { - "get" : { - "operationId" : "artifactDsGetAnnotations", - "produces" : [ "application/json" ], - "tags" : [ "artifact" ], - "parameters" : [ { - "name" : "column", - "in" : "query", - "required" : false, - "type" : "integer" - }, { - "name" : "row", - "in" : "query", - "required" : false, - "type" : "string" - } ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "artifactId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/datasets/{artifactId}/csv" : { - "get" : { - "operationId" : "artifactDsGetCsv", - "produces" : [ "text/csv" ], - "tags" : [ "artifact" ], - "parameters" : [ { - "name" : "name", - "in" : "query", - "required" : false, - "type" : "string" - } ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "artifactId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/datasets/{artifactId}/descriptor" : { - "get" : { - "operationId" : "artifactDsGetSummary", - "produces" : [ "application/json" ], - "tags" : [ "artifact" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "artifactId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/datasets/{artifactId}/file" : { - "get" : { - "operationId" : "artifactDsGetFile", - "produces" : [ "application/octet-stream" ], - "tags" : [ "artifact" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "artifactId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/export" : { - "get" : { - "operationId" : "projectExport", - "produces" : [ "application/octet-stream" ], - "tags" : [ "project" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/files" : { - "post" : { - "operationId" : "artifactUpload", - "produces" : [ "application/json" ], - "tags" : [ "artifact" ], - "parameters" : [ { - "name" : "file", - "in" : "body", - "required" : true, - "schema" : { - "type" : "file" - } - } ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/files/{artifactId}" : { - "get" : { - "operationId" : "artifactDownload", - "produces" : [ "application/octet-stream" ], - "tags" : [ "artifact" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "artifactId", - "in" : "path", - "required" : true, - "type" : "integer" - } ] - }, - "/projects/{projectId}/files/{artifactId}/{tail}" : { - "get" : { - "operationId" : "artifactDownloadSubfile", - "produces" : [ "application/octet-stream" ], - "tags" : [ "artifact" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "projectId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "artifactId", - "in" : "path", - "required" : true, - "type" : "integer" - }, { - "name" : "tail", - "in" : "path", - "required" : true, - "type" : "string" - } ] - }, - "/published/{artifactName}" : { - "get" : { - "operationId" : "publishedDownloadPublished", - "produces" : [ "application/json" ], - "tags" : [ "published" ], - "parameters" : [ ] - }, - "parameters" : [ { - "name" : "artifactName", - "in" : "path", - "required" : true, - "type" : "string" - } ] - }, - "/reload" : { - "post" : { - "operationId" : "serviceReload", - "produces" : [ "application/json" ], - "tags" : [ "service" ], - "parameters" : [ ] - }, - "parameters" : [ ] - }, - "/tasks" : { - "get" : { - "operationId" : "serviceList", - "produces" : [ "application/json" ], - "tags" : [ "service" ], - "parameters" : [ ] - }, - "parameters" : [ ] - } - }, - "host" : "localhost:5000/", - "schemes" : "http", - "definitions" : { - "PythonEnvironmentDescriptor" : { - "type" : "object", - "required" : [ "version", "packages" ], - "properties" : { - "version" : { - "type" : "string" - }, - "packages" : { - "type" : "array", - "items" : { - "$ref" : "#/definitions/PythonPackage" - } - } - }, - "additionalProperties" : null - }, - "PythonPackage" : { - "type" : "object", - "required" : [ "name", "version" ], - "properties" : { - "name" : { - "type" : "string" - }, - "version" : { - "type" : "string" - } - }, - "additionalProperties" : null - }, - "CommandArgument" : { - "type" : "object", - "required" : [ "id", "value" ], - "properties" : { - "id" : { - "type" : "string" - }, - "value" : { } - }, - "additionalProperties" : null - }, - "DatasetAnnotation" : { - "type" : "object", - "required" : [ "columnId", "rowId", "key", "value" ], - "properties" : { - "columnId" : { - "type" : "integer" - }, - "rowId" : { - "$ref" : "#/definitions/RowIdentifier" - }, - "key" : { - "type" : "string" - }, - "value" : { - "type" : "string" - } - }, - "additionalProperties" : null - }, - "RowIdentifier" : { - "type" : "string", - "description" : "An opaque, persistent, unique identifier for this row" - }, - "BranchSource" : { - "type" : "object", - "required" : [ "branchId" ], - "properties" : { - "branchId" : { - "$ref" : "#/definitions/Identifier" - }, - "workflowId" : { - "$ref" : "#/definitions/Identifier" - }, - "moduleId" : { - "$ref" : "#/definitions/Identifier" - } - }, - "additionalProperties" : null - }, - "Identifier" : { - "type" : "string", - "description" : "An opaque identifier" - }, - "DatasetColumn" : { - "type" : "object", - "required" : [ "id", "name", "type" ], - "properties" : { - "id" : { - "type" : "integer" - }, - "name" : { - "type" : "string" - }, - "type" : { - "$ref" : "#/definitions/CellDataType" - } - }, - "additionalProperties" : null - }, - "DatasetRow" : { - "type" : "object", - "required" : [ "id", "values" ], - "properties" : { - "id" : { - "$ref" : "#/definitions/RowIdentifier" - }, - "values" : { - "type" : "array", - "items" : { } - }, - "rowAnnotationFlags" : { - "type" : "array", - "items" : { - "type" : "boolean" - } - }, - "rowIsAnnotated" : { - "type" : "boolean" - } - }, - "additionalProperties" : null - }, - "CellDataType" : { - "type" : "string", - "description" : "A Vizier-serialized spark data type. See https://github.com/VizierDB/vizier-scala/blob/v2.0/vizier/backend/src/info/vizierdb/spark/SparkSchema.scala" - }, - "JsValue" : { - "type" : "any", - "description" : "the value, encoded as Json" - }, - "Property" : { - "type" : "object", - "required" : [ "key", "value" ], - "properties" : { - "key" : { - "type" : "string" - }, - "value" : { } - }, - "additionalProperties" : null - } - } -} \ No newline at end of file diff --git a/vizier/shared/src/info/vizierdb/serialized/VizierScript.scala b/vizier/shared/src/info/vizierdb/serialized/VizierScript.scala new file mode 100644 index 00000000..1c9d9a80 --- /dev/null +++ b/vizier/shared/src/info/vizierdb/serialized/VizierScript.scala @@ -0,0 +1,126 @@ +/* -- copyright-header:v2 -- + * Copyright (C) 2017-2021 University at Buffalo, + * New York University, + * Illinois Institute of Technology. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * -- copyright-header:end -- */ +package info.vizierdb.serialized + +import info.vizierdb.types.Identifier; +import info.vizierdb.nativeTypes.JsValue; +import play.api.libs.json.Format +import play.api.libs.json.Json +import info.vizierdb.types + +case class VizierScriptList( + scripts: Seq[VizierScriptSummary] +) + +case class VizierScriptSummary( + id: Identifier, + version: Long, + name: String, + projectId: Identifier, + branchId: Identifier, + workflowId: Identifier, +) + + +case class VizierScript( + id: Identifier, + version: Long, + name: String, + projectId: Identifier, + branchId: Identifier, + workflowId: Identifier, + modules: Seq[VizierScriptModule] +) + +object VizierScript +{ + def fromWorkflow(projectId: Identifier, branchId: Identifier, workflow: WorkflowDescription, name: String = "Untitled"): VizierScript = + { + VizierScript( + id = -1, + version = -1, + name = name, + projectId = projectId, + branchId = branchId, + workflowId = workflow.id, + modules = workflow.modules.map { module => + val moduleRanSuccessfully = {module.statev2 == types.ExecutionState.DONE} + val moduleInvolvesDocumentation = + module.command.packageId match { + case "docs" => true + case _ => false + } + val shouldEnable = ( + moduleRanSuccessfully + && !moduleInvolvesDocumentation + ) + + VizierScriptModule.Inline(module, enabled = shouldEnable) + } + ) + } +} + +sealed trait VizierScriptModule +{ + def enabled: Boolean + def id: Identifier + + def inputs: Set[String] + def outputs: Map[String, types.ArtifactType.T] +} +object VizierScriptModule +{ + val INLINE = "inline" + val INPUT_OUTPUT = "in_out" + + + /** + * A 'real' module corresponding to some module in the system + * + * By convention, these module IDs are unique and correspond to the actual + * module in the original workflow. + */ + case class Inline( + spec: ModuleDescription, + enabled: Boolean = true, + `type`: String = VizierScriptModule.INLINE + ) extends VizierScriptModule + { + def id = spec.moduleId + def inputs = spec.inputs.keySet + def outputs = spec.artifacts.map { a => a.name -> a.t }.toMap + } + + /** + * A synthetic module that captures input/output state. + * @param id An unique identifier. By convention, these module IDs are negative. + * @param imports Artifacts imported into the script from outside + * @param exports Artifacts exported from the script into the outside + * @param enabled Whether the cell is + * + */ + case class InputOutput( + id: Identifier, + imports: Map[String, types.ArtifactType.T], + exports: Map[String, types.ArtifactType.T], + `type`: String = VizierScriptModule.INPUT_OUTPUT + ) extends VizierScriptModule + { + def inputs = exports.keySet + def outputs = imports + def enabled = true + } +} diff --git a/vizier/ui/css/vizier.scss b/vizier/ui/css/vizier.scss index 210e5404..7c1f1d13 100644 --- a/vizier/ui/css/vizier.scss +++ b/vizier/ui/css/vizier.scss @@ -68,6 +68,8 @@ $modal_layer: 2000; /*********** Sizes ***************/ $max_workflow_width: 800px; +$main_menu_height: 32px; +$cell_menu_width: 28px; /*********** Fonts ***************/ @@ -194,6 +196,13 @@ $max_workflow_width: 800px; margin-top: 8px; margin-bottom: 8px; + h2 + { + width: 100%; + text-align: center; + text-decoration: underline; + } + .project_list { list-style: none; @@ -334,8 +343,6 @@ body overflow-y: hidden; } -$menu_height: 32px; - .tooltip { // visibility: hidden; @@ -367,7 +374,7 @@ $menu_height: 32px; .content { position: absolute; - top: $menu_height; + top: $main_menu_height; left: 0px; width: 100vw; display: flex; @@ -377,7 +384,7 @@ $menu_height: 32px; { position: absolute; left: calc(100vw - 248px); - height: calc(100vh - 32px); // $menu_height -- sass doesn't like $vars in calc + height: calc(100vh - 32px); // $main_menu_height -- sass doesn't like $vars in calc width: 248px; flex-grow: 0; flex-shrink: 0; @@ -389,7 +396,7 @@ $menu_height: 32px; position: absolute; left: 0; width: calc(100vw - 248px); - height: calc(100vh - 32px); // $menu_height -- sass doesn't like $vars in calc + height: calc(100vh - 32px); // $main_menu_height -- sass doesn't like $vars in calc overflow-y: auto; border-right: solid 1px $color_layout_border; margin-right: 0px; @@ -509,7 +516,7 @@ $menu_height: 32px; #menu_bar { - height: $menu_height; + height: $main_menu_height; width: 100vw; background-color: $color_primary; display: flex; @@ -602,8 +609,8 @@ $menu_height: 32px; height: 18px; padding-left: 12px; padding-right: 12px; - padding-bottom: $menu_height/2 - 8px; - padding-top: $menu_height/2 - 10px; + padding-bottom: $main_menu_height/2 - 8px; + padding-top: $main_menu_height/2 - 10px; font-weight: bold; } @@ -611,15 +618,15 @@ $menu_height: 32px; { font-size: 16px; height: 18px; - padding: ($menu_height - 18px) / 2; + padding: ($main_menu_height - 18px) / 2; padding-left: 16px; padding-right: 16px; } img { - height: $menu_height - 8px; - width: $menu_height - 8px; + height: $main_menu_height - 8px; + width: $main_menu_height - 8px; padding: 4px; padding-left: 8px; padding-right: 8px; @@ -723,10 +730,8 @@ $menu_height: 32px; display: flex; flex-direction: row; - $menu_width: 28px; - .menu { - width: $menu_width; + width: $cell_menu_width; margin-left: 8px; margin-right: 8px; flex-grow: 0; @@ -772,8 +777,8 @@ $menu_height: 32px; } button { - width: $menu_width; - height: $menu_width; + width: $cell_menu_width; + height: $cell_menu_width; border: none; border-bottom: solid 1px white; background-color: inherit; @@ -796,7 +801,7 @@ $menu_height: 32px; { display: flex; flex-direction: row; - height: $menu_width; + height: $cell_menu_width; button { flex-grow: 0; @@ -806,12 +811,12 @@ $menu_height: 32px; &.open { z-index: $menu_layer; - &.size1 { width: $menu_width * 2 } - &.size2 { width: $menu_width * 3 } - &.size3 { width: $menu_width * 4 } - &.size4 { width: $menu_width * 5 } - &.size5 { width: $menu_width * 6 } - &.size6 { width: $menu_width * 7 } + &.size1 { width: $cell_menu_width * 2 } + &.size2 { width: $cell_menu_width * 3 } + &.size3 { width: $cell_menu_width * 4 } + &.size4 { width: $cell_menu_width * 5 } + &.size5 { width: $cell_menu_width * 6 } + &.size6 { width: $cell_menu_width * 7 } button { color: white; @@ -827,7 +832,7 @@ $menu_height: 32px; // } } &.closed { - width: $menu_width; + width: $cell_menu_width; button.pop_up_button { visibility: hidden; } @@ -1140,9 +1145,8 @@ table.command_list .module_list { - flex-grow: 4; + flex-grow: 1; flex-shrink: 1; - max-height: 33%; overflow-y: auto; padding-left: 8px; @@ -1176,9 +1180,8 @@ table.command_list .artifact_list { - flex-grow: 4; + flex-grow: 1; flex-shrink: 1; - min-height: 33%; overflow-y: auto; border-top: 1px solid $color_layout_border; padding-left: 8px; @@ -1241,32 +1244,6 @@ table.command_list } } } - - .documentation_list - { - flex-grow: 1; - flex-shrink: 1; - max-height: 20%; - overflow-y: auto; - border-top: 1px solid $color_layout_border; - padding-left: 8px; - - ul - { - padding: 0; - margin-top: 4px; - - li - { - list-style: none; - - a - { - margin-left: 4px; - } - } - } - } } } @@ -2101,4 +2078,162 @@ table.parameter_list width: 20px; display: inline-block; } +} + +/************ Script Editor ************/ + +.script_editor +{ + .content { + position: absolute; + top: $main_menu_height; + left: 0px; + width: 100vw; + display: flex; + flex-direction: row-reverse; + + .script_body + { + position: absolute; + left: 0; + width: calc(100vw - 248px); + height: calc(100vh - 32px); // $main_menu_height -- sass doesn't like $vars in calc + overflow-y: auto; + border-right: solid 1px $color_layout_border; + margin-right: 0px; + + .script_content + { + margin-left: auto; + margin-right: auto; + max-width: $max_workflow_width; + display: flex; + flex-direction: column; + + .module + { + display: flex; + flex-direction: row; + margin-top: 16px; + + .menu + { + width: $cell_menu_width; + background-color: $color_primary; + flex-grow: 0; + flex-shrink: 0; + + button { + color: white; + width: $cell_menu_width; + height: $cell_menu_width; + border: none; + border-bottom: solid 1px white; + background-color: inherit; + cursor: pointer; + + } + } + + .module_body + { + margin-left: 8px; + + h3 + { + margin-top: 4px + } + + overflow-y: scroll; + } + + &.disabled + { + .menu { + background-color: $color_primary_faded; + } + + .module_body { + background-color: white; + opacity: 0.3; + } + } + + &.script_in_out + { + ul + { + list-style: none; + padding-left: 16px; + + button + { + margin-left: 8px; + i.fa + { + font-size: 12px; + } + } + } + } + } + + } + } + + .script_config + { + position: absolute; + left: calc(100vw - 248px); + height: calc(100vh - 32px); // $main_menu_height -- sass doesn't like $vars in calc + width: 248px; + flex-grow: 0; + flex-shrink: 0; + // margin-left: 8px; + padding-left: 8px; + + .script_field + { + margin-top: 8px; + + button + { + width: 80%; + } + } + h2 + { + margin-bottom: 0px; + } + p + { + margin: 0px + } + + ul.outputs, ul.inputs + { + list-style: none; + padding-left: 0px; + + li + { + i.fa + { + margin-right: 4px; + } + + &.disabled + { + opacity: 0.5; + } + + button + { + margin-left: 8px; + } + } + } + } + + } } \ No newline at end of file diff --git a/vizier/ui/html/script.html b/vizier/ui/html/script.html new file mode 100644 index 00000000..af1f47fb --- /dev/null +++ b/vizier/ui/html/script.html @@ -0,0 +1,22 @@ + + + + + Vizier + + + + + + + + + + diff --git a/vizier/ui/src/info/vizierdb/serializers.scala b/vizier/ui/src/info/vizierdb/serializers.scala index 6d8714e4..d299df01 100644 --- a/vizier/ui/src/info/vizierdb/serializers.scala +++ b/vizier/ui/src/info/vizierdb/serializers.scala @@ -205,4 +205,33 @@ object serializers implicit val pythonEnvironmentDescriptorFormat: Format[serialized.PythonEnvironmentDescriptor] = Json.format implicit val pythonEnvironmentSummaryFormat: Format[serialized.PythonEnvironmentSummary] = Json.format implicit val pythonSettingsSummaryFormat: Format[serialized.PythonSettingsSummary] = Json.format + + implicit val vizierScriptModuleInlineFormat: Format[serialized.VizierScriptModule.Inline] = Json.format + implicit val vizierScriptModuleIOFormat: Format[serialized.VizierScriptModule.InputOutput] = Json.format + implicit val vizierScriptModuleFormat = Format[serialized.VizierScriptModule]( + new Reads[serialized.VizierScriptModule] { + def reads(j: JsValue): JsResult[serialized.VizierScriptModule] = + { + (j \ "type").as[String] match { + case serialized.VizierScriptModule.INLINE => + JsSuccess(j.as[serialized.VizierScriptModule.Inline]) + case serialized.VizierScriptModule.INPUT_OUTPUT => + JsSuccess(j.as[serialized.VizierScriptModule.InputOutput]) + case _ => JsError() + } + } + }, + new Writes[serialized.VizierScriptModule] { + def writes(j: serialized.VizierScriptModule): JsValue = + { + j match { + case v: serialized.VizierScriptModule.Inline => Json.toJson(v) + case v: serialized.VizierScriptModule.InputOutput => Json.toJson(v) + } + } + } + ) + implicit val vizierScriptFormat: Format[serialized.VizierScript] = Json.format + implicit val vizierScriptSummaryFormat: Format[serialized.VizierScriptSummary] = Json.format + implicit val vizierScriptListFormat: Format[serialized.VizierScriptList] = Json.format } \ No newline at end of file diff --git a/vizier/ui/src/info/vizierdb/ui/Vizier.scala b/vizier/ui/src/info/vizierdb/ui/Vizier.scala index f8bb52e1..af5ecd86 100644 --- a/vizier/ui/src/info/vizierdb/ui/Vizier.scala +++ b/vizier/ui/src/info/vizierdb/ui/Vizier.scala @@ -32,7 +32,6 @@ import info.vizierdb.ui.components.dataset.TableView import info.vizierdb.ui.components.DisplayArtifact import info.vizierdb.ui.components.MenuBar import info.vizierdb.ui.components.Project -import info.vizierdb.ui.components.ProjectListView import info.vizierdb.ui.components.settings.SettingsView import info.vizierdb.ui.components.StaticWorkflow import info.vizierdb.ui.network.{ API, ClientURLs, BranchSubscription, SpreadsheetClient } @@ -73,18 +72,29 @@ object Vizier } lazy val arguments: Map[String, String] = - dom.window.location.search - .substring(1) - .split("&") - .map { _.split("=").toSeq } - .collect { - case Seq(k, v) => - URLDecoder.decode(k, "UTF-8") -> - URLDecoder.decode(v, "UTF-8") - } - .toMap + Option(dom.window.location.search) + .filter { _.length > 0 } + .map { + _.substring(1) + .split("&") + .map { _.split("=").toSeq } + .collect { + case Seq(k, v) => + URLDecoder.decode(k, "UTF-8") -> + URLDecoder.decode(v, "UTF-8") + } + .toMap + } + .getOrElse { Map.empty } val project = Var[Option[Project]](None) + + Rx { + "Vizier" + project().map { project => + ": " + project.projectName() + " ["+ project.activeBranchName() + "]" + }.getOrElse("") + }.trigger { document.title = _ } + val menu = project.map { _.map { new MenuBar(_) } } def error(message: String) = @@ -101,195 +111,24 @@ object Vizier } @JSExport("project_view") - def projectView(): Unit = - { - val projectId = - arguments.get("project") - .getOrElse { error("No Project ID specified") } - .toLong - val projectRequest = api.projectGet(projectId) - document.addEventListener("DOMContentLoaded", { (e: dom.Event) => - try { - projectRequest - .onComplete { - case Success(response) => - project() = Some(new Project(projectId).load(response)) - logger.debug(s"Project: ${project.now.get}") - document.addEventListener("keydown", { (evt:dom.KeyboardEvent) => - if(evt.key == "Enter" && evt.ctrlKey){ - project.now.foreach { - _.workflow.now.foreach { - _.moduleViewsWithEdits.saveAllCells() - } - } - evt.stopPropagation() - } else if (evt.keyCode == 116 /* f5 */) { - // disable reload https://github.com/VizierDB/vizier-scala/issues/159 - evt.preventDefault() - // } else { - // println(s"KEY: ${evt.keyCode}") - } - }) - - // The following bit can be uncommented for onLoad triggers - // to automate development debugging - // dom.window.setTimeout( - // () => { - // val workflow = - // project.now - // .get - // .workflow - // .now - // .get - // val module = - // workflow.moduleViewsWithEdits - // .prependTentative() - // // module.activeView.trigger { _ match { - // // case Some(Left(commandlist)) => - // // commandlist.simulateClick("data", "load") - // // case _ => - // // println("Waiting...") - // // }} - // }, - // 500 - // ) - - case Failure(ex) => - error(ex.toString) - } - - document.body.appendChild( - Rx { project().map { _.root } - .getOrElse { Spinner(size = 30) } }.reactive - ) - OnMount.trigger(document.body) - } catch { - case t: Throwable => logger.error(t.toString) - } - }) - } + def projectView(): Unit = roots.ProjectView(arguments = arguments) @JSExport("project_list") - def projectList(): Unit = - { - val projectList = new ProjectListView() - document.addEventListener("DOMContentLoaded", { (e: dom.Event) => - document.body.appendChild( projectList.root ) - OnMount.trigger(document.body) - }) - } + def projectList(): Unit = roots.LandingPage(arguments = arguments) @JSExport("spreadsheet") - def spreadsheet(): Unit = - { - val projectId = arguments.get("project").get.toLong - val datasetId = arguments.get("dataset").get.toLong - val branchId = arguments.get("branch").map { _.toLong } - - val cli = new SpreadsheetClient(OpenDataset(projectId, datasetId), api) - cli.connected.trigger { connected => - if(connected){ cli.subscribe(0) } - } - val table = new TableView(cli, - rowHeight = 30, - maxHeight = 400, - headerHeight = 40 - ) - cli.table = Some(table) - - val body = div( - `class` := "standalone_spreadsheet", - div( - `class` := "header", - button( - onclick := { _:(dom.Event) => - cli.save() - }, - "Save" - ) - ), - table.root - ).render - - document.addEventListener("DOMContentLoaded", { (e: dom.Event) => - document.body.appendChild(body) - OnMount.trigger(document.body) - }) - } + def spreadsheet(): Unit = roots.Spreadsheet(arguments = arguments) @JSExport("settings") - def settings(): Unit = - { - val settings = new SettingsView(arguments.get("tab")) - document.addEventListener("DOMContentLoaded", { (e: dom.Event) => - document.body.appendChild(settings.root) - OnMount.trigger(document.body) - }) - } + def settings(): Unit = roots.Settings(arguments = arguments) @JSExport("artifact") - def artifact(): Unit = - { - val projectId = arguments.get("project").get.toLong - val artifactId = arguments.get("artifact").get.toLong - val name = arguments.get("name") - val artifact = api.artifactGet(projectId, artifactId, name = name) - - document.addEventListener("DOMContentLoaded", { (e: dom.Event) => - val root = Var[Frag](div(`class` := "display_artifact", Spinner(50))) - - document.body.appendChild(root.reactive) - OnMount.trigger(document.body) - - artifact.onComplete { - case Success(a) => root() = new DisplayArtifact(a).root - case Failure(err) => Vizier.error(err.getMessage()) - } - }) - } + def artifact(): Unit = roots.ArtifactView(arguments = arguments) @JSExport("static_workflow") - def staticWorkflow(): Unit = - { - val projectId = arguments.get("project").get.toLong - val branchIdMaybe = arguments.get("branch").map { _.toLong } - val workflowIdMaybe = arguments.get("workflow").map { _.toLong } + def staticWorkflow(): Unit = roots.StaticWorkflow(arguments = arguments) - val branchId = - branchIdMaybe.map { Future(_) } - .getOrElse { - api.projectGet(projectId) - .map { _.defaultBranch } - } - - val workflowId = - workflowIdMaybe.map { Future(_) } - .getOrElse { - branchId.flatMap { Vizier.api.branchGet(projectId, _) } - .map { _.head.id } - } - - val workflow = - branchId.flatMap { b => - workflowId.flatMap { w => - println(s"Getting workflow: ($projectId, $b, $w)") - api.workflowGet(projectId, b, w) - } - } - - document.addEventListener("DOMContentLoaded", { (e: dom.Event) => - val root = Var[Frag](div(`class` := "display_workflow", Spinner(50))) - - document.body.appendChild(root.reactive) - OnMount.trigger(document.body) - - workflow.onComplete { - case Success(w) => - println(s"Got workflow: $w") - root() = new StaticWorkflow(projectId, w).root - case Failure(err) => Vizier.error(err.getMessage()) - } - }) - } + @JSExport("script_editor") + def scriptEditor(): Unit = roots.ScriptEditor(arguments = arguments) } diff --git a/vizier/ui/src/info/vizierdb/ui/components/MenuBar.scala b/vizier/ui/src/info/vizierdb/ui/components/MenuBar.scala index 0e3a2f04..b99ffccc 100644 --- a/vizier/ui/src/info/vizierdb/ui/components/MenuBar.scala +++ b/vizier/ui/src/info/vizierdb/ui/components/MenuBar.scala @@ -27,7 +27,17 @@ import info.vizierdb.ui.Vizier class MenuBar(project: Project)(implicit owner: Ctx.Owner) { - + /** + * A list of packages to provide help for. + * + * Todo: These should be derived from dependencies in the notebook. + */ + val packages = + Seq[(String,String)]( + "Vizier" -> "https://github.com/VizierDB/vizier-scala/wiki", + "Spark" -> "https://spark.apache.org/docs/3.3.1/sql-programming-guide.html", + "Sedona" -> "https://sedona.apache.org/1.5.0/" + ) def Menu(clazz: String, title: Modifier*)(items: Frag*) = { @@ -37,16 +47,27 @@ class MenuBar(project: Project)(implicit owner: Ctx.Owner) div(contents:_*) } - def MenuItem(title: String, action: () => Unit, icon: String = null, enabled: Boolean = true): Frag = + def MenuItem( + title: String, + action: () => Unit = { () => () }, + icon: String = null, + enabled: Boolean = true, + link: String = null + ): Frag = { var contents = Seq[Modifier](title) if(!enabled){ contents = contents :+ (`class` := "disabled") } - else { contents = contents :+ (onclick := { _:dom.Event => action() })} + else if(link == null) { + contents = contents :+ (onclick := { _:dom.Event => action() }) + } if(icon != null){ contents = FontAwesome(icon) +: contents } - - li(contents) + + var body: Frag = li(contents) + if(link != null && enabled){ body = a(href := link, target := "_blank", body) } + + return body } def Separator: Frag = li(`class` := "separator") @@ -140,7 +161,14 @@ class MenuBar(project: Project)(implicit owner: Ctx.Owner) { () => project.setActiveBranch(id) }, icon = if(id == activeBranchId){ "code-fork" } else { null } ) - } + } ++ Seq[Frag]( + Separator, + Rx { + val projectId = project.projectId + val branchId =project.activeBranch().getOrElse(-1) + a(href := s"script.html?project=${projectId}&branch=${branchId}", target := "_blank", li("Publish as script...")) + }.reactive + ) ):_* ) }.reactive, @@ -154,6 +182,14 @@ class MenuBar(project: Project)(implicit owner: Ctx.Owner) a(href := "http://localhost:4040", target := "_blank", li("Spark Dashboard")), ), + ////////////////// Help Menu ////////////////// \ + + Menu(s"left item", FontAwesome("question-circle"))( + packages.map { case (name, link) => + MenuItem(name, link = link, icon = "book") + } + ), + ////////////////// Spacer ////////////////// div(`class` := "spacer"), @@ -214,14 +250,6 @@ class MenuBar(project: Project)(implicit owner: Ctx.Owner) Menu(s"right item state_$stateClass", icon)(options:_*) }.reactive, - - ////////////////// Help Menu ////////////////// - a( - `class` := "right item", - href := "https://www.github.com/VizierDB/vizier-scala/wiki", - target := "_blank", - FontAwesome("question-circle") - ), ).render } \ No newline at end of file diff --git a/vizier/ui/src/info/vizierdb/ui/components/Message.scala b/vizier/ui/src/info/vizierdb/ui/components/Message.scala index 6579de14..0a55d80a 100644 --- a/vizier/ui/src/info/vizierdb/ui/components/Message.scala +++ b/vizier/ui/src/info/vizierdb/ui/components/Message.scala @@ -45,7 +45,7 @@ case class TextMessage(text: String, clazz: String = "message text") extends Mes text.toString .split("\n") .map { div(_) } - ) + ).render } object TextMessage { @@ -76,7 +76,7 @@ case class DatasetMessage(content: serialized.DatasetDescription, module: Module ) } )) - val root = div(`class` := "message dataset", dataset.root) + val root = div(`class` := "message dataset", dataset.root).render } ////////////////////////////////////////////////////////////// @@ -127,7 +127,7 @@ case class VegaMessage(content: JsValue) extends Message ) }, id := divId, - ):dom.Node + ).render ).asInstanceOf[dom.html.Div] } diff --git a/vizier/ui/src/info/vizierdb/ui/components/Module.scala b/vizier/ui/src/info/vizierdb/ui/components/Module.scala index 74a5222d..d29eb320 100644 --- a/vizier/ui/src/info/vizierdb/ui/components/Module.scala +++ b/vizier/ui/src/info/vizierdb/ui/components/Module.scala @@ -107,7 +107,7 @@ class Module(val subscription: ModuleSubscription) /** * A reactive DOM node of all of the messages displayed with this module */ - val messageView = RxBufferView(ul(`class` := "messages"), messages.rxMap { _.root }) + val messageView = RxBufferView(ul(`class` := "messages").render, messages.rxMap { _.root }) logger.trace(s"${messageView.root.childNodes.length} messages rendered") /** @@ -257,6 +257,18 @@ class Module(val subscription: ModuleSubscription) onclick := { _:dom.Event => subscription.delete(); } ).render ), + PopUpButton( + button( + `class` := "to_confirm", + FontAwesome("refresh"), + Tooltip("Re-run this cell") + ).render, + button( + `class` := "confirm", + FontAwesome("check"), + onclick := { _:dom.Event => subscription.reRunModule(); } + ).render + ), div(`class` := "spacer") )} else { Seq.empty }:Seq[Frag] ), diff --git a/vizier/ui/src/info/vizierdb/ui/components/Project.scala b/vizier/ui/src/info/vizierdb/ui/components/Project.scala index 9d294e2d..4806aa26 100644 --- a/vizier/ui/src/info/vizierdb/ui/components/Project.scala +++ b/vizier/ui/src/info/vizierdb/ui/components/Project.scala @@ -43,7 +43,7 @@ class Project(val projectId: Identifier, autosubscribe: Boolean = true) .getOrElse { "Untitled Project" } } val branches = Var[Map[Identifier, serialized.BranchSummary]](Map.empty) val activeBranch = Var[Option[Identifier]](None) - val activeBranchName = Rx { + val activeBranchName: Rx[String] = Rx { activeBranch() match { case None => "Unknown Branch" case Some(id) => branches().get(id) diff --git a/vizier/ui/src/info/vizierdb/ui/components/ProjectListView.scala b/vizier/ui/src/info/vizierdb/ui/components/ProjectListView.scala deleted file mode 100644 index 0ea32087..00000000 --- a/vizier/ui/src/info/vizierdb/ui/components/ProjectListView.scala +++ /dev/null @@ -1,144 +0,0 @@ -/* -- copyright-header:v2 -- - * Copyright (C) 2017-2021 University at Buffalo, - * New York University, - * Illinois Institute of Technology. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * -- copyright-header:end -- */ -package info.vizierdb.ui.components - -import rx._ -import scalatags.JsDom.all._ -import org.scalajs.dom -import info.vizierdb.serialized.ProjectList -import scala.util.{ Success, Failure } -import info.vizierdb.ui.Vizier -import scala.concurrent.ExecutionContext.Implicits.global -import info.vizierdb.nativeTypes -import info.vizierdb.serialized.PropertyList -import play.api.libs.json._ -import info.vizierdb.ui.rxExtras.implicits._ -import info.vizierdb.ui.widgets.FontAwesome - -class ProjectListView()(implicit owner: Ctx.Owner) -{ - val projects = Var[Option[ProjectList]](None) - val projectNameField = Var[Option[dom.html.Input]](None) - loadProjectList() - - def loadProjectList(): Unit = - { - Vizier.api.projectList() - .onComplete { - case Success(result) => - projects() = Some(result) - case Failure(ex) => - Vizier.error(ex.toString()) - } - } - - - def createProject(name: String): Unit = - { - Vizier.api.projectCreate( - PropertyList( - "name" -> JsString(name) - ) - ) .onComplete { - case Success(result) => - dom.window.location.href = s"project.html?project=${result.id}" - case Failure(ex) => - Vizier.error(ex.toString()) - } - } - - val root = - div(id := "project_list_content", - projects.map { - case Some(ProjectList(projects)) => - div(`class` := "project_list_wrapper", - ul(`class` := "project_list", - projects.zipWithIndex.map { case (projectRef, idx) => - li((if(idx % 2 == 0) { `class` := "even" } else { `class` := "odd" }), - a( - href := s"project.html?project=${projectRef.id}", - span( - `class` := "project_name", - ( - projectRef("name") - .flatMap { _.asOpt[String] } - .getOrElse { "Untitled Project" } - ):String - ), - ), - span( - `class` := "dates", - div(`class` := "date_valign", - div(`class` := "created", "Created: ", nativeTypes.formatDate(projectRef.createdAt)), - div(`class` := "modified", "Modified: ", nativeTypes.formatDate(projectRef.lastModifiedAt)), - ) - ), - span( - `class` := "actions", - a( - FontAwesome("trash-o"), - href := "#", - onclick := { _:dom.Event => - val name = projectRef("name").getOrElse { s"Untitled Project ${idx}" } - if( dom.window.confirm(s"Really delete '$name'?") ){ - Vizier.api.projectDelete(projectRef.id) - .onComplete { - case Success(_) => loadProjectList() - case Failure(ex) => Vizier.error(ex.toString()) - } - } - } - ) - ) - ) - } - ), - div( - projectNameField.map { - case None => - div( - button( - `class` := "create_project", - onclick := { (_:dom.MouseEvent) => - projectNameField() = - Some(input(`type` := "text", placeholder := "Project Name").render) - projectNameField.now.get.focus() - }, - "+" - ), - (if(projects.isEmpty){ - div(`class` := "hint", - "↑", br(), "Click here to create a project") - } else { div() }) - ) - case Some(f) => - div(`class` := "create_project_form", - f, - button( - onclick := { (_:dom.MouseEvent) => - createProject(f.value) - projectNameField() = None - }, - "Create" - ) - ) - }.reactive, - ) - ) - case None => - div("Loading project list...") - }.reactive - ).render -} \ No newline at end of file diff --git a/vizier/ui/src/info/vizierdb/ui/components/TableOfContents.scala b/vizier/ui/src/info/vizierdb/ui/components/TableOfContents.scala index 9465e59a..7db0babb 100644 --- a/vizier/ui/src/info/vizierdb/ui/components/TableOfContents.scala +++ b/vizier/ui/src/info/vizierdb/ui/components/TableOfContents.scala @@ -47,13 +47,6 @@ class TableOfContents( ) } - val packages = - Seq[(String,String)]( - "Vizier" -> "https://github.com/VizierDB/vizier-scala/wiki", - "Spark" -> "https://spark.apache.org/docs/3.3.1/sql-programming-guide.html", - "Sedona" -> "https://sedona.apache.org/1.5.0/" - ) - def LinkToModule(element: WorkflowElement, body: Frag*): Frag = a( // The href exists for copyable links @@ -71,9 +64,20 @@ class TableOfContents( def ModuleSummary(module: Module): Frag = Rx { val clazz = s"${module.subscription.state().toString.toLowerCase}_state" + val icon: Option[Frag] = + module.subscription.state() match { + case ExecutionState.DONE => None + case ExecutionState.ERROR => Some(FontAwesome("exclamation-triangle")) + case ExecutionState.WAITING => Some(FontAwesome("clock-o")) + case ExecutionState.STALE => Some(FontAwesome("clock-o")) + case ExecutionState.CANCELLED => Some(FontAwesome("ban")) + case ExecutionState.FROZEN => Some(FontAwesome("snowflake-o")) + case ExecutionState.RUNNING => Some(FontAwesome("cogs")) + } module.toc.map { toc => li(`class` := clazz + toc.titleLevel.map { " level_"+_ }.getOrElse { "" }, LinkToModule(module, toc.title), + icon.map { span(" (", _, ")") }, onmouseover := { _:dom.Event => module.highlight() = true }, onmouseout := { _:dom.Event => module.highlight() = false } ) @@ -81,7 +85,8 @@ class TableOfContents( .getOrElse { li( `class` := clazz, - s"${module.subscription.packageId}.${module.subscription.commandId}" + s"${module.subscription.packageId}.${module.subscription.commandId}", + icon.map { span(" (", _, ")") }, ) } }.reactive @@ -108,11 +113,11 @@ class TableOfContents( val moduleNodes = - RxBufferView(ol(`class` := "the_modules"), + RxBufferView(ol(`class` := "the_modules").render, modules.rxMap { - case module:Module => ModuleSummary(module) - case edit:TentativeModule => TentativeSummary(edit) - case inspector:ArtifactInspector => InspectorSummary(inspector) + case module:Module => ModuleSummary(module).render + case edit:TentativeModule => TentativeSummary(edit).render + case inspector:ArtifactInspector => InspectorSummary(inspector).render case _ => div().render } ) @@ -243,12 +248,6 @@ class TableOfContents( } .reactive - val documentationNodes = - ul( - packages.map { case (name, link) => - li( FontAwesome("book"), a(href := link, name, target := "_blank") ) - } - ).render val projectNameEditor = Var[Option[dom.html.Input]](None) @@ -266,9 +265,9 @@ class TableOfContents( artifactSearch.root, artifactNodes, ), - div(`class` := "documentation_list", - h3(`class` := "title", "Packages"), - documentationNodes, - ) + // div(`class` := "documentation_list", + // h3(`class` := "title", "Packages"), + // documentationNodes, + // ) ) } diff --git a/vizier/ui/src/info/vizierdb/ui/components/TentativeEdits.scala b/vizier/ui/src/info/vizierdb/ui/components/TentativeEdits.scala index 4101c10c..c8c8ea35 100644 --- a/vizier/ui/src/info/vizierdb/ui/components/TentativeEdits.scala +++ b/vizier/ui/src/info/vizierdb/ui/components/TentativeEdits.scala @@ -156,26 +156,52 @@ class TentativeEdits(val project: Project, val workflow: Workflow) /** * Insert a single "real" module at the specified source position * - * This function works with [[WorkflowElement]] to manage the bookkeeping + * This method works with [[WorkflowElement]] to manage the bookkeeping * of the list. Most of the bookkeeping happens in * [[WorkflowElement]]'s linkElementAfterSelf and replaceSelfWithElement * methods. This method is mainly concerned with finding the correct point to * do the insertion and maintaining [[first]], [[last]], and [[baseElements]] + * + * The other bit of magic performed by this method is management of interactions + * between TentativeModule and the backend. Under normal usage, we keep a TentativeModule + * around as a placeholder while we wait for the backend to replicate the module back to + * us. If a module is inserted with the same ID as a TentativeModule located at or around + * the same location (see `findReplacementCandidate`), the TentativeModule will be + * discarded (i.e., the backend has replicated the 'real' module back to us). */ def onInsertOne(n: Int, module: Module): Unit = { logger.debug(s"INSERT @ $n / ${baseElements.size} of $module") assert(n <= baseElements.size) + + // Start by figuring out whether we're replacing a TentativeModule or if this insertion + // came from somewhere else (e.g., the spreadsheet button or another client connected to + // the same workflow. + // + // If the update was triggered by a TentativeModule located between the Nth and N+1th base + // modules, the replacement will arrive as an insertion at the N+1th base module position. + // + // We use findReplacementCandidate to search the **tentative** list in the range between the + // Nth and N+1th base modules (not inclusive). Note that while this range will never contain + // actual modules, it *may* contain tentative elements, including the one that we want to + // replace. + // + // findReplacementCandidate wants us to pass it the immediate predecessor of the N+1th base + // module (predecessor, so that it can stop as soon as it hits the first module). + // There are two additional corner cases that we need to handle: + // - We're appending to the *end* of the list. In this case, there is no N+1th module, so + // we start the search from the list's tail. + // - We're inserting at the 0th base module, and there are no tentative modules preceding it. + // In this case, just pass the 0th base module and findReplacementCandidate will return + // None immediately (and we fall through to normal replacement) val replacementSearchStart = if(n == baseElements.size){ Tail } - else { baseElements(n).safePrev.getOrElse { baseElements(n) } } - - // If this isn't a replacement, then insert it after the first - // preceding real Module. - val insertionPoint = - replacementSearchStart.prevRealModuleExcludingSelf + else { + // Note that 'safePrev' is just a read-only alias for 'prev' + baseElements(n).safePrev.getOrElse { baseElements(n) } + } - logger.debug(s"Starting replacement search at $replacementSearchStart; inserting at $insertionPoint") + logger.debug(s"Starting replacement search at $replacementSearchStart") findReplacementCandidate(module.id, replacementSearchStart) match { @@ -186,22 +212,39 @@ class TentativeEdits(val project: Project, val workflow: Workflow) replacement.replaceSelfWithElement(module) watchers.foreach { _.onUpdate(module.displayPosition, module) } - // ... or there is no matching TentativeModule - case None => insertionPoint match { - - // Possibility two: Insert at the head - case None => - logger.debug(s"Insert will be at head") - module.linkSelfToHead(first) - first = module - watchers.foreach { _.onInsertAll(module.displayPosition, Seq(module)) } - - // Possibility three: Insert elsewhere - case Some(prev) => - logger.debug(s"Insert will be after $prev") - prev.linkElementAfterSelf(module) - watchers.foreach { _.onInsertAll(module.displayPosition, Seq(module)) } + // ... or there is no matching TentativeModule and this is just a straight insertion + case None => { + // ... so insert it after the first preceding real Module. + // None => Insert at head, Some(x) => x is the preceding WorkflowElement + val insertionPoint: Option[WorkflowElement] = + // If no elements, insert at head + if(baseElements.isEmpty) { None } + // If appending, insert after tail + else if(n >= baseElements.size){ Some(baseElements.last) } + // Otherwise, insert it immediately after the N-1th base module (or head if N=0) + // Sept 2024 by OK: I *think* this search is overkill... we could just use + // if(n > 0) { Some(baseElements(n-1)) } else { None } + // but I don't want to poke the happy fun tentative view machine + // any more than is strictly needed. + else { baseElements(n).prevRealModuleExcludingSelf } + + logger.debug(s"Inserting at $insertionPoint") + + insertionPoint match { + // Possibility two: Insert at the head + case None => + logger.debug(s"Insert will be at head") + module.linkSelfToHead(first) + first = module + watchers.foreach { _.onInsertAll(module.displayPosition, Seq(module)) } + + // Possibility three: Insert elsewhere + case Some(prev) => + logger.debug(s"Insert will be after $prev") + prev.linkElementAfterSelf(module) + watchers.foreach { _.onInsertAll(module.displayPosition, Seq(module)) } + } } } if(n == baseElements.size){ baseElements.append(module) } diff --git a/vizier/ui/src/info/vizierdb/ui/components/Workflow.scala b/vizier/ui/src/info/vizierdb/ui/components/Workflow.scala index 10f33d1c..d69570d2 100644 --- a/vizier/ui/src/info/vizierdb/ui/components/Workflow.scala +++ b/vizier/ui/src/info/vizierdb/ui/components/Workflow.scala @@ -39,12 +39,12 @@ class Workflow(val subscription: BranchSubscription, val project: Project) new TentativeEdits(moduleViews, project, this) val moduleNodes = - RxBufferView(div(`class` := "module_list"), + RxBufferView(div(`class` := "module_list").render, moduleViewsWithEdits.rxMap { element => div( element.root, StandardInterModule(element) - ) + ).render } ) diff --git a/vizier/ui/src/info/vizierdb/ui/components/WorkflowElement.scala b/vizier/ui/src/info/vizierdb/ui/components/WorkflowElement.scala index 009a0252..ec1d76db 100644 --- a/vizier/ui/src/info/vizierdb/ui/components/WorkflowElement.scala +++ b/vizier/ui/src/info/vizierdb/ui/components/WorkflowElement.scala @@ -65,7 +65,18 @@ abstract class WorkflowElement(implicit owner: Ctx.Owner) */ private var prev: Option[WorkflowElement] = None + /** + * The next element of the linked list. + * + * This function is named 'safe' because it is read-only + */ def safeNext = next + + /** + * The previous element of the linked list. + * + * This function is named 'safe' because it is read-only + */ def safePrev = prev def propagateAllMyArtifacts(): Unit = diff --git a/vizier/ui/src/info/vizierdb/ui/components/dataset/TableView.scala b/vizier/ui/src/info/vizierdb/ui/components/dataset/TableView.scala index 275fd7f7..1d074105 100644 --- a/vizier/ui/src/info/vizierdb/ui/components/dataset/TableView.scala +++ b/vizier/ui/src/info/vizierdb/ui/components/dataset/TableView.scala @@ -187,7 +187,7 @@ class TableView( var position = TableView.GUTTER_WIDTH for(i <- 0 until data.columnCount){ val w = data.columnWidthInPixels(i) - root.appendChild(data.cellAt(row, i, w, position)) + root.appendChild(data.cellAt(row, i, w, position).render) position += w } OnMount.trigger(root) diff --git a/vizier/ui/src/info/vizierdb/ui/components/editors/CodeModuleSummary.scala b/vizier/ui/src/info/vizierdb/ui/components/editors/CodeModuleSummary.scala index f5567373..c9cdfd3e 100644 --- a/vizier/ui/src/info/vizierdb/ui/components/editors/CodeModuleSummary.scala +++ b/vizier/ui/src/info/vizierdb/ui/components/editors/CodeModuleSummary.scala @@ -34,6 +34,7 @@ import info.vizierdb.ui.rxExtras.implicits._ import info.vizierdb.ui.components.EnvironmentParameter import info.vizierdb.serialized.SimpleParameterDescription import info.vizierdb.ui.components.StringParameter +import info.vizierdb.ui.components.BooleanParameter class CodeModuleSummary( module: Module, @@ -122,6 +123,17 @@ class CodeModuleSummary( new StringParameter(p) } + val showOutputField: Option[BooleanParameter] = + command.parameters.collectFirst { + case p:SimpleParameterDescription if p.id == "show_output" => + new BooleanParameter(p) + } + + // The above is a HUGE cludge. + // Why are we manually allowing *specific* fields? + // TODO: Fix before 2.1 + // https://github.com/VizierDB/vizier-scala/issues/311 + var otherArgs = Seq[CommandArgument]() def commandId = command.id @@ -132,6 +144,8 @@ class CodeModuleSummary( CommandArgument(e.id, e.value) } ++ outputDatasetField.map { o => CommandArgument(o.id, o.value) + } ++ showOutputField.map { o => + CommandArgument(o.id, o.value) } def loadState(arguments: Seq[CommandArgument]): Unit = @@ -158,6 +172,13 @@ class CodeModuleSummary( outputDatasetField.get.set(arg.get.value) } } + + if(showOutputField.isDefined){ + val arg = arguments.find { _.id == showOutputField.get.id } + if(arg.isDefined){ + showOutputField.get.set(arg.get.value) + } + } } val editorFields: Frag = div( @@ -167,6 +188,7 @@ class CodeModuleSummary( code.root, environmentParam.map { _.root }, outputDatasetField.map { _.root }, + showOutputField.map { _.root }, ).render } diff --git a/vizier/ui/src/info/vizierdb/ui/components/editors/LoadDatasetEditor.scala b/vizier/ui/src/info/vizierdb/ui/components/editors/LoadDatasetEditor.scala index 99164275..a04e23df 100644 --- a/vizier/ui/src/info/vizierdb/ui/components/editors/LoadDatasetEditor.scala +++ b/vizier/ui/src/info/vizierdb/ui/components/editors/LoadDatasetEditor.scala @@ -118,10 +118,13 @@ class LoadDatasetEditor( new StringParameter("delimiter", "Field Delimiter: ", true, false, ","), Set(DatasetFormat.CSV) -> new BooleanParameter("loadInferTypes", "Guess Schema: ", true, false, true), + Set(DatasetFormat.JSON) -> + new BooleanParameter("multiline", "Records Span Multiple Lines: ", true, false, true) ) val directToSparkOptionalParameters = Set( "header", - "delimiter" + "delimiter", + "multiline", ) val optionalParameterByKey = optionalParameters.map { param => param._2.id -> param._2 } diff --git a/vizier/ui/src/info/vizierdb/ui/components/editors/SpreadsheetModuleSummary.scala b/vizier/ui/src/info/vizierdb/ui/components/editors/SpreadsheetModuleSummary.scala index 2ae67ef3..beef7f31 100644 --- a/vizier/ui/src/info/vizierdb/ui/components/editors/SpreadsheetModuleSummary.scala +++ b/vizier/ui/src/info/vizierdb/ui/components/editors/SpreadsheetModuleSummary.scala @@ -166,7 +166,13 @@ class SpreadsheetModuleSummary( override def endEditor(): Unit = { - + if(spreadsheetClient != null){ spreadsheetClient.close() } + spreadsheetClient = null + (resultDatasetId.now, inputDataset.now) match { + case (Some(resultId), _) => loadDataset(resultId) + case (None, Some(input)) => loadDataset(input.id) + case (None, None) => logger.error("Internal error: Cancelling spreadsheet editor without a dataset") + } } class SpreadsheetEditor(val packageId: String, command: PackageCommand, val delegate: ModuleEditorDelegate) diff --git a/vizier/ui/src/info/vizierdb/ui/components/editors/UnloadDatasetEditor.scala b/vizier/ui/src/info/vizierdb/ui/components/editors/UnloadDatasetEditor.scala index fd9273c5..3d49c237 100644 --- a/vizier/ui/src/info/vizierdb/ui/components/editors/UnloadDatasetEditor.scala +++ b/vizier/ui/src/info/vizierdb/ui/components/editors/UnloadDatasetEditor.scala @@ -160,18 +160,20 @@ class UnloadDatasetEditor( override val editorFields: Frag = div(`class` := "module editable unload_dataset", - dataset.root, - div(`class` := "format_field", - label("Format: ", `for` := "file_format"), - format - ), - Rx { - activeFormat() match { - case "publish_local" => publishName.root - case _ => publishUrl.root - } - }.reactive, - sparkOptions.root + div( + dataset.root, + div(`class` := "format_field", + label("Format: ", `for` := "file_format"), + format + ), + Rx { + activeFormat() match { + case "publish_local" => publishName.root + case _ => publishUrl.root + } + }.reactive, + sparkOptions.root + ) ) diff --git a/vizier/ui/src/info/vizierdb/ui/components/parameter.scala b/vizier/ui/src/info/vizierdb/ui/components/parameter.scala index b5fa5061..d1fa63ff 100644 --- a/vizier/ui/src/info/vizierdb/ui/components/parameter.scala +++ b/vizier/ui/src/info/vizierdb/ui/components/parameter.scala @@ -253,6 +253,7 @@ class BooleanParameter( required = parameter.required, hidden = parameter.hidden ) + if(parameter.default.isDefined){ set(parameter.default.get) } } val root = input(`type` := "checkbox").render @@ -435,7 +436,8 @@ class ColIdParameter( ):_* ) }.reactive - ) + ).render + def value = JsNumber(inputNode[dom.html.Select].value.toInt) override def set(v: JsValue): Unit = @@ -509,10 +511,13 @@ class ArtifactParameter( Seq("---" -> "") ++ artifacts().filter { _._2 == artifactType } .map { x => x._1 -> x._1 } + .toSeq + .sorted ):_* ) }.reactive - ) + ).render + def value = inputNode[dom.html.Select].value match { case "" => JsNull @@ -598,7 +603,8 @@ class FileParameter( bodyText() = span(DEFAULT_BODY_TEXT) e.preventDefault() } - ) + ).render + val urlField:dom.Node = { val identity = s"parameter_${Parameter.nextInputId}" @@ -610,7 +616,7 @@ class FileParameter( attr("id") := identity, attr("name") := "URL" ) - ) + ).render } val displays = Seq[dom.Node]( @@ -643,7 +649,8 @@ class FileParameter( tab("Upload File", 0).reactive, tab("Load URL", 1).reactive, mode.map { displays(_) }.reactive - ) + ).render + def value = mode.now match { case 0 => Json.obj("fileid" -> uploadedFileId, "filename" -> uploadedFileName) @@ -733,7 +740,7 @@ class ListParameter( } val rows = RxBuffer[Seq[Parameter]]( tentativeRow() ) - val rowView = RxBufferView(tbody(), + val rowView = RxBufferView(tbody().render, rows.rxMap { row => tr( row.map { _.root }.map { td(_) } , @@ -747,7 +754,7 @@ class ListParameter( } } ) - ) + ).render }) def lastRow = Var(rows.last) @@ -780,7 +787,7 @@ class ListParameter( ), rowView.root, ) - ) + ).render def rawValue = rows.toSeq @@ -885,7 +892,7 @@ class RecordParameter( ul( elements.map { _.root }.map { li(_) } ) - ) + ).render def value = Json.toJson(elements.map { _.toArgument }) def set(v: JsValue): Unit = @@ -1230,7 +1237,7 @@ class UnsupportedParameter( parameter.hidden ) } - val root = span(s"Unsupported parameter type: $dataType ($context)") + val root = span(s"Unsupported parameter type: $dataType ($context)").render def value = JsNull def set(v: JsValue): Unit = {} } diff --git a/vizier/ui/src/info/vizierdb/ui/components/settings/SettingsView.scala b/vizier/ui/src/info/vizierdb/ui/components/settings/SettingsView.scala index 3e440c00..2ee4d2e6 100644 --- a/vizier/ui/src/info/vizierdb/ui/components/settings/SettingsView.scala +++ b/vizier/ui/src/info/vizierdb/ui/components/settings/SettingsView.scala @@ -100,6 +100,5 @@ class SettingsView(initialTab: Option[String] = None)(implicit owner: Ctx.Owner) case Some(content) => content.root }.reactive ), - - ) + ).render } \ No newline at end of file diff --git a/vizier/ui/src/info/vizierdb/ui/components/snippets/PythonSnippets.scala b/vizier/ui/src/info/vizierdb/ui/components/snippets/PythonSnippets.scala index 0c254db9..7ba6b567 100644 --- a/vizier/ui/src/info/vizierdb/ui/components/snippets/PythonSnippets.scala +++ b/vizier/ui/src/info/vizierdb/ui/components/snippets/PythonSnippets.scala @@ -18,11 +18,11 @@ package info.vizierdb.ui.components.snippets object PythonSnippets extends SnippetsBase { AddGroup("desktop", "Access and Output")( - "Get Artifact" -> """# Get read-only pandas dataframe object for dataset with given name. - |ds = vizierdb['ARTIFACT_NAME'""".stripMargin, + "Get Vizier Artifact" -> """# Get read-only pandas dataframe object for dataset with given name. + |ds = vizierdb['ARTIFACT_NAME']""".stripMargin, - "Get Dataset Dataframe" -> """# Get read-only pandas dataframe object for dataset with given name.'); - |df = vizierdb.get_data_frame('UNIQUE_DS_NAME')""".stripMargin, + // "Get Dataset Dataframe" -> """# Get read-only pandas dataframe object for dataset with given name.'); + // |df = vizierdb.get_data_frame('UNIQUE_DS_NAME')""".stripMargin, "Print Column Names" -> """# Iterate over list of dataset columns and print column name |for col in ds.columns: diff --git a/vizier/ui/src/info/vizierdb/ui/network/ModuleSubscription.scala b/vizier/ui/src/info/vizierdb/ui/network/ModuleSubscription.scala index 1b350d23..31ebbe8f 100644 --- a/vizier/ui/src/info/vizierdb/ui/network/ModuleSubscription.scala +++ b/vizier/ui/src/info/vizierdb/ui/network/ModuleSubscription.scala @@ -113,4 +113,17 @@ class ModuleSubscription( */ def thawUpto(): Unit = client.workflowThawUpto(position.now) + /** + * Rerun the present cell + */ + def reRunModule(): Unit = + { + client.workflowReplace( + modulePosition = position.now, + packageId = packageId, + commandId = commandId, + arguments = arguments.now + ) + } + } \ No newline at end of file diff --git a/vizier/ui/src/info/vizierdb/ui/network/SpreadsheetTools.scala b/vizier/ui/src/info/vizierdb/ui/network/SpreadsheetTools.scala index b7361135..b2ddb330 100644 --- a/vizier/ui/src/info/vizierdb/ui/network/SpreadsheetTools.scala +++ b/vizier/ui/src/info/vizierdb/ui/network/SpreadsheetTools.scala @@ -18,8 +18,9 @@ import info.vizierdb.types._ import info.vizierdb.ui.Vizier import info.vizierdb.serialized.CommandArgument import play.api.libs.json._ +import info.vizierdb.util.Logging -object SpreadsheetTools +object SpreadsheetTools extends Logging { val SPREADSHEET_PACKAGE = "data" val SPREADSHEET_COMMAND = "spreadsheet" @@ -32,6 +33,7 @@ object SpreadsheetTools def insertNewSpreadsheet(datasetName: String, position: Int): Unit = { + logger.trace(s"Inserting spreadsheet for $datasetName @ $position") Vizier.project.now.get .branchSubscription.get .Client @@ -45,6 +47,7 @@ object SpreadsheetTools def appendNewSpreadsheet(datasetName: String): Unit = { + logger.trace(s"Appending spreadsheet for $datasetName") Vizier.project.now.get .branchSubscription.get .Client diff --git a/vizier/ui/src/info/vizierdb/ui/roots/ArtifactView.scala b/vizier/ui/src/info/vizierdb/ui/roots/ArtifactView.scala new file mode 100644 index 00000000..85abc6c9 --- /dev/null +++ b/vizier/ui/src/info/vizierdb/ui/roots/ArtifactView.scala @@ -0,0 +1,51 @@ +/* -- copyright-header:v2 -- + * Copyright (C) 2017-2021 University at Buffalo, + * New York University, + * Illinois Institute of Technology. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * -- copyright-header:end -- */ +package info.vizierdb.ui.roots + +import org.scalajs.dom +import org.scalajs.dom.document +import rx._ +import info.vizierdb.ui.Vizier +import scalatags.JsDom.all._ +import info.vizierdb.ui.widgets.Spinner +import info.vizierdb.ui.rxExtras.implicits._ +import info.vizierdb.ui.rxExtras.OnMount +import info.vizierdb.ui.components.DisplayArtifact +import scala.util.{ Try, Success, Failure } +import scala.concurrent.ExecutionContext.Implicits.global + +object ArtifactView +{ + def apply(arguments: Map[String, String])(implicit owner: Ctx.Owner): Unit = + { + val projectId = arguments.get("project").get.toLong + val artifactId = arguments.get("artifact").get.toLong + val name = arguments.get("name") + val artifact = Vizier.api.artifactGet(projectId, artifactId, name = name) + + document.addEventListener("DOMContentLoaded", { (e: dom.Event) => + val root = Var[Frag](div(`class` := "display_artifact", Spinner(50))) + + document.body.appendChild(root.reactive) + OnMount.trigger(document.body) + + artifact.onComplete { + case Success(a) => root() = new DisplayArtifact(a).root + case Failure(err) => Vizier.error(err.getMessage()) + } + }) + } + +} \ No newline at end of file diff --git a/vizier/ui/src/info/vizierdb/ui/roots/LandingPage.scala b/vizier/ui/src/info/vizierdb/ui/roots/LandingPage.scala new file mode 100644 index 00000000..d8df8b2d --- /dev/null +++ b/vizier/ui/src/info/vizierdb/ui/roots/LandingPage.scala @@ -0,0 +1,244 @@ +/* -- copyright-header:v2 -- + * Copyright (C) 2017-2021 University at Buffalo, + * New York University, + * Illinois Institute of Technology. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * -- copyright-header:end -- */ +package info.vizierdb.ui.roots + +import play.api.libs.json._ +import org.scalajs.dom.document +import scalatags.JsDom.all._ +import rx._ +import info.vizierdb.ui.rxExtras.OnMount +import info.vizierdb.util.Logging +import org.scalajs.dom +import info.vizierdb.serialized +import info.vizierdb.serializers._ +import scala.util.{ Success, Failure } +import info.vizierdb.ui.Vizier +import scala.concurrent.ExecutionContext.Implicits.global +import info.vizierdb.nativeTypes +import info.vizierdb.ui.rxExtras.implicits._ +import info.vizierdb.ui.widgets.FontAwesome + + +object LandingPage + extends Logging +{ + class ProjectView()(implicit owner: Ctx.Owner) + { + val projects = Var[Option[serialized.ProjectList]](None) + val projectNameField = Var[Option[dom.html.Input]](None) + loadProjectList() + + def loadProjectList(): Unit = + { + Vizier.api.projectList() + .onComplete { + case Success(result) => + projects() = Some(result) + case Failure(ex) => + Vizier.error(ex.toString()) + } + } + + + def createProject(name: String): Unit = + { + Vizier.api.projectCreate( + serialized.PropertyList( + "name" -> JsString(name) + ) + ) .onComplete { + case Success(result) => + dom.window.location.href = s"project.html?project=${result.id}" + case Failure(ex) => + Vizier.error(ex.toString()) + } + } + + def createProjectButtonClick(input: dom.html.Input): Unit = + { + createProject(input.value) + projectNameField() = None + } + + val root = + projects.map { + case Some(serialized.ProjectList(projects)) => + div(`class` := "project_list_wrapper", + h2("Projects"), + ul(`class` := "project_list", + projects.zipWithIndex.map { case (projectRef, idx) => + li((if(idx % 2 == 0) { `class` := "even" } else { `class` := "odd" }), + a( + href := s"project.html?project=${projectRef.id}", + span( + `class` := "project_name", + ( + projectRef("name") + .flatMap { _.asOpt[String] } + .getOrElse { "Untitled Project" } + ):String + ), + ), + span( + `class` := "dates", + div(`class` := "date_valign", + div(`class` := "created", "Created: ", nativeTypes.formatDate(projectRef.createdAt)), + div(`class` := "modified", "Modified: ", nativeTypes.formatDate(projectRef.lastModifiedAt)), + ) + ), + span( + `class` := "actions", + a( + FontAwesome("trash-o"), + href := "#", + onclick := { _:dom.Event => + val name = projectRef("name").getOrElse { s"Untitled Project ${idx}" } + if( dom.window.confirm(s"Really delete '$name'?") ){ + Vizier.api.projectDelete(projectRef.id) + .onComplete { + case Success(_) => loadProjectList() + case Failure(ex) => Vizier.error(ex.toString()) + } + } + } + ) + ) + ) + } + ), + div( + projectNameField.map { + case None => + div( + button( + `class` := "create_project", + onclick := { (_:dom.MouseEvent) => + projectNameField() = + Some(input( + `type` := "text", + placeholder := "Project Name", + // Submit on enter key + onkeyup := { evt:dom.KeyboardEvent => + if(evt.keyCode == 13){ + evt.preventDefault() + createProjectButtonClick( + evt.target.asInstanceOf[dom.html.Input] + ) + } + }, + ).render) + projectNameField.now.get.focus() + }, + "+" + ), + (if(projects.isEmpty){ + div(`class` := "hint", + "↑", br(), "Click here to create a project") + } else { div() }) + ) + case Some(f) => + div(`class` := "create_project_form", + f, + button( + onclick := { (_:dom.MouseEvent) => + createProjectButtonClick(f) + }, + "Create" + ) + ) + }.reactive, + ) + ) + case None => + div("Loading project list...") + }.reactive + } + + class ScriptView()(implicit owner: Ctx.Owner) + { + val scripts = Var[Option[serialized.VizierScriptList]](None) + loadScriptList() + + def loadScriptList(): Unit = + { + Vizier.api.scriptListScripts() + .onComplete { + case Success(result) => + scripts() = Some(result) + case Failure(ex) => + Vizier.error(ex.toString()) + } + } + + val root = + Rx { + scripts() match + { + case Some(serialized.VizierScriptList(scripts)) => + if(scripts.size <= 0){ div() } + else { + div(`class` := "project_list_wrapper", + h2("Scripts"), + ul(`class` := "project_list", + scripts.zipWithIndex.map { case (script, idx) => + li((if(idx % 2 == 0) { `class` := "even" } else { `class` := "odd" }), + a(href := "script.html?script="+script.id, + span(`class` := "project_name", script.name) + ), + span( + `class` := "actions", + a( + FontAwesome("trash-o"), + href := "#", + onclick := { _:dom.Event => + val name = script.name + if( dom.window.confirm(s"Really delete '$name'?") ){ + Vizier.api.scriptDeleteScript(script.id.toString) + .onComplete { + case Success(_) => loadScriptList() + case Failure(ex) => Vizier.error(ex.toString()) + } + } + } + ) + ) + ) + } + ) + ) + } + case None => + div("Loading scripts...") + } + }.reactive + } + + + def apply(arguments: Map[String, String])(implicit owner: Ctx.Owner): Unit = + { + val projectList = new ProjectView() + val scriptList = new ScriptView() + + val root = div(id := "project_list_content", + projectList.root, + scriptList.root, + ).render + + document.addEventListener("DOMContentLoaded", { (e: dom.Event) => + document.body.appendChild( root ) + OnMount.trigger(document.body) + }) + } +} \ No newline at end of file diff --git a/vizier/ui/src/info/vizierdb/ui/roots/ProjectView.scala b/vizier/ui/src/info/vizierdb/ui/roots/ProjectView.scala new file mode 100644 index 00000000..e1b8ee22 --- /dev/null +++ b/vizier/ui/src/info/vizierdb/ui/roots/ProjectView.scala @@ -0,0 +1,100 @@ +/* -- copyright-header:v2 -- + * Copyright (C) 2017-2021 University at Buffalo, + * New York University, + * Illinois Institute of Technology. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * -- copyright-header:end -- */ +package info.vizierdb.ui.roots + +import scalatags.JsDom.all._ +import info.vizierdb.ui.rxExtras.implicits._ +import info.vizierdb.ui.Vizier +import org.scalajs.dom +import org.scalajs.dom.document +import scala.util.{ Try, Success, Failure } +import info.vizierdb.ui.components.Project +import info.vizierdb.util.Logging +import info.vizierdb.ui.widgets.Spinner +import scala.concurrent.ExecutionContext.Implicits.global +import rx._ +import info.vizierdb.ui.rxExtras.OnMount + +object ProjectView + extends Logging +{ + def apply(arguments: Map[String, String])(implicit owner: Ctx.Owner): Unit = + { + val projectId = + arguments.get("project") + .getOrElse { Vizier.error("No Project ID specified") } + .toLong + val projectRequest = Vizier.api.projectGet(projectId) + document.addEventListener("DOMContentLoaded", { (e: dom.Event) => + try { + projectRequest + .onComplete { + case Success(response) => + Vizier.project() = Some(new Project(projectId).load(response)) + logger.debug(s"Project: ${Vizier.project.now.get}") + document.addEventListener("keydown", { (evt:dom.KeyboardEvent) => + if(evt.key == "Enter" && evt.ctrlKey){ + Vizier.project.now.foreach { + _.workflow.now.foreach { + _.moduleViewsWithEdits.saveAllCells() + } + } + evt.stopPropagation() + } else if (evt.keyCode == 116 /* f5 */) { + // disable reload https://github.com/VizierDB/vizier-scala/issues/159 + evt.preventDefault() + // } else { + // println(s"KEY: ${evt.keyCode}") + } + }) + + // The following bit can be uncommented for onLoad triggers + // to automate development debugging + // dom.window.setTimeout( + // () => { + // val workflow = + // project.now + // .get + // .workflow + // .now + // .get + // val module = + // workflow.moduleViewsWithEdits + // .prependTentative() + // // module.activeView.trigger { _ match { + // // case Some(Left(commandlist)) => + // // commandlist.simulateClick("data", "load") + // // case _ => + // // println("Waiting...") + // // }} + // }, + // 500 + // ) + + case Failure(ex) => + Vizier.error(ex.toString) + } + + document.body.appendChild( + Rx { Vizier.project().map { _.root } + .getOrElse { Spinner(size = 30) } }.reactive + ) + OnMount.trigger(document.body) + } catch { + case t: Throwable => logger.error(t.toString) + } + }) + } +} \ No newline at end of file diff --git a/vizier/ui/src/info/vizierdb/ui/roots/ScriptEditor.scala b/vizier/ui/src/info/vizierdb/ui/roots/ScriptEditor.scala new file mode 100644 index 00000000..b2de4237 --- /dev/null +++ b/vizier/ui/src/info/vizierdb/ui/roots/ScriptEditor.scala @@ -0,0 +1,420 @@ +/* -- copyright-header:v2 -- + * Copyright (C) 2017-2021 University at Buffalo, + * New York University, + * Illinois Institute of Technology. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * -- copyright-header:end -- */ +package info.vizierdb.ui.roots + +import rx._ +import info.vizierdb.ui.Vizier +import org.scalajs.dom.document +import org.scalajs.dom +import scalatags.JsDom.all._ +import info.vizierdb.ui.rxExtras.implicits._ +import info.vizierdb.ui.rxExtras.OnMount +import info.vizierdb.ui.widgets.Spinner +import scala.concurrent.Future +import info.vizierdb.serialized.VizierScript +import scala.concurrent.ExecutionContext.Implicits.global +import info.vizierdb.serialized.VizierScriptModule +import info.vizierdb.ui.rxExtras.RxBuffer +import info.vizierdb.ui.rxExtras.RxBufferView +import info.vizierdb.ui.rxExtras.RxBufferVar +import info.vizierdb.serialized.ArtifactSummary +import info.vizierdb.types._ +import info.vizierdb.ui.widgets.FontAwesome +import info.vizierdb.ui.widgets.Tooltip +import scala.util.{ Success, Failure } +import info.vizierdb.ui.widgets.BrowserLocation + +class ScriptEditor(script: VizierScript)(implicit owner: Ctx.Owner) +{ + + val modules: RxBufferVar[VizierScriptModule] = + RxBuffer.ofSeq(script.modules) + + var activeOutputs = Var[Set[String]](Set.empty) + + var scriptId = script.id + val scriptName = Var[String](script.name) + val scriptVersion = Var[String](script.version.toString) + + // The last module optionally stores the activated outputs of the script. + // Strip this off and initialize activeOutputs if so + modules.last match { + case module: VizierScriptModule.InputOutput if module.imports.isEmpty => + modules.remove(modules.size-1) + activeOutputs() = module.exports.keySet + case _ => () + } + + val (inputs, outputs) = + modules.asVar.map { case (_, modules) => { + val (missingInputs, activeOutputs, _) = + modules.foldLeft( ( + Map[String, ArtifactType.T](), // Missing Inputs + Map[String, ArtifactType.T](), // Active Outputs + Map[String, ArtifactType.T](), // All Outputs + ) ){ + case ( (missingInputs, activeOutputs, allOutputs), module ) => + if(module.enabled){ + ( + missingInputs ++ + (module.inputs -- activeOutputs.keySet) + .map { attr => + attr -> allOutputs.getOrElse(attr, ArtifactType.PARAMETER) + }.toMap, + activeOutputs ++ module.outputs, + allOutputs ++ module.outputs, + ) + } else { + ( + missingInputs, + activeOutputs, + allOutputs ++ module.outputs + ) + } + } + (missingInputs, activeOutputs) + }}.unzip + + + def toggleEnabled(moduleId: Identifier): Unit = + { + for((module, idx) <- modules.zipWithIndex) + { + module match { + case module:VizierScriptModule.Inline if module.id == moduleId => + modules.update(idx, module.copy(enabled = !module.enabled)) + case _ => () + } + } + } + + def nextIOId:Identifier = + modules.foldLeft(-1l){ (id, mod) => Math.min(id, mod.id) } - 1 + + def addStaticInput(name: String, artType: ArtifactType.T) + { + if(modules.head.isInstanceOf[VizierScriptModule.InputOutput] && modules.head.id < 0) + { + val old = modules.head.asInstanceOf[VizierScriptModule.InputOutput] + modules.update( + 0, old.copy(imports = old.imports ++ Map(name -> artType)) + ) + } else + { + modules.insert(0, VizierScriptModule.InputOutput( + id = nextIOId, + imports = Map(name -> artType), + exports = Map.empty + )) + } + } + + def removeInput(name: String, moduleId: Identifier) + { + for( (module, idx) <- modules.zipWithIndex ) + { + module match { + case module: VizierScriptModule.InputOutput if module.id == moduleId => + modules.update( + idx, module.copy(imports = module.imports - name) + ) + case _ => () + } + } + } + + def addStaticOutput(name: String) + { + activeOutputs() = activeOutputs.now + name + } + + def removeStaticOutput(name: String) + { + activeOutputs() = activeOutputs.now - name + } + + def toggleStaticOutput(name: String) + { + if(activeOutputs.now(name)){ + activeOutputs() = activeOutputs.now - name + } else { + activeOutputs() = activeOutputs.now + name + } + } + + def getModules: Seq[VizierScriptModule] = + { + val exports:Map[String, ArtifactType.T] = + activeOutputs.now.toSeq.flatMap { o => outputs.now.get(o).map { o -> _ } }.toMap + + modules.toSeq ++ ( + if(exports.isEmpty) { Seq() } + else { Seq( + VizierScriptModule.InputOutput( + id = nextIOId, + imports = Map.empty, + exports = exports.toMap + ) + ) } + ) + } + + def toScript: VizierScript = + script.copy( + version = script.version + 1, + name = nameInput.value, + modules = getModules + ) + + val savingStatus = Var[Option[dom.Node]](None) + + def save(): Unit = + { + savingStatus() = Some(Spinner(8).render) + // There's some sort of dumb GC that triggers if `ret` is not a variable. + // Do not try to inline it and the subsequent onComplete. + val ret: Future[VizierScript] = + if(script.id < 0){ + Vizier.api.scriptCreateScript( + name = nameInput.value, + projectId = script.projectId.toString, + branchId = script.branchId.toString, + workflowId = script.workflowId.toString, + modules = getModules + ) + } else { + Vizier.api.scriptUpdateScript( + scriptId = script.id.toString, + name = nameInput.value, + projectId = script.projectId.toString, + branchId = script.branchId.toString, + workflowId = script.workflowId.toString, + modules = getModules + ) + } + ret.onComplete { + case Success(newScript) => + scriptId = newScript.id + scriptName() = newScript.name + scriptVersion() = newScript.version.toString + savingStatus() = Some(FontAwesome("check").render) + dom.window.setTimeout( { () => savingStatus() = None }, 2000 ) + BrowserLocation.replaceQuery("script" -> scriptId.toString) + + case Failure(err) => + savingStatus() = Some(FontAwesome("times").render) + dom.window.setTimeout( { () => savingStatus() = None }, 2000 ) + Vizier.error(err.getMessage()) + } + } + + val nameInput = + input( + `type` := "text", + id := "script_name", + name := "script_name", + value := script.name + ).render + + val moduleView = + RxBufferView(div(`class` := "script_content").render, + modules + .rxMap { + + /////////////// Inline Module ////////////////////// + + case module: VizierScriptModule.Inline => + val enabledClass = if(module.enabled){ "enabled" } else { "disabled" } + val commandClass = s"module_${module.spec.command.packageId}_${module.spec.command.commandId}" + div(`class` := s"module $enabledClass $commandClass", + div(`class` := "menu", + button( + FontAwesome("check-square-o"), + onclick := { _:dom.MouseEvent => toggleEnabled(module.id) }, + Tooltip("Toggle whether the cell will be included in the script") + ), + ), + div(`class` := "module_body", + h3( + `class` := "module_type", s"${module.spec.command.packageId}.${module.spec.command.commandId}", + if(module.enabled){ span("") } + else { span(" [DISABLED]") } + ), + pre(`class` := "module_content", module.spec.text) + ) + ).render + + /////////////// Input/Output Module ////////////////////// + + case module: VizierScriptModule.InputOutput => + val enabledClass = if(module.enabled){ "enabled" } else { "disabled" } + div( + `class` := s"module $enabledClass script_in_out", + div(`class` := "menu"), + div(`class` := "module_body", + ( if(module.imports.isEmpty){ Seq[Frag]() } + else { Seq( + h3("Import Artifacts to Script"), + ul( + module.imports.map { case (label, artType) => + li(FontAwesome(ArtifactType.icon(artType)), " ➡ ", label, + button(FontAwesome("times"), onclick := { _:dom.Event => removeInput(label, module.id) }) + ) + }.toSeq, + ) + )} + ), + ( if(module.exports.isEmpty){ Seq[Frag]() } + else { Seq( + h3("Export Artifacts from Script"), + ul( + module.exports.map { case (label, artType) => + li("🠘: ", label, " [", artType.toString, "]") + }.toSeq, + ) + )} + ), + ), + ).render + } + ) + + val menu = + tag("nav")(id := "menu_bar", + + ////////////////// Logo ////////////////// + a(`class` := "left item", href := "index.html", img(src := "vizier.svg")), + + ////////////////// Logo ////////////////// + div(`class` := "left item", + Rx { + div(`class` := "text", scriptName() + " (version ", scriptVersion(), ")") + }.reactive + ) + ).render + + val root = + div(`class` := "script_editor", + menu, + div(`class` := "content", + div(`class` := "script_config", + h2("Publish"), + div(`class` := "script_field", + label(`for` := "script_name", "Name:"), + nameInput, + ), + div(`class` := "script_field", + Rx { + savingStatus() match { + case None => + div(button("Save Script", onclick := { _:dom.Event => save() })) + case Some(s) => + div(button(s)) + } + }.reactive, + ), + Rx { + if(inputs().isEmpty){ div() } + else { + div( + h2("Missing Inputs"), + ul(`class` := "inputs", + inputs().toSeq.sortBy { _._1 }.map { case (label, artType) => + li( + FontAwesome(ArtifactType.icon(artType)), + label.take(20) + (if(label.size > 20){ "..." } else { "" }), + button("Add Import", + onclick := { _:dom.Event => + addStaticInput(label, artType) + } + ), + Tooltip(label) + ) + } + ) + ) + } + }.reactive, + div( + h2("Script Outputs"), + p("(click to enable)"), + Rx { + val active = activeOutputs() + ul(`class` := "outputs", + outputs().toSeq.sortBy { _._1 }.map { case (label, artType) => + li(`class` := (if(active(label)){ "enabled" } else { "disabled" }), + onclick := { _:dom.Event => toggleStaticOutput(label) }, + FontAwesome(ArtifactType.icon(artType)), + label.take(20) + (if(label.size > 20){ "..." } else { "" }), + Tooltip(label + (if(active(label)){ " [Enabled]" } else { " [Disabled]" })) + ) + } + ) + }.reactive + ), + ), + div(`class` := "script_body", + moduleView.root + ), + ) + ).render +} + +object ScriptEditor +{ + def apply(arguments: Map[String, String])(implicit owner: Ctx.Owner): Unit = + { + val projectId = arguments.get("project").map { _.toLong } + val scriptId = arguments.get("script").map { _.toLong } + val branchId = arguments.get("branch").map { _.toLong } + val workflowId = arguments.get("workflow").map { _.toLong } + + val editor = Var[Option[ScriptEditor]](None) + + var loading: Future[ScriptEditor] = + (scriptId, projectId, branchId, workflowId) match { + case (_, Some(projectId), Some(branchId), Some(workflowId)) => + Vizier.api.workflowGet(projectId, branchId, workflowId) + .map { workflow => + new ScriptEditor(VizierScript.fromWorkflow(projectId, branchId, workflow)) + } + case (_, Some(projectId), Some(branchId), None) => + Vizier.api.workflowHeadGet(projectId, branchId) + .map { workflow => + new ScriptEditor(VizierScript.fromWorkflow(projectId, branchId, workflow)) + } + case (Some(scriptId), _, _, _) => + Vizier.api.scriptGetScriptById(scriptId.toString) + .map { new ScriptEditor(_) } + case _ => + Future.failed(new Exception("No script provided")) + } + + loading.onSuccess { case ed => editor() = Some(ed) } + + document.addEventListener("DOMContentLoaded", { (e: dom.Event) => + loading.onFailure { case err => Vizier.error(err.getMessage) } + val root = div(`class` := "script_editor", + editor.map { + _.map { _.root } + .getOrElse { Spinner(50) } + }.reactive + ).render + + document.body.appendChild(root) + OnMount.trigger(document.body) + }) + } +} \ No newline at end of file diff --git a/vizier/ui/src/info/vizierdb/ui/roots/Settings.scala b/vizier/ui/src/info/vizierdb/ui/roots/Settings.scala new file mode 100644 index 00000000..4b32cca1 --- /dev/null +++ b/vizier/ui/src/info/vizierdb/ui/roots/Settings.scala @@ -0,0 +1,36 @@ +/* -- copyright-header:v2 -- + * Copyright (C) 2017-2021 University at Buffalo, + * New York University, + * Illinois Institute of Technology. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * -- copyright-header:end -- */ +package info.vizierdb.ui.roots + +import info.vizierdb.ui.components.settings.SettingsView +import org.scalajs.dom +import org.scalajs.dom.document +import rx._ +import info.vizierdb.ui.rxExtras.OnMount +import scalatags.JsDom.all._ + +object Settings +{ + def apply(arguments: Map[String, String])(implicit owner: Ctx.Owner): Unit = + { + val settings = new SettingsView(arguments.get("tab")) + document.addEventListener("DOMContentLoaded", { (e: dom.Event) => + document.body.appendChild(settings.root) + OnMount.trigger(document.body) + }) + } + + +} \ No newline at end of file diff --git a/vizier/ui/src/info/vizierdb/ui/roots/Spreadsheet.scala b/vizier/ui/src/info/vizierdb/ui/roots/Spreadsheet.scala new file mode 100644 index 00000000..6b8ae664 --- /dev/null +++ b/vizier/ui/src/info/vizierdb/ui/roots/Spreadsheet.scala @@ -0,0 +1,66 @@ +/* -- copyright-header:v2 -- + * Copyright (C) 2017-2021 University at Buffalo, + * New York University, + * Illinois Institute of Technology. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * -- copyright-header:end -- */ +package info.vizierdb.ui.roots + +import org.scalajs.dom +import org.scalajs.dom.document +import info.vizierdb.ui.rxExtras.OnMount +import rx._ +import scalatags.JsDom.all._ +import info.vizierdb.ui.network.SpreadsheetClient +import info.vizierdb.api.spreadsheet.OpenDataset +import info.vizierdb.ui.components.dataset.TableView +import info.vizierdb.ui.Vizier + +object Spreadsheet +{ + def apply(arguments: Map[String, String])(implicit owner: Ctx.Owner): Unit = + { + val projectId = arguments.get("project").get.toLong + val datasetId = arguments.get("dataset").get.toLong + val branchId = arguments.get("branch").map { _.toLong } + + val cli = new SpreadsheetClient(OpenDataset(projectId, datasetId), Vizier.api) + cli.connected.trigger { connected => + if(connected){ cli.subscribe(0) } + } + val table = new TableView(cli, + rowHeight = 30, + maxHeight = 400, + headerHeight = 40 + ) + cli.table = Some(table) + + val body = div( + `class` := "standalone_spreadsheet", + div( + `class` := "header", + button( + onclick := { _:(dom.Event) => + cli.save() + }, + "Save" + ) + ), + table.root + ).render + + document.addEventListener("DOMContentLoaded", { (e: dom.Event) => + document.body.appendChild(body) + OnMount.trigger(document.body) + }) + } + +} \ No newline at end of file diff --git a/vizier/ui/src/info/vizierdb/ui/roots/StaticWorkflow.scala b/vizier/ui/src/info/vizierdb/ui/roots/StaticWorkflow.scala new file mode 100644 index 00000000..fd18e21f --- /dev/null +++ b/vizier/ui/src/info/vizierdb/ui/roots/StaticWorkflow.scala @@ -0,0 +1,75 @@ +/* -- copyright-header:v2 -- + * Copyright (C) 2017-2021 University at Buffalo, + * New York University, + * Illinois Institute of Technology. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * -- copyright-header:end -- */ +package info.vizierdb.ui.roots + +import rx._ +import scala.concurrent.Future +import scala.concurrent.ExecutionContext.Implicits.global +import info.vizierdb.ui.Vizier +import org.scalajs.dom.document +import org.scalajs.dom +import scalatags.JsDom.all._ +import info.vizierdb.ui.widgets.Spinner +import info.vizierdb.ui.rxExtras.implicits._ +import info.vizierdb.ui.rxExtras.OnMount +import scala.util.{ Try, Success, Failure } +import info.vizierdb.ui.components + +object StaticWorkflow +{ + def apply(arguments: Map[String, String])(implicit owner: Ctx.Owner): Unit = + { + val projectId = arguments.get("project").get.toLong + val branchIdMaybe = arguments.get("branch").map { _.toLong } + val workflowIdMaybe = arguments.get("workflow").map { _.toLong } + + val branchId = + branchIdMaybe.map { Future(_) } + .getOrElse { + Vizier.api.projectGet(projectId) + .map { _.defaultBranch } + } + + val workflowId = + workflowIdMaybe.map { Future(_) } + .getOrElse { + branchId.flatMap { Vizier.api.branchGet(projectId, _) } + .map { _.head.id } + } + + val workflow = + branchId.flatMap { b => + workflowId.flatMap { w => + println(s"Getting workflow: ($projectId, $b, $w)") + Vizier.api.workflowGet(projectId, b, w) + } + } + + document.addEventListener("DOMContentLoaded", { (e: dom.Event) => + val root = Var[Frag](div(`class` := "display_workflow", Spinner(50))) + + document.body.appendChild(root.reactive) + OnMount.trigger(document.body) + + workflow.onComplete { + case Success(w) => + println(s"Got workflow: $w") + root() = new components.StaticWorkflow(projectId, w).root + case Failure(err) => Vizier.error(err.getMessage()) + } + }) + } + +} \ No newline at end of file diff --git a/vizier/ui/src/info/vizierdb/ui/rxExtras/RxBuffer.scala b/vizier/ui/src/info/vizierdb/ui/rxExtras/RxBuffer.scala index 917b7c2a..c7c30d4f 100644 --- a/vizier/ui/src/info/vizierdb/ui/rxExtras/RxBuffer.scala +++ b/vizier/ui/src/info/vizierdb/ui/rxExtras/RxBuffer.scala @@ -14,7 +14,7 @@ * -- copyright-header:end -- */ package info.vizierdb.ui.rxExtras -import rx.Var +import rx._ import scala.collection.mutable import info.vizierdb.util.Logging @@ -142,6 +142,31 @@ abstract class RxBufferBase[A,B] RxBuffer.logger.trace(s"Registered watcher on $this@$id (now ${watchers.size} watchers)") return handler } + + /** + * Obtain a variable reference to the sequence as a whole. + * + * This is not usually recommended, as it usually leads to O(N) code. + * + * The variable is instantiated lazily to avoid unnecessary triggers. + * + * The extra int field is necessary for rather dumb reasons: Buffer.toSeq will (sometimes) + * return an object that Rx thinks is the same value. I *think* this might be Rx checking + * the pointer id of the object, and Buffer implements a no-copy or a CoW toSeq operation. + * + * Either way, it means that if the Var includes only the Seq, then updates will not + * propagate. Adding an iteration id forces propagation. + */ + lazy val asVar: Rx[(Int, Seq[B])] = + { + val data = Var[(Int, Seq[B])]((0, elements.toSeq)) + deliverUpdatesTo(new RxBufferTrigger[B] { + def onBufferChange(): Unit = { + data() = (data.now._1 + 1, elements.toSeq) + } + }) + /* return */ data + } } trait RxBufferWatcher[A] diff --git a/vizier/ui/src/info/vizierdb/ui/rxExtras/implicits.scala b/vizier/ui/src/info/vizierdb/ui/rxExtras/implicits.scala index 75ad7785..5269c2b9 100644 --- a/vizier/ui/src/info/vizierdb/ui/rxExtras/implicits.scala +++ b/vizier/ui/src/info/vizierdb/ui/rxExtras/implicits.scala @@ -50,12 +50,26 @@ class RxTagWrapper[T <% Frag](r: Rx[T])(implicit ctx: Ctx.Owner) } } +class RxWrapper[A, B](r: Rx[(A, B)])(implicit ctx: Ctx.Owner) +{ + def unzip: (Rx[A], Rx[B]) = + { + (r.map { _._1 }, r.map { _._2 }) + } +} package object implicits { implicit def rxFrag[T <% Frag](r: Rx[T])(implicit ctx: Ctx.Owner): RxTagWrapper[T] = new RxTagWrapper[T](r) - implicit def renderFrag[T <% Frag](f: T): dom.Node = - f.render + implicit def wrapRx[A, B](r: Rx[(A, B)])(implicit ctx: Ctx.Owner): RxWrapper[A, B] = + new RxWrapper[A, B](r) + + // If you feel the urge to add an implicit .render for ScalaTags, + // see commit note: d9b8c0ce4d2eef1617bfef7c381c8edd1ed90e4e + // TL;DR: implicit .render leads to unexpected semantics. We prefer explicit + } + + diff --git a/vizier/ui/src/info/vizierdb/ui/widgets/BrowserLocation.scala b/vizier/ui/src/info/vizierdb/ui/widgets/BrowserLocation.scala new file mode 100644 index 00000000..67287737 --- /dev/null +++ b/vizier/ui/src/info/vizierdb/ui/widgets/BrowserLocation.scala @@ -0,0 +1,38 @@ +/* -- copyright-header:v2 -- + * Copyright (C) 2017-2021 University at Buffalo, + * New York University, + * Illinois Institute of Technology. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * -- copyright-header:end -- */ +package info.vizierdb.ui.widgets + +import org.scalajs.dom +import scalajs.js.URIUtils.encodeURIComponent + +object BrowserLocation +{ + def queryString(terms: Seq[(String, String)]): String = + if(terms.isEmpty){ "" } + else { + "?" + terms.map { case (a, b) => + encodeURIComponent(a) + "=" + encodeURIComponent(b) + }.mkString("&") + } + + def replaceQuery(terms: (String, String)*): Unit = + { + if(terms.isEmpty){ + dom.window.history.replaceState(null, "", "?") + } else { + dom.window.history.replaceState(null, "", queryString(terms)) + } + } +} \ No newline at end of file diff --git a/vizier/ui/test/src/info/vizierdb/test/TestFixtures.scala b/vizier/ui/test/src/info/vizierdb/test/TestFixtures.scala index e9e210e7..b33de52f 100644 --- a/vizier/ui/test/src/info/vizierdb/test/TestFixtures.scala +++ b/vizier/ui/test/src/info/vizierdb/test/TestFixtures.scala @@ -121,10 +121,10 @@ object TestFixtures Seq( BuildA.Package("debug")( BuildA.Command("add")( - SimpleParameterDescription("output", "Output", "string", false, false, None, _, None) + SimpleParameterDescription("output", "Output", "string", false, false, None, _, None, None) ), BuildA.Command("drop")( - SimpleParameterDescription("dataset", "Dataset", "string", false, false, None, _, None) + SimpleParameterDescription("dataset", "Dataset", "string", false, false, None, _, None, None) ) ) ) diff --git a/vizier/ui/test/src/info/vizierdb/ui/TentativeEditsSpec.scala b/vizier/ui/test/src/info/vizierdb/ui/TentativeEditsSpec.scala new file mode 100644 index 00000000..db60e709 --- /dev/null +++ b/vizier/ui/test/src/info/vizierdb/ui/TentativeEditsSpec.scala @@ -0,0 +1,74 @@ +package info.vizierdb.ui + +import rx._ +import utest._ +import info.vizierdb.ui.components.{ TentativeEdits, Module } +import info.vizierdb.ui.rxExtras.RxBuffer +import info.vizierdb.test._ +import info.vizierdb.types._ +import info.vizierdb.ui.network.ModuleSubscription +import info.vizierdb.ui.components.StaticWorkflow + + +object TentativeEditsSpec extends TestSuite with TestFixtures +{ + val base = RxBuffer[Module]() + val edits = new TentativeEdits(base, null, null) + + + + val tests = Tests + { + test("Inserts into buffer go where they're needed") { + implicit val ctx = Ctx.Owner.safe() + + base.append( + new Module(new ModuleSubscription( + BuildA.Module( + packageId = "debug", + commandId = "add", + id = 1, + artifacts = Seq( + "foo" -> ArtifactType.DATASET + ) + )(), + Right(null), + Var(0) + )) + ) + base.append( + new Module(new ModuleSubscription( + BuildA.Module( + packageId = "debug", + commandId = "add", + id = 2, + artifacts = Seq( + "foo" -> ArtifactType.DATASET + ) + )(), + Right(null), + Var(1) + )) + ) + base.insert( + 1, + new Module(new ModuleSubscription( + BuildA.Module( + packageId = "debug", + commandId = "add", + id = 3, + artifacts = Seq( + "foo" -> ArtifactType.DATASET + ) + )(), + Right(null), + Var(0) + )) + ) + assert(base.size == 3) + assert(edits.size == 3) + val ids = edits.iterator.map { case m:Module => m.id }.toIndexedSeq + assert(ids == Seq(1, 3, 2)) + } + } +} \ No newline at end of file